Changeset 58cbb0c8 in mainline for uspace/srv/devman/devman.h


Ignore:
Timestamp:
2011-09-01T22:19:21Z (13 years ago)
Author:
Jiri Svoboda <jiri@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
aff587f
Parents:
5f6e25e
Message:

Reference counting of device and function nodes in devman.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • uspace/srv/devman/devman.h

    r5f6e25e r58cbb0c8  
    128128/** Device node in the device tree. */
    129129struct dev_node {
     130        /** Reference count */
     131        atomic_t refcnt;
     132       
    130133        /** The global unique identifier of the device. */
    131134        devman_handle_t handle;
     
    156159/** Function node in the device tree. */
    157160struct fun_node {
     161        /** Reference count */
     162        atomic_t refcnt;
     163       
    158164        /** The global unique identifier of the function */
    159165        devman_handle_t handle;
     
    239245
    240246extern void add_driver(driver_list_t *, driver_t *);
    241 extern void attach_driver(dev_node_t *, driver_t *);
    242 extern void detach_driver(dev_node_t *);
     247extern void attach_driver(dev_tree_t *, dev_node_t *, driver_t *);
     248extern void detach_driver(dev_tree_t *, dev_node_t *);
    243249extern void add_device(driver_t *, dev_node_t *, dev_tree_t *);
    244250extern bool start_driver(driver_t *);
    245 extern int driver_dev_remove(dev_node_t *);
    246 extern int driver_fun_online(fun_node_t *);
    247 extern int driver_fun_offline(fun_node_t *);
     251extern int driver_dev_remove(dev_tree_t *, dev_node_t *);
     252extern int driver_fun_online(dev_tree_t *, fun_node_t *);
     253extern int driver_fun_offline(dev_tree_t *, fun_node_t *);
    248254
    249255extern driver_t *find_driver(driver_list_t *, const char *);
     
    258264extern dev_node_t *create_dev_node(void);
    259265extern void delete_dev_node(dev_node_t *node);
     266extern void dev_add_ref(dev_node_t *);
     267extern void dev_del_ref(dev_node_t *);
    260268extern dev_node_t *find_dev_node_no_lock(dev_tree_t *tree,
    261269    devman_handle_t handle);
     
    267275extern fun_node_t *create_fun_node(void);
    268276extern void delete_fun_node(fun_node_t *);
     277extern void fun_add_ref(fun_node_t *);
     278extern void fun_del_ref(fun_node_t *);
    269279extern fun_node_t *find_fun_node_no_lock(dev_tree_t *tree,
    270280    devman_handle_t handle);
    271281extern fun_node_t *find_fun_node(dev_tree_t *tree, devman_handle_t handle);
    272282extern fun_node_t *find_fun_node_by_path(dev_tree_t *, char *);
    273 extern fun_node_t *find_fun_node_in_device(dev_node_t *, const char *);
     283extern fun_node_t *find_fun_node_in_device(dev_tree_t *tree, dev_node_t *,
     284    const char *);
    274285
    275286/* Device tree */
Note: See TracChangeset for help on using the changeset viewer.