Changes in uspace/lib/drv/include/ddf/driver.h [77a69ea:56fd7cf] in mainline
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/lib/drv/include/ddf/driver.h
r77a69ea r56fd7cf 42 42 #include "../dev_iface.h" 43 43 44 typedef struct ddf_dev ddf_dev_t;45 typedef struct ddf_fun ddf_fun_t;46 44 47 45 /* 48 46 * Device 49 47 */ 48 49 typedef struct ddf_dev ddf_dev_t; 50 typedef struct ddf_fun ddf_fun_t; 50 51 51 52 /** Devices operations */ … … 75 76 76 77 /** Device structure */ 77 struct ddf_dev { 78 /** 79 * Globally unique device identifier (assigned to the device by the 80 * device manager). 81 */ 82 devman_handle_t handle; 83 /** Reference count */ 84 atomic_t refcnt; 85 86 /** 87 * Session to the parent device driver (if it is different from this 88 * driver) 89 */ 90 async_sess_t *parent_sess; 91 92 /** Device name */ 93 const char *name; 94 95 /** Driver-specific data associated with this device */ 96 void *driver_data; 97 98 /** Link in the list of devices handled by the driver */ 99 link_t link; 100 }; 78 struct ddf_dev; 101 79 102 80 /** Function structure */ 103 struct ddf_fun { 104 /** True if bound to the device manager */ 105 bool bound; 106 /** Function indentifier (asigned by device manager) */ 107 devman_handle_t handle; 108 /** Reference count */ 109 atomic_t refcnt; 110 111 /** Device which this function belogs to */ 112 ddf_dev_t *dev; 113 114 /** Function type */ 115 fun_type_t ftype; 116 /** Function name */ 117 const char *name; 118 /** List of device ids for driver matching */ 119 match_id_list_t match_ids; 120 /** Driver-specific data associated with this function */ 121 void *driver_data; 122 /** Implementation of operations provided by this function */ 123 ddf_dev_ops_t *ops; 124 /** Connection handler or @c NULL to use the DDF default handler. */ 125 async_client_conn_t conn_handler; 126 127 /** Link in the list of functions handled by the driver */ 128 link_t link; 129 }; 81 struct ddf_fun; 130 82 131 83 /* … … 137 89 /** Callback method for passing a new device to the device driver */ 138 90 int (*dev_add)(ddf_dev_t *); 91 139 92 /** Ask driver to remove a device */ 140 93 int (*dev_remove)(ddf_dev_t *); 94 141 95 /** Inform driver a device disappeared */ 142 96 int (*dev_gone)(ddf_dev_t *); 97 143 98 /** Ask driver to online a specific function */ 144 99 int (*fun_online)(ddf_fun_t *); 100 145 101 /** Ask driver to offline a specific function */ 146 102 int (*fun_offline)(ddf_fun_t *); … … 155 111 } driver_t; 156 112 113 /** XXX Only to transition USB */ 114 #ifdef _DDF_DATA_IMPLANT 115 extern void ddf_fun_data_implant(ddf_fun_t *, void *); 116 #endif 117 157 118 extern int ddf_driver_main(driver_t *); 158 119 159 120 extern void *ddf_dev_data_alloc(ddf_dev_t *, size_t); 121 extern void *ddf_dev_data_get(ddf_dev_t *); 122 extern devman_handle_t ddf_dev_get_handle(ddf_dev_t *); 123 extern const char *ddf_dev_get_name(ddf_dev_t *); 124 extern async_sess_t *ddf_dev_parent_sess_create(ddf_dev_t *, exch_mgmt_t); 125 extern async_sess_t *ddf_dev_parent_sess_get(ddf_dev_t *); 160 126 extern ddf_fun_t *ddf_fun_create(ddf_dev_t *, fun_type_t, const char *); 127 extern devman_handle_t ddf_fun_get_handle(ddf_fun_t *); 161 128 extern void ddf_fun_destroy(ddf_fun_t *); 162 129 extern void *ddf_fun_data_alloc(ddf_fun_t *, size_t); 130 extern void *ddf_fun_data_get(ddf_fun_t *); 131 extern const char *ddf_fun_get_name(ddf_fun_t *); 132 extern int ddf_fun_set_name(ddf_fun_t *, const char *); 133 extern ddf_dev_t *ddf_fun_get_dev(ddf_fun_t *); 163 134 extern int ddf_fun_bind(ddf_fun_t *); 164 135 extern int ddf_fun_unbind(ddf_fun_t *); … … 166 137 extern int ddf_fun_offline(ddf_fun_t *); 167 138 extern int ddf_fun_add_match_id(ddf_fun_t *, const char *, int); 168 139 extern void ddf_fun_set_ops(ddf_fun_t *, ddf_dev_ops_t *); 140 extern void ddf_fun_set_conn_handler(ddf_fun_t *, async_client_conn_t); 169 141 extern int ddf_fun_add_to_category(ddf_fun_t *, const char *); 170 142
Note:
See TracChangeset
for help on using the changeset viewer.