Changeset 56fd7cf in mainline for uspace/drv/infrastructure


Ignore:
Timestamp:
2012-08-17T11:37:03Z (13 years ago)
Author:
Jiri Svoboda <jiri@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
1d5a540
Parents:
be2a38ad
Message:

Make ddf_dev_t and ddf_fun_t opaque. This further tighthens the DDF interface.

Location:
uspace/drv/infrastructure
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • uspace/drv/infrastructure/root/root.c

    rbe2a38ad r56fd7cf  
    204204{
    205205        ddf_msg(LVL_DEBUG, "root_dev_add, device handle=%" PRIun,
    206             dev->handle);
     206            ddf_dev_get_handle(dev));
    207207
    208208        /*
  • uspace/drv/infrastructure/rootmac/rootmac.c

    rbe2a38ad r56fd7cf  
    4444#define NAME  "rootmac"
    4545
    46 /** Obtain function soft-state from DDF function node */
    47 #define ROOTMAC_FUN(fnode) \
    48         ((rootmac_fun_t *) (fnode)->driver_data)
    49 
    5046typedef struct {
    5147        hw_resource_list_t hw_resources;
     
    8076static ddf_dev_ops_t rootmac_fun_ops;
    8177
     78/** Obtain function soft-state from DDF function node */
     79static rootmac_fun_t *rootmac_fun(ddf_fun_t *fnode)
     80{
     81        return ddf_fun_data_get(fnode);
     82}
     83
    8284static bool rootmac_add_fun(ddf_dev_t *dev, const char *name,
    83     const char *str_match_id, rootmac_fun_t *fun)
     85    const char *str_match_id, rootmac_fun_t *fun_proto)
    8486{
    8587        ddf_msg(LVL_DEBUG, "Adding new function '%s'.", name);
    8688       
    8789        ddf_fun_t *fnode = NULL;
    88         match_id_t *match_id = NULL;
     90        int rc;
    8991       
    9092        /* Create new device. */
     
    9395                goto failure;
    9496       
    95         fnode->driver_data = fun;
     97        rootmac_fun_t *fun = ddf_fun_data_alloc(fnode, sizeof(rootmac_fun_t));
     98        *fun = *fun_proto;
    9699       
    97         /* Initialize match id list */
    98         match_id = create_match_id();
    99         if (match_id == NULL)
     100        /* Add match ID */
     101        rc = ddf_fun_add_match_id(fnode, str_match_id, 100);
     102        if (rc != EOK)
    100103                goto failure;
    101104       
    102         match_id->id = str_match_id;
    103         match_id->score = 100;
    104         add_match_id(&fnode->match_ids, match_id);
    105        
    106105        /* Set provided operations to the device. */
    107         fnode->ops = &rootmac_fun_ops;
     106        ddf_fun_set_ops(fnode, &rootmac_fun_ops);
    108107       
    109108        /* Register function. */
     
    116115       
    117116failure:
    118         if (match_id != NULL)
    119                 match_id->id = NULL;
    120        
    121117        if (fnode != NULL)
    122118                ddf_fun_destroy(fnode);
     
    162158static hw_resource_list_t *rootmac_get_resources(ddf_fun_t *fnode)
    163159{
    164         rootmac_fun_t *fun = ROOTMAC_FUN(fnode);
     160        rootmac_fun_t *fun = rootmac_fun(fnode);
    165161        assert(fun != NULL);
    166162       
  • uspace/drv/infrastructure/rootpc/rootpc.c

    rbe2a38ad r56fd7cf  
    5353
    5454#define NAME "rootpc"
    55 
    56 /** Obtain function soft-state from DDF function node */
    57 #define ROOTPC_FUN(fnode) ((rootpc_fun_t *) (fnode)->driver_data)
    5855
    5956typedef struct rootpc_fun {
     
    10198};
    10299
     100/** Obtain function soft-state from DDF function node */
     101static rootpc_fun_t *rootpc_fun(ddf_fun_t *fnode)
     102{
     103        return ddf_fun_data_get(fnode);
     104}
     105
    103106static hw_resource_list_t *rootpc_get_resources(ddf_fun_t *fnode)
    104107{
    105         rootpc_fun_t *fun = ROOTPC_FUN(fnode);
     108        rootpc_fun_t *fun = rootpc_fun(fnode);
    106109       
    107110        assert(fun != NULL);
     
    126129static bool
    127130rootpc_add_fun(ddf_dev_t *dev, const char *name, const char *str_match_id,
    128     rootpc_fun_t *fun)
     131    rootpc_fun_t *fun_proto)
    129132{
    130133        ddf_msg(LVL_DEBUG, "Adding new function '%s'.", name);
    131134       
    132135        ddf_fun_t *fnode = NULL;
    133         match_id_t *match_id = NULL;
     136        int rc;
    134137       
    135138        /* Create new device. */
     
    138141                goto failure;
    139142       
    140         fnode->driver_data = fun;
    141        
    142         /* Initialize match id list */
    143         match_id = create_match_id();
    144         if (match_id == NULL)
     143        rootpc_fun_t *fun = ddf_fun_data_alloc(fnode, sizeof(rootpc_fun_t));
     144        *fun = *fun_proto;
     145       
     146        /* Add match ID */
     147        rc = ddf_fun_add_match_id(fnode, str_match_id, 100);
     148        if (rc != EOK)
    145149                goto failure;
    146150       
    147         match_id->id = str_match_id;
    148         match_id->score = 100;
    149         add_match_id(&fnode->match_ids, match_id);
    150        
    151151        /* Set provided operations to the device. */
    152         fnode->ops = &rootpc_fun_ops;
     152        ddf_fun_set_ops(fnode, &rootpc_fun_ops);
    153153       
    154154        /* Register function. */
     
    161161       
    162162failure:
    163         if (match_id != NULL)
    164                 match_id->id = NULL;
    165        
    166163        if (fnode != NULL)
    167164                ddf_fun_destroy(fnode);
     
    186183{
    187184        ddf_msg(LVL_DEBUG, "rootpc_dev_add, device handle = %d",
    188             (int)dev->handle);
     185            (int)ddf_dev_get_handle(dev));
    189186       
    190187        /* Register functions. */
  • uspace/drv/infrastructure/rootvirt/rootvirt.c

    rbe2a38ad r56fd7cf  
    151151{
    152152        int rc;
    153         const char *name = rvfun->fun->name;
     153        const char *name = ddf_fun_get_name(rvfun->fun);
    154154
    155155        ddf_msg(LVL_DEBUG, "rootvirt_fun_remove('%s')", name);
     
    183183        }
    184184
    185         ddf_msg(LVL_DEBUG, "dev_add(handle=%d)", (int)dev->handle);
     185        ddf_msg(LVL_DEBUG, "dev_add(handle=%d)", (int)ddf_dev_get_handle(dev));
    186186
    187187        rootvirt = ddf_dev_data_alloc(dev, sizeof(rootvirt_t));
     
    207207static int rootvirt_dev_remove(ddf_dev_t *dev)
    208208{
    209         rootvirt_t *rootvirt = (rootvirt_t *)dev->driver_data;
     209        rootvirt_t *rootvirt = (rootvirt_t *)ddf_dev_data_get(dev);
    210210        int rc;
    211211
Note: See TracChangeset for help on using the changeset viewer.