Changes in uspace/lib/drv/include/ddf/driver.h [56fd7cf:77a69ea] in mainline
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/lib/drv/include/ddf/driver.h
r56fd7cf r77a69ea 42 42 #include "../dev_iface.h" 43 43 44 typedef struct ddf_dev ddf_dev_t; 45 typedef struct ddf_fun ddf_fun_t; 44 46 45 47 /* 46 48 * Device 47 49 */ 48 49 typedef struct ddf_dev ddf_dev_t;50 typedef struct ddf_fun ddf_fun_t;51 50 52 51 /** Devices operations */ … … 76 75 77 76 /** Device structure */ 78 struct ddf_dev; 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 }; 79 101 80 102 /** Function structure */ 81 struct ddf_fun; 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 }; 82 130 83 131 /* … … 89 137 /** Callback method for passing a new device to the device driver */ 90 138 int (*dev_add)(ddf_dev_t *); 91 92 139 /** Ask driver to remove a device */ 93 140 int (*dev_remove)(ddf_dev_t *); 94 95 141 /** Inform driver a device disappeared */ 96 142 int (*dev_gone)(ddf_dev_t *); 97 98 143 /** Ask driver to online a specific function */ 99 144 int (*fun_online)(ddf_fun_t *); 100 101 145 /** Ask driver to offline a specific function */ 102 146 int (*fun_offline)(ddf_fun_t *); … … 111 155 } driver_t; 112 156 113 /** XXX Only to transition USB */114 #ifdef _DDF_DATA_IMPLANT115 extern void ddf_fun_data_implant(ddf_fun_t *, void *);116 #endif117 118 157 extern int ddf_driver_main(driver_t *); 119 158 120 159 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 *);126 160 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 *);128 161 extern void ddf_fun_destroy(ddf_fun_t *); 129 162 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 *);134 163 extern int ddf_fun_bind(ddf_fun_t *); 135 164 extern int ddf_fun_unbind(ddf_fun_t *); … … 137 166 extern int ddf_fun_offline(ddf_fun_t *); 138 167 extern int ddf_fun_add_match_id(ddf_fun_t *, const char *, int); 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); 168 141 169 extern int ddf_fun_add_to_category(ddf_fun_t *, const char *); 142 170
Note:
See TracChangeset
for help on using the changeset viewer.