Defines | |
#define | L4DM_ALL_RIGHTS 0x000000FF |
Functions | |
L4_CV int | l4dm_share (const l4dm_dataspace_t *ds, l4_threadid_t client, l4_uint32_t rights) |
Grant dataspace access rights to a client. | |
int | l4dm_revoke (const l4dm_dataspace_t *ds, l4_threadid_t client, l4_uint32_t rights) |
Revoke dataspace access rights. | |
L4_CV int | l4dm_check_rights (const l4dm_dataspace_t *ds, l4_uint32_t rights) |
Check dataspace access rights. | |
L4_CV int | l4dm_transfer (const l4dm_dataspace_t *ds, l4_threadid_t new_owner) |
Transfer dataspace ownership. |
Currently, dataspace managers implement a thread-based access control list for each dataspace.
Each dataspace is owned by a thread. Initialy, the thread which createded the dataspace owns it. The ownership can be transfered using l4dm_transfer(). The owner has full control over the dataspace, in particular only the owner can close a dataspace.
Access rights for other threads can be granted using l4dm_share(). A thread can only grant access rights to a dataspace up to the rights it owns itself on the dataspace. Access rights can be revoked using l4dm_revoke().
L4_CV int l4dm_share | ( | const l4dm_dataspace_t * | ds, | |
l4_threadid_t | client, | |||
l4_uint32_t | rights | |||
) |
Grant dataspace access rights to a client.
ds | Dataspace descriptor | |
client | Client thread id | |
rights | Access rights:
|
int l4dm_revoke | ( | const l4dm_dataspace_t * | ds, | |
l4_threadid_t | client, | |||
l4_uint32_t | rights | |||
) |
Revoke dataspace access rights.
ds | Dataspace descriptor | |
client | Client thread id | |
rights | Access rights:
|
L4_CV int l4dm_check_rights | ( | const l4dm_dataspace_t * | ds, | |
l4_uint32_t | rights | |||
) |
Check dataspace access rights.
ds | Dataspace descriptor | |
rights | Access rights:
|
L4_CV int l4dm_transfer | ( | const l4dm_dataspace_t * | ds, | |
l4_threadid_t | new_owner | |||
) |
Transfer dataspace ownership.
ds | Dataspace descriptor | |
new_owner | New dataspace owner |