17 #define IPC_SP_TEST_SUCCESS (1)
18 #define IPC_SP_TEST_FAILED (-1)
36 static void tfm_abort(
void)
42 #ifdef TFM_IPC_ISOLATION_2_TEST_READ_ONLY_MEM
43 static int ipc_isolation_2_psa_access_app_readonly_memory(
void)
48 struct psa_invec invecs[1] = {{&client_data_p,
sizeof(client_data_p)}};
65 static int ipc_isolation_2_psa_access_app_memory(
void)
70 char client_data =
'A';
71 char *client_data_p = &client_data;
72 struct psa_invec invecs[1] = {{&client_data_p,
sizeof(client_data_p)}};
83 if ((client_data ==
'B') && (status >= 0)) {
91 static int ipc_client_base_test(
void)
98 char str3[32], str4[32];
99 struct psa_invec invecs[2] = {{str1,
sizeof(str1)/
sizeof(
char)},
100 {str2,
sizeof(str2)/
sizeof(
char)}};
101 struct psa_outvec outvecs[2] = {{str3,
sizeof(str3)/
sizeof(
char)},
102 {str4,
sizeof(str4)/
sizeof(
char)}};
119 #ifdef TFM_IPC_ISOLATION_2_APP_ACCESS_PSA_MEM
120 static int ipc_client_app_access_psa_mem_test(
void)
124 uint8_t *outvec_data[1] = {0};
125 struct psa_outvec outvecs[1] = {{outvec_data,
sizeof(outvec_data[0])}};
140 uint8_t *psa_data_p = outvec_data[0];
152 #ifdef TFM_IPC_ISOLATION_2_MEM_CHECK
153 static int ipc_client_mem_check_test(
void)
157 uint8_t *outvec_data[1] = {0};
158 struct psa_outvec outvecs[1] = {{outvec_data,
sizeof(outvec_data[0])}};
159 struct psa_invec invecs[1] = {{NULL, 0}};
176 uint8_t *psa_data_p = outvec_data[0];
178 invecs[0].
base = psa_data_p;
179 invecs[0].
len =
sizeof(psa_data_p);
190 static void ipc_client_handle_ser_req(
psa_msg_t msg, uint32_t signals,
228 uint32_t signals = 0;
234 ipc_client_handle_ser_req(msg, IPC_CLIENT_TEST_BASIC_SIGNAL,
235 &ipc_client_base_test);
237 ipc_client_handle_ser_req(msg,
238 IPC_CLIENT_TEST_PSA_ACCESS_APP_MEM_SIGNAL,
239 &ipc_isolation_2_psa_access_app_memory);
240 #ifdef TFM_IPC_ISOLATION_2_TEST_READ_ONLY_MEM
243 ipc_client_handle_ser_req(msg,
244 IPC_CLIENT_TEST_PSA_ACCESS_APP_READ_ONLY_MEM_SIGNAL,
245 &ipc_isolation_2_psa_access_app_readonly_memory);
247 #ifdef TFM_IPC_ISOLATION_2_APP_ACCESS_PSA_MEM
249 ipc_client_handle_ser_req(msg,
250 IPC_CLIENT_TEST_APP_ACCESS_PSA_MEM_SIGNAL,
251 &ipc_client_app_access_psa_mem_test);
253 #ifdef TFM_IPC_ISOLATION_2_MEM_CHECK
255 ipc_client_handle_ser_req(msg, IPC_CLIENT_TEST_MEM_CHECK_SIGNAL,
256 &ipc_client_mem_check_test);
#define IPC_SERVICE_TEST_PSA_ACCESS_APP_READ_ONLY_MEM_SID
#define IPC_CLIENT_TEST_BASIC_SIGNAL
void psa_close(psa_handle_t handle)
Close a connection to an RoT Service.
#define IPC_SERVICE_TEST_APP_ACCESS_PSA_MEM_SID
#define IPC_SERVICE_TEST_PSA_ACCESS_APP_MEM_SID
char const client_data_read_only
#define IPC_CLIENT_TEST_PSA_ACCESS_APP_MEM_SIGNAL
psa_handle_t psa_connect(uint32_t sid, uint32_t version)
Connect to an RoT Service by its SID.
#define PSA_IPC_DISCONNECT
#define IPC_CLIENT_TEST_APP_ACCESS_PSA_MEM_SIGNAL
#define IPC_SERVICE_TEST_PSA_ACCESS_APP_READ_ONLY_MEM_VERSION
#define IPC_SERVICE_TEST_APP_ACCESS_PSA_MEM_VERSION
void psa_write(psa_handle_t msg_handle, uint32_t outvec_idx, const void *buffer, size_t num_bytes)
Write a message response to a client output vector.
#define IPC_CLIENT_TEST_PSA_ACCESS_APP_READ_ONLY_MEM_SIGNAL
#define IPC_SP_TEST_FAILED
void psa_reply(psa_handle_t msg_handle, psa_status_t status)
Complete handling of a specific message and unblock the client.
psa_signal_t psa_wait(psa_signal_t signal_mask, uint32_t timeout)
Return the Secure Partition interrupt signals that have been asserted from a subset of signals provid...
#define IPC_CLIENT_TEST_MEM_CHECK_SIGNAL
#define PSA_ERROR_CONNECTION_REFUSED
#define IPC_SERVICE_TEST_BASIC_SID
#define IPC_SERVICE_TEST_PSA_ACCESS_APP_MEM_VERSION
size_t out_size[PSA_MAX_IOVEC]
#define IPC_SP_TEST_SUCCESS
#define IPC_SERVICE_TEST_BASIC_VERSION
psa_status_t psa_get(psa_signal_t signal, psa_msg_t *msg)
Retrieve the message which corresponds to a given RoT Service signal and remove the message from the ...
int32_t psa_status_t
Function return status.
psa_status_t psa_call(psa_handle_t handle, int32_t type, const psa_invec *in_vec, size_t in_len, psa_outvec *out_vec, size_t out_len)
Call an RoT Service on an established connection.
void ipc_client_test_main(void)