17 #define IPC_SERVICE_BUFFER_LEN 32
30 static void tfm_abort(
void)
36 static void ipc_service_basic(
void)
78 static void ipc_service_psa_access_app_mem(
void)
102 rec_data = *(
char *)rec_buf;
105 if (rec_data !=
'A') {
111 *((
char *)rec_buf) =
'B';
116 assert((
service_in_use & IPC_SERVICE_TEST_PSA_ACCESS_APP_MEM_SIGNAL)
128 #ifdef TFM_IPC_ISOLATION_2_TEST_READ_ONLY_MEM
129 static void ipc_service_psa_access_app_readonly_mem(
void)
156 rec_data = *(
char *)rec_buf;
159 if (rec_data !=
'A') {
165 *((
char *)rec_buf) =
'B';
172 IPC_SERVICE_TEST_PSA_ACCESS_APP_READ_ONLY_MEM_SIGNAL) != 0);
174 ~IPC_SERVICE_TEST_PSA_ACCESS_APP_READ_ONLY_MEM_SIGNAL;
185 #if defined TFM_IPC_ISOLATION_2_MEM_CHECK \
186 || defined TFM_IPC_ISOLATION_2_APP_ACCESS_PSA_MEM
187 static void ipc_service_app_access_psa_mem(
void)
218 assert((
service_in_use & IPC_SERVICE_TEST_APP_ACCESS_PSA_MEM_SIGNAL)
231 static void ipc_service_programmer_error(
void)
252 & IPC_SERVICE_TEST_CLIENT_PROGRAMMER_ERROR_SIGNAL) != 0);
253 service_in_use &= ~IPC_SERVICE_TEST_CLIENT_PROGRAMMER_ERROR_SIGNAL;
266 uint32_t signals = 0;
270 if (signals & IPC_SERVICE_TEST_BASIC_SIGNAL) {
272 }
else if (signals & IPC_SERVICE_TEST_PSA_ACCESS_APP_MEM_SIGNAL) {
273 ipc_service_psa_access_app_mem();
274 #ifdef TFM_IPC_ISOLATION_2_TEST_READ_ONLY_MEM
276 & IPC_SERVICE_TEST_PSA_ACCESS_APP_READ_ONLY_MEM_SIGNAL) {
277 ipc_service_psa_access_app_readonly_mem();
279 #if defined TFM_IPC_ISOLATION_2_MEM_CHECK \
280 || defined TFM_IPC_ISOLATION_2_APP_ACCESS_PSA_MEM
281 }
else if (signals & IPC_SERVICE_TEST_APP_ACCESS_PSA_MEM_SIGNAL) {
282 ipc_service_app_access_psa_mem();
285 ipc_service_programmer_error();
#define IPC_SERVICE_TEST_PSA_ACCESS_APP_READ_ONLY_MEM_SIGNAL
#define IPC_SERVICE_TEST_APP_ACCESS_PSA_MEM_SIGNAL
size_t psa_read(psa_handle_t msg_handle, uint32_t invec_idx, void *buffer, size_t num_bytes)
Read a message parameter or part of a message parameter from a client input vector.
#define PSA_IPC_DISCONNECT
void ipc_service_test_main(void *param)
#define PSA_ERROR_PROGRAMMER_ERROR
uint8_t * ipc_service_data_p
size_t in_size[PSA_MAX_IOVEC]
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.
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 PSA_ERROR_CONNECTION_REFUSED
#define IPC_SERVICE_TEST_PSA_ACCESS_APP_MEM_SIGNAL
size_t out_size[PSA_MAX_IOVEC]
#define IPC_SERVICE_TEST_BASIC_SIGNAL
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.
#define IPC_SERVICE_TEST_CLIENT_PROGRAMMER_ERROR_SIGNAL
#define IPC_SERVICE_BUFFER_LEN