Fork us on GitHub Follow us on Facebook Follow us on Twitter

Ignore:
Timestamp:
2012-08-17T11:37:03Z (9 years ago)
Author:
Jiri Svoboda <jiri@…>
Branches:
lfn, master
Children:
1d5a540
Parents:
be2a38ad
Message:

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

File:
1 edited

Legend:

Unmodified
Added
Removed
  • 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       
Note: See TracChangeset for help on using the changeset viewer.