Changeset 7969087 in mainline for uspace/lib/c


Ignore:
Timestamp:
2013-09-11T10:35:49Z (12 years ago)
Author:
Jiri Svoboda <jiri@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
43dd8028
Parents:
e5556e4a
Message:

devctl load-drv to manually load a driver.

Location:
uspace/lib/c
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • uspace/lib/c/generic/devman.c

    re5556e4a r7969087  
    598598}
    599599
     600int devman_driver_get_handle(const char *drvname, devman_handle_t *handle)
     601{
     602        async_exch_t *exch;
     603
     604        exch = devman_exchange_begin(DEVMAN_CLIENT);
     605        if (exch == NULL)
     606                return ENOMEM;
     607       
     608        ipc_call_t answer;
     609        aid_t req = async_send_0(exch, DEVMAN_DRIVER_GET_HANDLE, &answer);
     610        sysarg_t retval = async_data_write_start(exch, drvname,
     611            str_size(drvname));
     612       
     613        devman_exchange_end(exch);
     614       
     615        if (retval != EOK) {
     616                async_forget(req);
     617                return retval;
     618        }
     619       
     620        async_wait_for(req, &retval);
     621       
     622        if (retval != EOK) {
     623                if (handle != NULL)
     624                        *handle = (devman_handle_t) -1;
     625               
     626                return retval;
     627        }
     628       
     629        if (handle != NULL)
     630                *handle = (devman_handle_t) IPC_GET_ARG1(answer);
     631       
     632        return retval;
     633}
     634
    600635int devman_driver_get_name(devman_handle_t handle, char *buf, size_t buf_size)
    601636{
     
    622657}
    623658
     659int devman_driver_load(devman_handle_t drvh)
     660{
     661        async_exch_t *exch = devman_exchange_begin(DEVMAN_CLIENT);
     662        if (exch == NULL)
     663                return ENOMEM;
     664       
     665        int rc = async_req_1_0(exch, DEVMAN_DRIVER_LOAD, drvh);
     666       
     667        devman_exchange_end(exch);
     668        return rc;
     669}
     670
    624671/** @}
    625672 */
  • uspace/lib/c/include/devman.h

    re5556e4a r7969087  
    7272extern int devman_fun_sid_to_handle(service_id_t, devman_handle_t *);
    7373extern int devman_get_drivers(devman_handle_t **, size_t *);
     74extern int devman_driver_get_handle(const char *, devman_handle_t *);
    7475extern int devman_driver_get_name(devman_handle_t, char *, size_t);
    7576extern int devman_driver_get_state(devman_handle_t, driver_state_t *);
     77extern int devman_driver_load(devman_handle_t);
    7678
    7779#endif
  • uspace/lib/c/include/ipc/devman.h

    re5556e4a r7969087  
    177177        DEVMAN_FUN_SID_TO_HANDLE,
    178178        DEVMAN_GET_DRIVERS,
     179        DEVMAN_DRIVER_GET_HANDLE,
    179180        DEVMAN_DRIVER_GET_NAME,
    180         DEVMAN_DRIVER_GET_STATE
     181        DEVMAN_DRIVER_GET_STATE,
     182        DEVMAN_DRIVER_LOAD
    181183} client_to_devman_t;
    182184
Note: See TracChangeset for help on using the changeset viewer.