Introduction   User API Reference   DSMlib Reference   IDL Interface   File List   Index  

Generic Dataspace Manager Interface
[Dataspace Manager Interface IDL Specifications]


Files

file  dm_generic.idl
 L4 generic dataspace manager interface.

Data Structures

interface  if_l4dm::generic

Functions

long if_l4dm::generic::map ([in] unsigned long ds_id,[in] unsigned long offset,[in] unsigned long size,[in] unsigned long rcv_size2,[in] unsigned long rcv_offs,[in] unsigned long flags,[out] fpage *page)
 Map dataspace pages (full version).
long if_l4dm::generic::fault ([in] unsigned long ds_id,[in] unsigned long offset,[out] fpage *page)
 Handle dataspace fault.
long if_l4dm::generic::close ([in] unsigned long ds_id)
 Close dataspace.
long if_l4dm::generic::close_all ([in] l4_threadid_t client,[in] unsigned long flags)
 Close all dataspaces of a client.
long if_l4dm::generic::share ([in] unsigned long ds_id,[in] l4_threadid_t client,[in] unsigned long flags)
 Grant access rights to dataspace to other clients.
long if_l4dm::generic::revoke ([in] unsigned long ds_id,[in] l4_threadid_t client,[in] unsigned long flags)
 Revoke access rights to dataspace to other clients.
long if_l4dm::generic::check_rights ([in] unsigned long ds_id,[in] unsigned long flags)
 Check access rights.
long if_l4dm::generic::transfer ([in] unsigned long ds_id,[in] l4_threadid_t new_owner)
 Transfer ownership of a dataspace.
long if_l4dm::generic::copy ([in] unsigned long ds_id,[in] unsigned long src_offs,[in] unsigned long dst_offs,[in] unsigned long num,[in] unsigned long flags,[in, string] char *name,[out] l4dm_dataspace_t *copy)
 Create a copy of a dataspace.
long if_l4dm::generic::set_name ([in] unsigned long ds_id,[in, string] char *name)
 DEBUG: set dataspace name.
long if_l4dm::generic::get_name ([in] unsigned long ds_id,[out, string, prealloc_client] char **name)
 DEBUG: get dataspace name.
long if_l4dm::generic::show_ds ([in] unsigned long ds_id)
 DEBUG: show information about dataspace on debug console.
void if_l4dm::generic::list ([in] l4_threadid_t owner,[in] unsigned long flags)
 DEBUG: List dataspaces of a client on debug console.

Function Documentation

long if_l4dm::generic::map ( [in] unsigned long  ds_id,
[in] unsigned long  offset,
[in] unsigned long  size,
[in] unsigned long  rcv_size2,
[in] unsigned long  rcv_offs,
[in] unsigned long  flags,
[out] fpage *  page 
) [inherited]

Map dataspace pages (full version).

Parameters:
ds_id Dataspace id
offset Offset in dataspace
size Map size
rcv_size2 Receive window size (log2)
rcv_offs Offset in receive window
flags Access rights / flags
Return values:
page Flexpage descriptor
Returns:
0 on success, error code otherwise:
  • -L4_EINVAL invalid dataspace id / offset
  • -L4_EPERM operation not permitted
Handle pagefault in dataspace, map the page which belongs to offset.

long if_l4dm::generic::fault ( [in] unsigned long  ds_id,
[in] unsigned long  offset,
[out] fpage *  page 
) [inherited]

Handle dataspace fault.

Parameters:
ds_id Dataspace id
offset Offset in dataspace
Return values:
page Flexpage descriptor
Returns:
0 on success, error code otherwise:
  • -L4_EINVAL invalid dataspace id
  • -L4_EPERM operation not permitted
This is a special case of the map call with just the requested page as receive window.

long if_l4dm::generic::close ( [in] unsigned long  ds_id  )  [inherited]

Close dataspace.

Parameters:
ds_id Dataspace id
Returns:
0 on success, error code otherwise:
  • -L4_EINVAL invalid dataspace id
  • -L4_EPERM operation not permitted, only the owner is allowed to close a dataspace

long if_l4dm::generic::close_all ( [in] l4_threadid_t  client,
[in] unsigned long  flags 
) [inherited]

Close all dataspaces of a client.

Parameters:
client Client thread id
flags Flags
Returns:
0 on success, error code otherwise:
  • -L4_EPERM permission denied
  • -L4_EINVAL an invalid client id was given
This function is internal and should only be called by Dataspace Manager internal threads.

long if_l4dm::generic::share ( [in] unsigned long  ds_id,
[in] l4_threadid_t  client,
[in] unsigned long  flags 
) [inherited]

Grant access rights to dataspace to other clients.

Parameters:
ds_id Dataspace id
client Client id
flags Rights bit mask
Returns:
0 on success, error code otherwise:
  • -L4_EINVAL invalid dataspace id
  • -L4_EPERM operation not permitted
Grant / extend access rights to a dataspace.

long if_l4dm::generic::revoke ( [in] unsigned long  ds_id,
[in] l4_threadid_t  client,
[in] unsigned long  flags 
) [inherited]

Revoke access rights to dataspace to other clients.

Parameters:
ds_id Dataspace id
client Client id
flags Rights bit mask
Returns:
0 on success, error code otherwise:
  • -L4_EINVAL invalid dataspace id
  • -L4_EPERM operation not permitted
Revoke / restrict access rights to a dataspace.

long if_l4dm::generic::check_rights ( [in] unsigned long  ds_id,
[in] unsigned long  flags 
) [inherited]

Check access rights.

Parameters:
ds_id Dataspace id
flags Rights bit mask
Returns:
0 if requested operations are allowed, error code otherwise:
  • -L4_EINVAL invalid dataspace id
  • -L4_EPERM requested operations not allowed
Check whether the caller can perform the specified operations on the dataspace.

long if_l4dm::generic::transfer ( [in] unsigned long  ds_id,
[in] l4_threadid_t  new_owner 
) [inherited]

Transfer ownership of a dataspace.

Parameters:
ds_id Dataspace id
new_owner New owner
Returns:
0 on success, error code otherwise:
  • -L4_EINVAL invalid dataspace id
  • -L4_EPERM operation not permitted, only the previous owner can transfer the ownership
Transfer the ownership of the dataspace to new_owner.

long if_l4dm::generic::copy ( [in] unsigned long  ds_id,
[in] unsigned long  src_offs,
[in] unsigned long  dst_offs,
[in] unsigned long  num,
[in] unsigned long  flags,
[in, string] char *  name,
[out] l4dm_dataspace_t copy 
) [inherited]

Create a copy of a dataspace.

Parameters:
ds_id Source dataspace id
src_offs Offset in source dataspace
dst_offs Offset in destination dataspace
num Number of bytes to copy
flags Flags
name Destination dataspace name
Return values:
copy Dataspace id of copy
Returns:
0 on success (copy contains the id of the newly created copy), error code otherwise:
  • -L4_EINVAL invalid dataspace id
  • -L4_EPERM operation not permitted
Create a copy of a dataspace.

long if_l4dm::generic::set_name ( [in] unsigned long  ds_id,
[in, string] char *  name 
) [inherited]

DEBUG: set dataspace name.

Parameters:
ds_id Dataspace id
name Dataspace name
Returns:
0 on success, error code otherwise:
  • -L4_EINVAL invalid dataspace id
  • -L4_EPERM operation not permitted, only the owner can set the name

long if_l4dm::generic::get_name ( [in] unsigned long  ds_id,
[out, string, prealloc_client] char **  name 
) [inherited]

DEBUG: get dataspace name.

Parameters:
ds_id Dataspace id
Return values:
name Dataspace name
size Length of name
Returns:
0 on success, error code otherwise:
  • -L4_EINVAL invalid dataspace id

long if_l4dm::generic::show_ds ( [in] unsigned long  ds_id  )  [inherited]

DEBUG: show information about dataspace on debug console.

Parameters:
ds_id Dataspace id
Returns:
0 on success, error code otherwise:
  • -L4_EINVAL invalid dataspace id

void if_l4dm::generic::list ( [in] l4_threadid_t  owner,
[in] unsigned long  flags 
) [inherited]

DEBUG: List dataspaces of a client on debug console.

Parameters:
owner Owner of the dataspaces
flags Flags
Returns:
0 on success, error code otherwise.
List all dataspaces owned by client.


DMphys Reference Manual, written by Lars Reuther  © 2000-2003