Subversion Repositories HelenOS

Rev

Rev 2555 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 2555 Rev 2594
Line 37... Line 37...
37
#include <libadt/list.h>
37
#include <libadt/list.h>
38
 
38
 
39
#define DEVMAP_NAME_MAXLEN 512
39
#define DEVMAP_NAME_MAXLEN 512
40
 
40
 
41
typedef enum {
41
typedef enum {
42
    DEVMAP_REGISTER = IPC_FIRST_USER_METHOD,
42
    DEVMAP_DRIVER_REGISTER = IPC_FIRST_USER_METHOD,
43
    DEVMAP_UNREGISTER,
43
    DEVMAP_DRIVER_UNREGISTER,
-
 
44
    DEVMAP_DEVICE_CONNECT_ME_TO,
-
 
45
    DEVMAP_DEVICE_REGISTER,
44
    DEVMAP_CONNECT_TO_DEVICE,
46
    DEVMAP_DEVICE_UNREGISTER,
-
 
47
    DEVMAP_DEVICE_GET_NAME,
45
    DEVMAP_GET_HANDLE
48
    DEVMAP_DEVICE_GET_HANDLE
46
} devmap_request_t;
49
} devmap_request_t;
47
 
50
 
-
 
51
/** Representation of device driver.
-
 
52
 * Each driver is responsible for a set of devices.
-
 
53
 */
-
 
54
typedef struct {
-
 
55
        /** Pointers to previous and next drivers in linked list */
-
 
56
    link_t drivers;
-
 
57
        /** Pointer to the linked list of devices controlled by
-
 
58
         * this driver */
-
 
59
    link_t devices;
-
 
60
        /** Phone asociated with this driver */
-
 
61
    ipcarg_t phone;
-
 
62
        /** Device driver name */
-
 
63
    char *name;
-
 
64
        /** Futex for list of devices owned by this driver */
-
 
65
    atomic_t devices_futex;
-
 
66
} devmap_driver_t;
48
 
67
 
49
/** Info about registered device
68
/** Info about registered device
50
 *
69
 *
51
 */
70
 */
52
typedef struct {
71
typedef struct {
-
 
72
        /** Pointer to the previous and next device in the list of all devices */
53
    link_t list;
73
    link_t devices;
-
 
74
        /** Pointer to the previous and next device in the list of devices
-
 
75
         owned by one driver */
-
 
76
    link_t driver_devices;
-
 
77
        /** Unique device identifier  */
54
    int handle;
78
    int handle;
-
 
79
        /** Device name */
55
    char *name;
80
    char *name;
-
 
81
        /** Device driver handling this device */
56
    ipcarg_t phone;
82
    devmap_driver_t *driver;
57
} devmap_device_t;
83
} devmap_device_t;
58
 
84
 
-
 
85
/** Interface provided by DevMap.
-
 
86
 *
-
 
87
 */
-
 
88
typedef enum {
-
 
89
    DEVMAP_DRIVER = 1,
-
 
90
    DEVMAP_CLIENT
-
 
91
} devmap_interface_t;
-
 
92
 
59
#endif
93
#endif
60
 
94