Subversion Repositories HelenOS

Compare Revisions

Ignore whitespace Rev 2593 → Rev 2594

/trunk/uspace/srv/devmap/devmap.h
39,22 → 39,56
#define DEVMAP_NAME_MAXLEN 512
 
typedef enum {
DEVMAP_REGISTER = IPC_FIRST_USER_METHOD,
DEVMAP_UNREGISTER,
DEVMAP_CONNECT_TO_DEVICE,
DEVMAP_GET_HANDLE
DEVMAP_DRIVER_REGISTER = IPC_FIRST_USER_METHOD,
DEVMAP_DRIVER_UNREGISTER,
DEVMAP_DEVICE_CONNECT_ME_TO,
DEVMAP_DEVICE_REGISTER,
DEVMAP_DEVICE_UNREGISTER,
DEVMAP_DEVICE_GET_NAME,
DEVMAP_DEVICE_GET_HANDLE
} devmap_request_t;
 
/** Representation of device driver.
* Each driver is responsible for a set of devices.
*/
typedef struct {
/** Pointers to previous and next drivers in linked list */
link_t drivers;
/** Pointer to the linked list of devices controlled by
* this driver */
link_t devices;
/** Phone asociated with this driver */
ipcarg_t phone;
/** Device driver name */
char *name;
/** Futex for list of devices owned by this driver */
atomic_t devices_futex;
} devmap_driver_t;
 
/** Info about registered device
*
*/
typedef struct {
link_t list;
/** Pointer to the previous and next device in the list of all devices */
link_t devices;
/** Pointer to the previous and next device in the list of devices
owned by one driver */
link_t driver_devices;
/** Unique device identifier */
int handle;
/** Device name */
char *name;
ipcarg_t phone;
/** Device driver handling this device */
devmap_driver_t *driver;
} devmap_device_t;
 
/** Interface provided by DevMap.
*
*/
typedef enum {
DEVMAP_DRIVER = 1,
DEVMAP_CLIENT
} devmap_interface_t;
 
#endif