Module xous::syscall

source ·

Enums§

Functions§

  • Claim a hardware interrupt for this process.
  • Connect to a server with the given SID
  • Connect to a server on behalf of another process. This can be used by a name resolution server to securely create connections without disclosing a SID.
  • Create a new server with a random name. This enables other processes to connect to this server to send messages. A random server ID is generated by the kernel and returned to the caller. This address can then be registered to a namserver.
  • Fetch a random server ID from the kernel. This is used exclusively by the name server and the suspend/resume server. A random server ID is generated by the kernel and returned to the caller. This address can then be registered to a namserver by the caller in their memory space.
  • Create a new server with the given name. This enables other processes to connect to this server to send messages. The name is a UTF-8 token that will be mixed with other random data that is unique to each process. That way, if a process crashes and is restarted, it can keep the same name. However, other processes cannot spoof this process.
  • Create a new server with the given SID. This enables other processes to connect to this server to send messages. The name is a unique 128-bit SID. That way, if a process crashes and is restarted, it can keep the same name. However, other processes cannot spoof this process.
  • Create a new thread with the given closure.
  • Get the current process ID
  • Get the current thread ID
  • Disconnect the specified connection ID and mark it as free. This connection ID may be reused by the server in the future, so ensure no other threads are using the connection ID before disposing of it.
  • Block the current thread and wait for the specified thread to return. Returns the return value of the thread.
  • Map the given physical address to the given virtual address. The size field must be page-aligned.
  • Suspend the current process until a message is received. This thread will block until a message is received.
  • Reply to the message, if one exists, and receive the next one. If no message exists, delegate the call to receive_syscall().
  • Reply to the message, if one exists, and receive the next one. If no message exists, delegate the call to receive_syscall(). Allow specifying the scalar return type.
  • Map the given physical address to the given virtual address. The size field must be page-aligned.
  • Map the given physical address to the given virtual address. The size field must be page-aligned.
  • Map the given physical address to the given virtual address. The size field must be page-aligned.
  • Map the given physical address to the given virtual address. The size field must be page-aligned.
  • Map the given physical address to the given virtual address. The size field must be page-aligned.
  • Return 5 scalars to the provided message.
  • Perform a raw syscall and return the result. This will transform xous::Result::Error(e) into an Err(e).
  • Send a message to a server. Depending on the mesage type (move or borrow), it will either block (borrow) or return immediately (move). If the message type is borrow, then the memory addresses pointed to will be unavailable to this process until this function returns.
  • Connect to a server with the given SID
  • Retrieve a message from the message queue for the provided server. If no message is available, returns Ok(None) without blocking
  • Send a message to a server. Depending on the mesage type (move or borrow), it will either block (borrow) or return immediately (move). If the message type is borrow, then the memory addresses pointed to will be unavailable to this process until this function returns.
  • Map the given physical address to the given virtual address. The size field must be page-aligned.
  • Update the permissions on the given memory range. Note that permissions may only be stripped here – they may never be added.
  • Return execution to the kernel and wait for a message or an interrupt.
  • Wait for a thread to finish
  • Wait for a thread to finish. This is equivalent to join_thread
  • Return execution to the kernel. This function may return at any time, including immediately