Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • uspace/lib/drv/include/ddf/driver.h

    r56fd7cf r77ad86c  
    4242#include "../dev_iface.h"
    4343
     44typedef struct ddf_dev ddf_dev_t;
     45typedef struct ddf_fun ddf_fun_t;
    4446
    4547/*
    4648 * Device
    4749 */
    48 
    49 typedef struct ddf_dev ddf_dev_t;
    50 typedef struct ddf_fun ddf_fun_t;
    5150
    5251/** Devices operations */
     
    7675
    7776/** Device structure */
    78 struct ddf_dev;
     77struct ddf_dev {
     78        /**
     79         * Globally unique device identifier (assigned to the device by the
     80         * device manager).
     81         */
     82        devman_handle_t handle;
     83       
     84        /** Reference count */
     85        atomic_t refcnt;
     86       
     87        /**
     88         * Session to the parent device driver (if it is different from this
     89         * driver)
     90         */
     91        async_sess_t *parent_sess;
     92       
     93        /** Device name */
     94        const char *name;
     95       
     96        /** Driver-specific data associated with this device */
     97        void *driver_data;
     98       
     99        /** Link in the list of devices handled by the driver */
     100        link_t link;
     101};
    79102
    80103/** Function structure */
    81 struct ddf_fun;
     104struct ddf_fun {
     105        /** True if bound to the device manager */
     106        bool bound;
     107       
     108        /** Function indentifier (asigned by device manager) */
     109        devman_handle_t handle;
     110       
     111        /** Reference count */
     112        atomic_t refcnt;
     113       
     114        /** Device which this function belogs to */
     115        ddf_dev_t *dev;
     116       
     117        /** Function type */
     118        fun_type_t ftype;
     119       
     120        /** Function name */
     121        const char *name;
     122       
     123        /** List of device ids for driver matching */
     124        match_id_list_t match_ids;
     125       
     126        /** Driver-specific data associated with this function */
     127        void *driver_data;
     128       
     129        /** Implementation of operations provided by this function */
     130        ddf_dev_ops_t *ops;
     131       
     132        /** Connection handler or @c NULL to use the DDF default handler. */
     133        async_client_conn_t conn_handler;
     134       
     135        /** Link in the list of functions handled by the driver */
     136        link_t link;
     137};
    82138
    83139/*
     
    111167} driver_t;
    112168
    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 
    118169extern int ddf_driver_main(driver_t *);
    119170
    120171extern 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 *);
    126172extern 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 *);
    128173extern void ddf_fun_destroy(ddf_fun_t *);
    129174extern 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 *);
    134175extern int ddf_fun_bind(ddf_fun_t *);
    135176extern int ddf_fun_unbind(ddf_fun_t *);
     
    137178extern int ddf_fun_offline(ddf_fun_t *);
    138179extern 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);
     180
    141181extern int ddf_fun_add_to_category(ddf_fun_t *, const char *);
    142182
Note: See TracChangeset for help on using the changeset viewer.