NOVA User-Level Environment
Version testbox/changed-memory-timing-317-g320d8b5
|
#include <service_fs.h>
Classes | |
struct | dirent |
struct | File |
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. |
Additional Inherited Members | |
![]() | |
const char * | _service |
unsigned | _instance |
unsigned | _cap_base |
Base of the capability range. This cap refers to CAP_PSEUDONYM. | |
unsigned | _session_base |
Base of the session portals. | |
Semaphore | _lock |
bool | _blocking |
bool | _disabled |
enum FsProtocol::opcode |
|
inline |
|
inline |
|
inline |
|
inlinestatic |