8 #ifndef __PSA_SERVICE_H__ 9 #define __PSA_SERVICE_H__ 20 #define PSA_POLL (0x00000000u) 21 #define PSA_BLOCK (0x80000000u) 24 #define PSA_WAIT_ANY (~0u) 27 #define PSA_DOORBELL (0x00000008u) 30 #define PSA_IPC_CONNECT (1) 31 #define PSA_IPC_CALL (2) 32 #define PSA_IPC_DISCONNECT (3) 35 #define PSA_MAX_IOVEC (4) 38 #define PSA_ERR_NOMSG (INT32_MIN + 3) 41 typedef uint32_t psa_signal_t;
84 psa_signal_t
psa_wait(psa_signal_t signal_mask, uint32_t timeout);
146 size_t psa_read(psa_handle_t msg_handle, uint32_t invec_idx,
147 void *buffer,
size_t num_bytes);
169 size_t psa_skip(psa_handle_t msg_handle, uint32_t invec_idx,
size_t num_bytes);
193 void psa_write(psa_handle_t msg_handle, uint32_t outvec_idx,
194 const void *buffer,
size_t num_bytes);
210 void psa_reply(psa_handle_t msg_handle, psa_status_t status);
244 void psa_eoi(psa_signal_t irq_signal);
void psa_eoi(uint32_t irq_signal)
Inform the SPM that an interrupt has been handled (end of interrupt).
size_t psa_skip(psa_handle_t msg_handle, uint32_t invec_idx, size_t num_bytes)
Advance the current read offset by skipping num_bytes bytes for input vector indexed by @а invec_idx...
Describe a message received by an RoT Service after calling psa_get().
void psa_reply(psa_handle_t msg_handle, psa_status_t status)
Complete handling of specific message and unblocks the client.
size_t psa_read(psa_handle_t msg_handle, uint32_t invec_idx, void *buf, size_t num_bytes)
Copy up to len bytes from position offset within the client message payload into the Secure Partition...
void psa_set_rhandle(psa_handle_t msg_handle, void *rhandle)
Associate the caller-provided private data with a specified handle.
psa_signal_t psa_wait(psa_signal_t signal_mask, uint32_t timeout)
Return the signals that have been asserted.
psa_status_t psa_get(psa_signal_t signal, psa_msg_t *msg)
Get the message that corresponds to a given signal.
void psa_write(psa_handle_t msg_handle, uint32_t outvec_idx, const void *buffer, size_t num_bytes)
Write a response payload of bytes bytes starting at position offset in the client's response buffer...
void psa_clear(void)
Clear the doorbell signal.
struct psa_msg psa_msg_t
Structure containing the PSA IPC message sent from a client partition to an RoT Service.
#define PSA_MAX_IOVEC
Maximum number of psa_invec and psa_outvec structures allowed for psa_call().
void psa_notify(int32_t partition_id)
Send a doorbell signal to a specific partition that is listening for that signal type.