Ignore:
File:
1 edited

Legend:

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

    r47a7174f r96b02eb9  
    127127/** Register new device.
    128128 *
    129  * The @p interface is used when forwarding connection to the driver.
    130  * If not 0, the first argument is the interface and the second argument
    131  * is the devmap handle of the device.
    132  * When the interface is zero (default), the first argument is directly
    133  * the handle (to ensure backward compatibility).
    134  *
    135  * @param fqdn Fully qualified device name.
    136  * @param[out] handle Handle to the created instance of device.
    137  * @param interface Interface when forwarding.
    138  *
    139  */
    140 int devmap_device_register_with_iface(const char *fqdn,
    141     devmap_handle_t *handle, sysarg_t interface)
    142 {
    143         int phone = devmap_get_phone(DEVMAP_DRIVER, IPC_FLAG_BLOCKING);
    144        
    145         if (phone < 0)
    146                 return phone;
    147        
    148         async_serialize_start();
    149        
    150         ipc_call_t answer;
    151         aid_t req = async_send_2(phone, DEVMAP_DEVICE_REGISTER, interface, 0,
    152             &answer);
    153        
    154         sysarg_t retval = async_data_write_start(phone, fqdn, str_size(fqdn));
    155         if (retval != EOK) {
    156                 async_wait_for(req, NULL);
    157                 async_serialize_end();
    158                 return retval;
    159         }
    160        
    161         async_wait_for(req, &retval);
    162        
    163         async_serialize_end();
    164        
    165         if (retval != EOK) {
    166                 if (handle != NULL)
    167                         *handle = -1;
    168                 return retval;
    169         }
    170        
    171         if (handle != NULL)
    172                 *handle = (devmap_handle_t) IPC_GET_ARG1(answer);
    173        
    174         return retval;
    175 }
    176 
    177 /** Register new device.
    178  *
     129 * @param namespace Namespace name.
    179130 * @param fqdn      Fully qualified device name.
    180131 * @param handle    Output: Handle to the created instance of device.
     
    183134int devmap_device_register(const char *fqdn, devmap_handle_t *handle)
    184135{
    185         return devmap_device_register_with_iface(fqdn, handle, 0);
    186 }
    187 
     136        int phone = devmap_get_phone(DEVMAP_DRIVER, IPC_FLAG_BLOCKING);
     137       
     138        if (phone < 0)
     139                return phone;
     140       
     141        async_serialize_start();
     142       
     143        ipc_call_t answer;
     144        aid_t req = async_send_2(phone, DEVMAP_DEVICE_REGISTER, 0, 0,
     145            &answer);
     146       
     147        sysarg_t retval = async_data_write_start(phone, fqdn, str_size(fqdn));
     148        if (retval != EOK) {
     149                async_wait_for(req, NULL);
     150                async_serialize_end();
     151                return retval;
     152        }
     153       
     154        async_wait_for(req, &retval);
     155       
     156        async_serialize_end();
     157       
     158        if (retval != EOK) {
     159                if (handle != NULL)
     160                        *handle = -1;
     161                return retval;
     162        }
     163       
     164        if (handle != NULL)
     165                *handle = (devmap_handle_t) IPC_GET_ARG1(answer);
     166       
     167        return retval;
     168}
    188169
    189170int devmap_device_get_handle(const char *fqdn, devmap_handle_t *handle, unsigned int flags)
Note: See TracChangeset for help on using the changeset viewer.