Adapt partitons

pull/9823/head
Oren Cohen 2019-02-22 20:31:48 +02:00 committed by Oren Cohen
parent aad114aa55
commit dfbc7b6b7a
9 changed files with 50 additions and 90 deletions

View File

@ -24,10 +24,10 @@ uint8_t data[MSG_BUF_SIZE] = {0};
void server_main(void *ptr) void server_main(void *ptr)
{ {
uint32_t signals = 0; psa_signal_t signals = 0;
psa_msg_t msg = {0}; psa_msg_t msg = {0};
while (1) { while (1) {
signals = psa_wait_any(PSA_BLOCK); signals = psa_wait(CLIENT_TESTS_PART1_WAIT_ANY_SID_MSK, PSA_BLOCK);
if (signals & PART1_ROT_SRV1_MSK) { if (signals & PART1_ROT_SRV1_MSK) {
psa_get(PART1_ROT_SRV1_MSK, &msg); psa_get(PART1_ROT_SRV1_MSK, &msg);
switch (msg.type) { switch (msg.type) {

View File

@ -36,7 +36,7 @@ static void init_num_of_tests()
void part1_main(void *ptr) void part1_main(void *ptr)
{ {
uint32_t signals = 0; psa_signal_t signals = 0;
psa_status_t test_status = PSA_SUCCESS; // status of the api calls during the test psa_status_t test_status = PSA_SUCCESS; // status of the api calls during the test
psa_status_t test_result = PSA_SUCCESS; // result of the critical section of the test psa_status_t test_result = PSA_SUCCESS; // result of the critical section of the test
test_action_t action; test_action_t action;
@ -44,9 +44,9 @@ void part1_main(void *ptr)
init_num_of_tests(); init_num_of_tests();
while (1) { while (1) {
signals = psa_wait_any(PSA_BLOCK); signals = psa_wait(CONTROL_MSK, PSA_BLOCK);
if (0 == (signals & CONTROL_MSK)) { if (0 == (signals & CONTROL_MSK)) {
SPM_PANIC("returned from psa_wait_any without CONTROL_ROT_SRV bit on signals=(0x%08x)\n", signals); SPM_PANIC("returned from psa_wait without CONTROL_ROT_SRV bit on signals=(0x%08x)\n", signals);
} }
psa_get(CONTROL_MSK, &msg); psa_get(CONTROL_MSK, &msg);

View File

@ -25,14 +25,14 @@ static psa_msg_t msg = {0};
void part2_main(void *ptr) void part2_main(void *ptr)
{ {
uint32_t signals = 0; psa_signal_t signals = 0;
size_t len = 0; size_t len = 0;
char *str = NULL; char *str = NULL;
while (1) { while (1) {
signals = psa_wait_any(PSA_BLOCK); signals = psa_wait(SERVER_TEST_PART2_WAIT_ANY_SID_MSK, PSA_BLOCK);
if (0 == (signals & (ROT_SRV_REVERSE_MSK | ROT_SRV_DB_TST_MSK))) { if (0 == (signals & SERVER_TEST_PART2_WAIT_ANY_SID_MSK)) {
SPM_PANIC("returned from psa_wait_any without ROT_SRV_REVERSE_MSK or ROT_SRV_DB_TST_MSK bit on\n"); SPM_PANIC("returned from psa_wait without ROT_SRV_REVERSE_MSK or ROT_SRV_DB_TST_MSK bit on\n");
} }
if (signals & ROT_SRV_REVERSE_MSK) { if (signals & ROT_SRV_REVERSE_MSK) {
psa_get(ROT_SRV_REVERSE_MSK, &msg); psa_get(ROT_SRV_REVERSE_MSK, &msg);
@ -73,7 +73,7 @@ void part2_main(void *ptr)
psa_get(ROT_SRV_DB_TST_MSK, &msg); psa_get(ROT_SRV_DB_TST_MSK, &msg);
switch (msg.type) { switch (msg.type) {
case PSA_IPC_CALL: { case PSA_IPC_CALL: {
int32_t caller_part_id = psa_identity(msg.handle); int32_t caller_part_id = msg.client_id;
// Doorbell contract is valid only between secure partitions // Doorbell contract is valid only between secure partitions
if (PSA_NSPE_IDENTIFIER == caller_part_id) { if (PSA_NSPE_IDENTIFIER == caller_part_id) {
SPM_PANIC("Caller partition is non secure\n"); SPM_PANIC("Caller partition is non secure\n");

View File

@ -31,7 +31,7 @@ static psa_status_t process_connect_request(void)
{ {
psa_status_t res = PSA_SUCCESS; psa_status_t res = PSA_SUCCESS;
psa_msg_t msg = {0}; psa_msg_t msg = {0};
uint32_t signals = psa_wait_any(PSA_BLOCK); psa_signal_t signals = psa_wait(TEST_MSK, PSA_BLOCK);
if ((signals & TEST_MSK) == 0) { if ((signals & TEST_MSK) == 0) {
res = PSA_TEST_ERROR; res = PSA_TEST_ERROR;
} }
@ -54,7 +54,7 @@ static psa_status_t process_disconnect_request(void)
{ {
psa_status_t res = PSA_SUCCESS; psa_status_t res = PSA_SUCCESS;
psa_msg_t msg = {0}; psa_msg_t msg = {0};
uint32_t signals = psa_wait_any(PSA_BLOCK); psa_signal_t signals = psa_wait(TEST_MSK, PSA_BLOCK);
if ((signals & TEST_MSK) == 0) { if ((signals & TEST_MSK) == 0) {
res = PSA_TEST_ERROR; res = PSA_TEST_ERROR;
} }
@ -72,8 +72,8 @@ static psa_status_t process_disconnect_request(void)
PSA_TEST_SERVER(wait_timeout) PSA_TEST_SERVER(wait_timeout)
{ {
psa_status_t test_status = PSA_SUCCESS; psa_status_t test_status = PSA_SUCCESS;
uint32_t signals = psa_wait_any(7); psa_signal_t signals = psa_wait(TEST_MSK, PSA_POLL);
*status_ptr = ((signals & TEST_MSK) == 0) ? PSA_SUCCESS : PSA_TEST_ERROR;; *status_ptr = ((signals & TEST_MSK) == 0) ? PSA_SUCCESS : PSA_TEST_ERROR;
test_status = process_connect_request(); test_status = process_connect_request();
if (test_status != PSA_SUCCESS) { if (test_status != PSA_SUCCESS) {
@ -94,7 +94,7 @@ PSA_TEST_SERVER(identity_during_connect)
psa_msg_t msg = {0}; psa_msg_t msg = {0};
int32_t identity = 0; int32_t identity = 0;
uint32_t signals = psa_wait_any(PSA_BLOCK); psa_signal_t signals = psa_wait(TEST_MSK, PSA_BLOCK);
if ((signals & TEST_MSK) == 0) { if ((signals & TEST_MSK) == 0) {
test_status = PSA_TEST_ERROR; test_status = PSA_TEST_ERROR;
} }
@ -104,7 +104,7 @@ PSA_TEST_SERVER(identity_during_connect)
test_status = ((test_status != PSA_SUCCESS) ? test_status : PSA_TEST_ERROR); test_status = ((test_status != PSA_SUCCESS) ? test_status : PSA_TEST_ERROR);
} }
identity = psa_identity(msg.handle); identity = msg.client_id;
*status_ptr = (identity == -1) ? PSA_SUCCESS : PSA_TEST_ERROR; *status_ptr = (identity == -1) ? PSA_SUCCESS : PSA_TEST_ERROR;
psa_reply(msg.handle, PSA_SUCCESS); psa_reply(msg.handle, PSA_SUCCESS);
@ -121,14 +121,14 @@ PSA_TEST_SERVER(identity_during_call)
psa_status_t disconnect_status = PSA_SUCCESS; psa_status_t disconnect_status = PSA_SUCCESS;
psa_msg_t msg = {0}; psa_msg_t msg = {0};
int32_t identity = 0; int32_t identity = 0;
uint32_t signals = 0; psa_signal_t signals = 0;
test_status = process_connect_request(); test_status = process_connect_request();
if (test_status != PSA_SUCCESS) { if (test_status != PSA_SUCCESS) {
return test_status; return test_status;
} }
signals = psa_wait_any(PSA_BLOCK); signals = psa_wait(TEST_MSK, PSA_BLOCK);
if ((signals & TEST_MSK) == 0) { if ((signals & TEST_MSK) == 0) {
test_status = PSA_TEST_ERROR; test_status = PSA_TEST_ERROR;
} }
@ -138,7 +138,7 @@ PSA_TEST_SERVER(identity_during_call)
test_status = ((test_status != PSA_SUCCESS) ? test_status : PSA_TEST_ERROR); test_status = ((test_status != PSA_SUCCESS) ? test_status : PSA_TEST_ERROR);
} }
identity = psa_identity(msg.handle); identity = msg.client_id;
*status_ptr = (identity == -1) ? PSA_SUCCESS : PSA_TEST_ERROR; *status_ptr = (identity == -1) ? PSA_SUCCESS : PSA_TEST_ERROR;
psa_reply(msg.handle, PSA_SUCCESS); psa_reply(msg.handle, PSA_SUCCESS);
@ -154,7 +154,7 @@ PSA_TEST_SERVER(msg_size_assertion)
psa_status_t test_status = PSA_SUCCESS; psa_status_t test_status = PSA_SUCCESS;
psa_status_t disconnect_status = PSA_SUCCESS; psa_status_t disconnect_status = PSA_SUCCESS;
psa_msg_t msg = {0}; psa_msg_t msg = {0};
uint32_t signals = 0; psa_signal_t signals = 0;
size_t read_size = 0; size_t read_size = 0;
char *buff = malloc(sizeof(char) * 11); char *buff = malloc(sizeof(char) * 11);
@ -169,7 +169,7 @@ PSA_TEST_SERVER(msg_size_assertion)
return test_status; return test_status;
} }
signals = psa_wait_any(PSA_BLOCK); signals = psa_wait(TEST_MSK, PSA_BLOCK);
if ((signals & TEST_MSK) == 0) { if ((signals & TEST_MSK) == 0) {
test_status = PSA_TEST_ERROR; test_status = PSA_TEST_ERROR;
} }
@ -201,7 +201,7 @@ PSA_TEST_SERVER(reject_connection)
{ {
psa_status_t res = PSA_SUCCESS; psa_status_t res = PSA_SUCCESS;
psa_msg_t msg = {0}; psa_msg_t msg = {0};
uint32_t signals = psa_wait_any(PSA_BLOCK); psa_signal_t signals = psa_wait(TEST_MSK, PSA_BLOCK);
if ((signals & TEST_MSK) == 0) { if ((signals & TEST_MSK) == 0) {
res = PSA_TEST_ERROR; res = PSA_TEST_ERROR;
} }
@ -218,7 +218,7 @@ PSA_TEST_SERVER(reject_connection)
PSA_TEST_SERVER(read_at_outofboud_offset) PSA_TEST_SERVER(read_at_outofboud_offset)
{ {
uint32_t signals = 0; psa_signal_t signals = 0;
psa_msg_t msg = {0}; psa_msg_t msg = {0};
psa_status_t test_status = PSA_SUCCESS; psa_status_t test_status = PSA_SUCCESS;
psa_status_t disconnect_status = PSA_SUCCESS; psa_status_t disconnect_status = PSA_SUCCESS;
@ -229,7 +229,7 @@ PSA_TEST_SERVER(read_at_outofboud_offset)
return test_status; return test_status;
} }
signals = psa_wait_any(PSA_BLOCK); signals = psa_wait(TEST_MSK, PSA_BLOCK);
if ((signals & TEST_MSK) == 0) { if ((signals & TEST_MSK) == 0) {
test_status = PSA_TEST_ERROR; test_status = PSA_TEST_ERROR;
} }
@ -258,7 +258,7 @@ PSA_TEST_SERVER(msg_read_truncation)
psa_status_t test_status = PSA_SUCCESS; psa_status_t test_status = PSA_SUCCESS;
psa_status_t disconnect_status = PSA_SUCCESS; psa_status_t disconnect_status = PSA_SUCCESS;
psa_msg_t msg = {0}; psa_msg_t msg = {0};
uint32_t signals = 0; psa_signal_t signals = 0;
size_t read_size = 0; size_t read_size = 0;
char *buff = malloc(sizeof(char) * 11); char *buff = malloc(sizeof(char) * 11);
if (NULL == buff) { if (NULL == buff) {
@ -272,7 +272,7 @@ PSA_TEST_SERVER(msg_read_truncation)
return test_status; return test_status;
} }
signals = psa_wait_any(PSA_BLOCK); signals = psa_wait(TEST_MSK, PSA_BLOCK);
if ((signals & TEST_MSK) == 0) { if ((signals & TEST_MSK) == 0) {
test_status = PSA_TEST_ERROR; test_status = PSA_TEST_ERROR;
} }
@ -304,7 +304,7 @@ PSA_TEST_SERVER(skip_zero)
psa_status_t test_status = PSA_SUCCESS; psa_status_t test_status = PSA_SUCCESS;
psa_status_t disconnect_status = PSA_SUCCESS; psa_status_t disconnect_status = PSA_SUCCESS;
psa_msg_t msg = {0}; psa_msg_t msg = {0};
uint32_t signals = 0; psa_signal_t signals = 0;
size_t read_size = 0; size_t read_size = 0;
size_t skip_size = 0; size_t skip_size = 0;
char *buff = malloc(sizeof(char) * 11); char *buff = malloc(sizeof(char) * 11);
@ -318,7 +318,7 @@ PSA_TEST_SERVER(skip_zero)
return test_status; return test_status;
} }
signals = psa_wait_any(PSA_BLOCK); signals = psa_wait(TEST_MSK, PSA_BLOCK);
if ((signals & TEST_MSK) == 0) { if ((signals & TEST_MSK) == 0) {
test_status = PSA_TEST_ERROR; test_status = PSA_TEST_ERROR;
} }
@ -350,7 +350,7 @@ PSA_TEST_SERVER(skip_some)
psa_status_t test_status = PSA_SUCCESS; psa_status_t test_status = PSA_SUCCESS;
psa_status_t disconnect_status = PSA_SUCCESS; psa_status_t disconnect_status = PSA_SUCCESS;
psa_msg_t msg = {0}; psa_msg_t msg = {0};
uint32_t signals = 0; psa_signal_t signals = 0;
size_t read_size1 = 0; size_t read_size1 = 0;
size_t read_size2 = 0; size_t read_size2 = 0;
size_t skip_size = 0; size_t skip_size = 0;
@ -365,7 +365,7 @@ PSA_TEST_SERVER(skip_some)
return test_status; return test_status;
} }
signals = psa_wait_any(PSA_BLOCK); signals = psa_wait(TEST_MSK, PSA_BLOCK);
if ((signals & TEST_MSK) == 0) { if ((signals & TEST_MSK) == 0) {
test_status = PSA_TEST_ERROR; test_status = PSA_TEST_ERROR;
} }
@ -399,7 +399,7 @@ PSA_TEST_SERVER(skip_more_than_left)
psa_status_t test_status = PSA_SUCCESS; psa_status_t test_status = PSA_SUCCESS;
psa_status_t disconnect_status = PSA_SUCCESS; psa_status_t disconnect_status = PSA_SUCCESS;
psa_msg_t msg = {0}; psa_msg_t msg = {0};
uint32_t signals = 0; psa_signal_t signals = 0;
size_t read_size1 = 0; size_t read_size1 = 0;
size_t read_size2 = 0; size_t read_size2 = 0;
size_t skip_size = 0; size_t skip_size = 0;
@ -414,7 +414,7 @@ PSA_TEST_SERVER(skip_more_than_left)
return test_status; return test_status;
} }
signals = psa_wait_any(PSA_BLOCK); signals = psa_wait(TEST_MSK, PSA_BLOCK);
if ((signals & TEST_MSK) == 0) { if ((signals & TEST_MSK) == 0) {
test_status = PSA_TEST_ERROR; test_status = PSA_TEST_ERROR;
} }
@ -445,7 +445,7 @@ PSA_TEST_SERVER(skip_more_than_left)
PSA_TEST_SERVER(rhandle_factorial) PSA_TEST_SERVER(rhandle_factorial)
{ {
uint32_t signals = 0; psa_signal_t signals = 0;
psa_msg_t msg = {0}; psa_msg_t msg = {0};
factorial_data_t *num = NULL; factorial_data_t *num = NULL;
factorial_data_t *asserted_ptr = NULL; factorial_data_t *asserted_ptr = NULL;
@ -454,9 +454,9 @@ PSA_TEST_SERVER(rhandle_factorial)
uint32_t disconnect_count = 0; uint32_t disconnect_count = 0;
while (1) { while (1) {
signals = psa_wait_any(PSA_BLOCK); signals = psa_wait(TEST_MSK, PSA_BLOCK);
if (0 == (signals & TEST_MSK)) { if (0 == (signals & TEST_MSK)) {
SPM_PANIC("returned from psa_wait_any without ROT_SRV_FACTORIAL bit on\n"); SPM_PANIC("returned from psa_wait without TEST_MSK bit on\n");
} }
psa_get(TEST_MSK, &msg); psa_get(TEST_MSK, &msg);
@ -535,7 +535,7 @@ PSA_TEST_SERVER(rhandle_factorial)
PSA_TEST_SERVER(cross_partition_call) PSA_TEST_SERVER(cross_partition_call)
{ {
uint32_t signals = 0; psa_signal_t signals = 0;
psa_msg_t msg = {0}; psa_msg_t msg = {0};
psa_status_t test_status = PSA_SUCCESS; psa_status_t test_status = PSA_SUCCESS;
psa_status_t disconnect_status = PSA_SUCCESS; psa_status_t disconnect_status = PSA_SUCCESS;
@ -556,7 +556,7 @@ PSA_TEST_SERVER(cross_partition_call)
return test_status; return test_status;
} }
signals = psa_wait_any(PSA_BLOCK); signals = psa_wait(TEST_MSK, PSA_BLOCK);
if ((signals & TEST_MSK) == 0) { if ((signals & TEST_MSK) == 0) {
test_status = PSA_TEST_ERROR; test_status = PSA_TEST_ERROR;
} }
@ -606,7 +606,7 @@ PSA_TEST_SERVER(cross_partition_call)
// Test a common DOORBELL scenario // Test a common DOORBELL scenario
PSA_TEST_SERVER(doorbell_test) PSA_TEST_SERVER(doorbell_test)
{ {
uint32_t signals = 0; psa_signal_t signals = 0;
psa_msg_t msg = {0}; psa_msg_t msg = {0};
psa_status_t test_status = PSA_SUCCESS; psa_status_t test_status = PSA_SUCCESS;
psa_status_t disconnect_status = PSA_SUCCESS; psa_status_t disconnect_status = PSA_SUCCESS;
@ -618,7 +618,7 @@ PSA_TEST_SERVER(doorbell_test)
return test_status; return test_status;
} }
signals = psa_wait_any(PSA_BLOCK); signals = psa_wait(TEST_MSK, PSA_BLOCK);
if ((signals & TEST_MSK) == 0) { if ((signals & TEST_MSK) == 0) {
test_status = PSA_TEST_ERROR; test_status = PSA_TEST_ERROR;
} }
@ -640,7 +640,7 @@ PSA_TEST_SERVER(doorbell_test)
if (partition_call_status == PSA_SUCCESS) { if (partition_call_status == PSA_SUCCESS) {
// Wait for doorball notification - Only after that call psa_reply() for the client called you // Wait for doorball notification - Only after that call psa_reply() for the client called you
signals = psa_wait_interrupt(PSA_DOORBELL, PSA_BLOCK); signals = psa_wait(PSA_DOORBELL, PSA_BLOCK);
if ((signals & PSA_DOORBELL) == 0) { if ((signals & PSA_DOORBELL) == 0) {
partition_call_status = PSA_TEST_ERROR; partition_call_status = PSA_TEST_ERROR;
} }

View File

@ -45,7 +45,7 @@ void part1_main(void *ptr)
while (1) { while (1) {
signals = psa_wait_any(PSA_BLOCK); signals = psa_wait(ROT_SRV1_MSK, PSA_BLOCK);
if ((signals & ROT_SRV1_MSK) != ROT_SRV1_MSK) { if ((signals & ROT_SRV1_MSK) != ROT_SRV1_MSK) {
SPM_PANIC("Received unknown signal (0x%08x)\n", signals); SPM_PANIC("Received unknown signal (0x%08x)\n", signals);
} }
@ -54,7 +54,7 @@ void part1_main(void *ptr)
psa_get(ROT_SRV1_MSK, &msg); psa_get(ROT_SRV1_MSK, &msg);
if (msg.handle != PSA_NULL_HANDLE) { if (msg.handle != PSA_NULL_HANDLE) {
client_id = psa_identity(msg.handle); client_id = msg.client_id;
if (client_id != PSA_NSPE_IDENTIFIER) { if (client_id != PSA_NSPE_IDENTIFIER) {
SPM_PANIC("Received message from unexpected source (0x%08x)\n", client_id); SPM_PANIC("Received message from unexpected source (0x%08x)\n", client_id);
} }

View File

@ -246,11 +246,11 @@ void psa_get(psa_signal_t signum, psa_msg_t *msg)
// signum must be ONLY ONE of the bits of curr_partition->flags_rot_srv // signum must be ONLY ONE of the bits of curr_partition->flags_rot_srv
bool is_one_bit = ((signum != 0) && !(signum & (signum - 1))); bool is_one_bit = ((signum != 0) && !(signum & (signum - 1)));
if (!is_one_bit || !(signum & curr_partition->flags_rot_srv)) { if (!is_one_bit || !(signum & curr_partition->flags)) {
SPM_PANIC( SPM_PANIC(
"signum 0x%x must have only 1 bit ON and must be a subset of 0x%x!\n", "signum 0x%x must have only 1 bit ON and must be a subset of 0x%x!\n",
signum, signum,
curr_partition->flags_rot_srv curr_partition->flags
); );
} }
@ -540,7 +540,7 @@ void psa_eoi(uint32_t irq_signal)
SPM_PANIC("Try to clear an interrupt flag without declaring IRQ"); SPM_PANIC("Try to clear an interrupt flag without declaring IRQ");
} }
if (0 == (curr_partition->flags_interrupts & irq_signal)) { if (0 == (curr_partition->flags & irq_signal)) {
SPM_PANIC("Signal %d not in irq range\n", irq_signal); SPM_PANIC("Signal %d not in irq range\n", irq_signal);
} }

View File

@ -515,12 +515,7 @@ static void psa_hash_operation(void)
case PSA_HASH_CLONE_BEGIN: { case PSA_HASH_CLONE_BEGIN: {
size_t index = 0; size_t index = 0;
#if defined(TARGET_MBED_SPM)
status = reserve_hash_clone(psa_identity(msg.handle), msg.rhandle, &index);
#else
status = reserve_hash_clone(msg.client_id, msg.rhandle, &index); status = reserve_hash_clone(msg.client_id, msg.rhandle, &index);
#endif
if (status == PSA_SUCCESS) { if (status == PSA_SUCCESS) {
psa_write(msg.handle, 0, &index, sizeof(index)); psa_write(msg.handle, 0, &index, sizeof(index));
} }
@ -536,11 +531,7 @@ static void psa_hash_operation(void)
SPM_PANIC("SPM read length mismatch"); SPM_PANIC("SPM read length mismatch");
} }
#if defined(TARGET_MBED_SPM)
status = get_hash_clone(index, psa_identity(msg.handle), &hash_clone);
#else
status = get_hash_clone(index, msg.client_id, &hash_clone); status = get_hash_clone(index, msg.client_id, &hash_clone);
#endif
if (status == PSA_SUCCESS) { if (status == PSA_SUCCESS) {
status = psa_hash_clone(hash_clone->source_operation, msg.rhandle); status = psa_hash_clone(hash_clone->source_operation, msg.rhandle);
release_hash_clone(hash_clone); release_hash_clone(hash_clone);
@ -1695,12 +1686,8 @@ void psa_crypto_generator_operations(void)
void crypto_main(void *ptr) void crypto_main(void *ptr)
{ {
while (1) { while (1) {
uint32_t signals = 0; psa_signal_t signals = 0;
#if defined(TARGET_MBED_SPM)
signals = psa_wait_any(PSA_BLOCK);
#else
signals = psa_wait(CRYPTO_SRV_WAIT_ANY_SID_MSK, PSA_BLOCK); signals = psa_wait(CRYPTO_SRV_WAIT_ANY_SID_MSK, PSA_BLOCK);
#endif
if (signals & PSA_CRYPTO_INIT) { if (signals & PSA_CRYPTO_INIT) {
psa_crypto_init_operation(); psa_crypto_init_operation();
} }

View File

@ -87,15 +87,10 @@ static void message_handler(psa_msg_t *msg, SignalHandler handler)
void platform_partition_entry(void *ptr) void platform_partition_entry(void *ptr)
{ {
uint32_t signals = 0; psa_signal_t signals = 0;
psa_msg_t msg = {0}; psa_msg_t msg = {0};
while (1) { while (1) {
#if defined(TARGET_MBED_SPM)
signals = psa_wait_any(PSA_BLOCK);
#else
signals = psa_wait(PLATFORM_WAIT_ANY_SID_MSK, PSA_BLOCK); signals = psa_wait(PLATFORM_WAIT_ANY_SID_MSK, PSA_BLOCK);
#endif
if ((signals & PSA_PLATFORM_LC_GET_MSK) != 0) { if ((signals & PSA_PLATFORM_LC_GET_MSK) != 0) {
psa_get(PSA_PLATFORM_LC_GET_MSK, &msg); psa_get(PSA_PLATFORM_LC_GET_MSK, &msg);
message_handler(&msg, lifecycle_get); message_handler(&msg, lifecycle_get);

View File

@ -70,11 +70,8 @@ static psa_status_t storage_set(psa_msg_t *msg)
free(data); free(data);
return PSA_ERROR_STORAGE_FAILURE; return PSA_ERROR_STORAGE_FAILURE;
} }
#if defined(TARGET_MBED_SPM)
psa_status_t status = psa_its_set_impl(psa_identity(msg->handle), key, alloc_size, data, flags);
#else
psa_status_t status = psa_its_set_impl(msg->client_id, key, alloc_size, data, flags); psa_status_t status = psa_its_set_impl(msg->client_id, key, alloc_size, data, flags);
#endif
memset(data, 0, alloc_size); memset(data, 0, alloc_size);
free(data); free(data);
return status; return status;
@ -102,12 +99,7 @@ static psa_status_t storage_get(psa_msg_t *msg)
return PSA_ERROR_STORAGE_FAILURE; return PSA_ERROR_STORAGE_FAILURE;
} }
#if defined(TARGET_MBED_SPM)
psa_status_t status = psa_its_get_impl(psa_identity(msg->handle), key, offset, msg->out_size[0], data);
#else
psa_status_t status = psa_its_get_impl(msg->client_id, key, offset, msg->out_size[0], data); psa_status_t status = psa_its_get_impl(msg->client_id, key, offset, msg->out_size[0], data);
#endif
if (status == PSA_SUCCESS) { if (status == PSA_SUCCESS) {
psa_write(msg->handle, 0, data, msg->out_size[0]); psa_write(msg->handle, 0, data, msg->out_size[0]);
} }
@ -130,12 +122,7 @@ static psa_status_t storage_info(psa_msg_t *msg)
return PSA_DROP_CONNECTION; return PSA_DROP_CONNECTION;
} }
#if defined(TARGET_MBED_SPM)
psa_status_t status = psa_its_get_info_impl(psa_identity(msg->handle), key, &info);
#else
psa_status_t status = psa_its_get_info_impl(msg->client_id, key, &info); psa_status_t status = psa_its_get_info_impl(msg->client_id, key, &info);
#endif
if (status == PSA_SUCCESS) { if (status == PSA_SUCCESS) {
psa_write(msg->handle, 0, &info, msg->out_size[0]); psa_write(msg->handle, 0, &info, msg->out_size[0]);
} }
@ -155,11 +142,7 @@ static psa_status_t storage_remove(psa_msg_t *msg)
return PSA_DROP_CONNECTION; return PSA_DROP_CONNECTION;
} }
#if defined(TARGET_MBED_SPM)
return psa_its_remove_impl(psa_identity(msg->handle), key);
#else
return psa_its_remove_impl(msg->client_id, key); return psa_its_remove_impl(msg->client_id, key);
#endif
} }
static psa_status_t storage_reset(psa_msg_t *msg) static psa_status_t storage_reset(psa_msg_t *msg)
{ {
@ -191,18 +174,13 @@ static void message_handler(psa_msg_t *msg, SignalHandler handler)
void its_entry(void *ptr) void its_entry(void *ptr)
{ {
uint32_t signals = 0; psa_signal_t signals = 0;
psa_msg_t msg = {0}; psa_msg_t msg = {0};
while (1) { while (1) {
#if defined(TARGET_MBED_SPM)
signals = psa_wait_any(PSA_BLOCK);
#else
signals = psa_wait(ITS_WAIT_ANY_SID_MSK, PSA_BLOCK); signals = psa_wait(ITS_WAIT_ANY_SID_MSK, PSA_BLOCK);
#endif
// KVStore initiation: // KVStore initiation:
// - Must be done after the psa_wait_any() call since only now we know OS initialization is done // - Must be done after the psa_wait() call since only now we know OS initialization is done
// - Repeating calls has no effect // - Repeating calls has no effect
int kv_status = kv_init_storage_config(); int kv_status = kv_init_storage_config();
if (kv_status != MBED_SUCCESS) { if (kv_status != MBED_SUCCESS) {