Public Types |
enum | opcode {
TYPE_INFO = ParentProtocol::TYPE_GENERIC_END,
TYPE_COPY,
TYPE_MAP,
TYPE_CREATE,
TYPE_WRITE,
EPAGEFAULT
} |
enum | { CAP_PSEUDONYM,
CAP_LOCK,
CAP_SERVER_SESSION,
CAP_SERVER_PT
} |
| Client capabilities used to talk to the service. More...
|
enum | {
TYPE_INVALID = 0,
TYPE_OPEN,
TYPE_CLOSE,
TYPE_GENERIC_END,
TYPE_GET_PORTAL,
TYPE_REGISTER,
TYPE_UNREGISTER,
TYPE_GET_QUOTA,
TYPE_SINGLETON,
TYPE_REQ_KILL,
TYPE_SIGNAL
} |
| Protocol operations (message types). More...
|
enum | {
CAP_CHILD_ID = Config::CAP_PARENT_BEGIN,
CAP_SC_USAGE,
CAP_CHILD_EC,
CAP_PARENT_ID,
CAP_PT_PERCPU,
CAP_PT_IDLE_SCS = CAP_PT_PERCPU + Config::MAX_CPUS
} |
| Capabilities used by parent to construct child. More...
|
Public Member Functions |
unsigned | create (Utcb &utcb, File &file, const char *name, unsigned long name_len=~0UL) |
unsigned | get (Utcb &utcb, File &file, const char *name, unsigned long name_len=~0UL) |
| FsProtocol (unsigned cap_base, const char *name, unsigned instance=0) |
unsigned | call_server (Utcb &utcb, bool drop_frame) |
| Call the server in a loop to resolve all faults.
|
unsigned | call_server_drop (Utcb &utcb) |
unsigned | call_server_keep (Utcb &utcb) |
template<class T > |
void | destroy (Utcb &utcb, unsigned portal_num, T *obj) |
| Destroy the object.
|
void | close (Utcb &utcb, unsigned portal_num, bool revoke_lock=true, bool _release_pseudonym=true) |
| Close the session to the parent.
|
unsigned | get_notify_sm () |
Utcb & | init_frame (Utcb &utcb, unsigned op) |
| GenericProtocol (const char *service, unsigned instance, unsigned cap_base, bool blocking, unsigned session_base=~0u) |
| static_assert ((CAP_PT_PERCPU+Config::MAX_CPUS)< (1U<< Config::CAP_RESERVED_ORDER),"Capability Space misconfiguration.") |
Static Public Member Functions |
static const char * | parse_file_name (const char *url, char *proto, size_t &proto_len) |
static Utcb & | init_frame_noid (Utcb &utcb, unsigned op) |
static Utcb & | init_frame (Utcb &utcb, unsigned op, unsigned id) |
static unsigned | call (Utcb &utcb, unsigned cap_base, bool drop_frame, bool percpu=true) |
| Low-level systemcall.
|
static unsigned | get_pseudonym (Utcb &utcb, const char *service, unsigned instance, unsigned cap_pseudonym, unsigned parent_id=CAP_PARENT_ID) |
static unsigned | release_pseudonym (Utcb &utcb, unsigned cap_pseudonym) |
static unsigned | get_portal (Utcb &utcb, unsigned cap_pseudonym, unsigned cap_portal, bool blocking, char const *service_name=0) |
| Ask parent to get the portal to talk to the service.
|
static unsigned | register_service (Utcb &utcb, const char *service, unsigned cpu, unsigned pt, unsigned cap_service, char *revoke_mem=0) |
static unsigned | unregister_service (Utcb &utcb, unsigned cap_service) |
static unsigned | get_quota (Utcb &utcb, unsigned cap_client_pseudonym, const char *name, long invalue, long *outvalue=0) |
static unsigned | set_singleton (Utcb &utcb, unsigned cap_client_pseudonym, unsigned cap_local_session) |
static unsigned | check_singleton (Utcb &utcb, unsigned cap_client_pseudonym, unsigned &cap_local_session, Crd crd=Crd(0, 31, DESC_CAP_ALL)) |
| Services can use check_singleton() in conjunction with set_singleton() to enforce a one-session-per-client policy.
|
static unsigned | kill (Utcb &utcb, unsigned cap_client_pseudonym, unsigned service_cap=0) |
static unsigned | signal (Utcb &utcb, unsigned value) |
| Signals an (arbitrary) event to the parent.
|