NOVA User-Level Environment  Version testbox/changed-memory-timing-317-g320d8b5
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
DiskService Class Reference
Inheritance diagram for DiskService:
NoXlateSService< DiskClient, DiskService > CapAllocator StaticReceiver< DiskService > BaseSService< DiskClient, DiskService > InternalCapAllocator Device

Public Member Functions

bool receive (MessageDiskCommit &msg)
virtual cap_sel alloc_cap (unsigned count=1)
virtual void dealloc_cap (cap_sel c)
virtual cap_sel create_ec4pt (phy_cpu_no cpu, Utcb **utcb_out, cap_sel ec=~0u)
 DiskService (Motherboard &mb, unsigned _cap, unsigned _cap_order)
- Public Member Functions inherited from NoXlateSService< DiskClient, DiskService >
unsigned get_crdt ()
unsigned create_session_portal (cap_sel pt)
unsigned portal_func (Utcb &utcb, Utcb::Frame &input, bool &free_cap, cap_sel pid)
- Public Member Functions inherited from BaseSService< DiskClient, DiskService >
unsigned alloc_crd ()
bool register_service (const char *service_name, Hip &hip=Global::hip)
 Registers the service with parent.
unsigned open_session (Utcb &utcb, cap_sel pseudonym, bool &free_cap)
unsigned close_session (Utcb &utcb, cap_sel session_id)
unsigned handle_session (Utcb &utcb, cap_sel session_id, unsigned op, Utcb::Frame &input, bool &free_cap)
- Public Member Functions inherited from CapAllocator
 CapAllocator (unsigned long cap_, unsigned long cap_start, unsigned long cap_order)
void dealloc_cap (unsigned cap, unsigned count=1)
- Public Member Functions inherited from StaticReceiver< DiskService >
 StaticReceiver ()
- Public Member Functions inherited from Device
void debug_dump ()
 Device (const char *debug_name)

Private Member Functions

DiskClient_get_client_from_deleg_pt (cap_sel pt)
unsigned portal_func_delegate (cap_sel pt, Utcb &utcb, Utcb::Frame &input)
unsigned _create_deleg_ecs (Hip &hip)
bool find_free_tag (DiskClient *client, unsigned char disknr, unsigned long usertag, unsigned long &tag)
 Find a free disk tag for a client.
unsigned attach_drives (Utcb &utcb, cap_sel identity)
virtual unsigned new_session (DiskClient *client)
virtual unsigned handle_request (DiskClient *client, unsigned op, Utcb::Frame &input, Utcb &utcb, bool &free_cap)
void add_disk (Disk *disk)

Static Private Member Functions

static void static_portal_delegate (unsigned pt, DiskService *tls, Utcb *utcb) __attribute__((regparm(1)))

Private Attributes

LockedList< Diskdisks
Motherboard_mb
Semaphore _lock
cap_sel _deleg_ec [Config::MAX_CPUS]

Additional Inherited Members

- Static Public Member Functions inherited from StaticReceiver< DiskService >
static bool receive_static (Device *o, M &msg)
- Public Attributes inherited from CapAllocator
unsigned long _cap_
unsigned long _cap_start
unsigned long _cap_order
- Protected Types inherited from BaseSService< DiskClient, DiskService >
typedef ClientDataStorage
< DiskClient, DiskService
Sessions
- Protected Member Functions inherited from BaseSService< DiskClient, DiskService >
virtual unsigned new_session (DiskClient *session)=0
virtual unsigned handle_request (DiskClient *session, unsigned op, Utcb::Frame &input, Utcb &utcb, bool &free_cap)=0
mword get_portal_func_addr ()
- Protected Attributes inherited from BaseSService< DiskClient, DiskService >
Sessions _sessions
cap_sel _worker_ec_base
char * flag_revoke

Constructor & Destructor Documentation

DiskService::DiskService ( Motherboard mb,
unsigned  _cap,
unsigned  _cap_order 
)
inline

Member Function Documentation

unsigned DiskService::_create_deleg_ecs ( Hip hip)
inlineprivate
DiskClient* DiskService::_get_client_from_deleg_pt ( cap_sel  pt)
inlineprivate
void DiskService::add_disk ( Disk disk)
inlineprivate
virtual cap_sel DiskService::alloc_cap ( unsigned  count = 1)
inlinevirtual

Reimplemented from CapAllocator.

unsigned DiskService::attach_drives ( Utcb utcb,
cap_sel  identity 
)
inlineprivate
virtual cap_sel DiskService::create_ec4pt ( phy_cpu_no  cpu,
Utcb **  utcb_out,
cap_sel  ec = ~0u 
)
inlinevirtual
virtual void DiskService::dealloc_cap ( cap_sel  c)
inlinevirtual
bool DiskService::find_free_tag ( DiskClient client,
unsigned char  disknr,
unsigned long  usertag,
unsigned long &  tag 
)
inlineprivate

Find a free disk tag for a client.

virtual unsigned DiskService::handle_request ( DiskClient client,
unsigned  op,
Utcb::Frame input,
Utcb utcb,
bool &  free_cap 
)
inlineprivatevirtual
virtual unsigned DiskService::new_session ( DiskClient client)
inlineprivatevirtual
unsigned DiskService::portal_func_delegate ( cap_sel  pt,
Utcb utcb,
Utcb::Frame input 
)
inlineprivate
bool DiskService::receive ( MessageDiskCommit msg)
inline
static void DiskService::static_portal_delegate ( unsigned  pt,
DiskService tls,
Utcb utcb 
)
inlinestaticprivate

Member Data Documentation

cap_sel DiskService::_deleg_ec[Config::MAX_CPUS]
private
Semaphore DiskService::_lock
private
Motherboard& DiskService::_mb
private
LockedList<Disk> DiskService::disks
private

The documentation for this class was generated from the following file: