Ignore:
File:
1 edited

Legend:

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

    rc3887ad r6b82009  
    5454 */
    5555int generic_device_state_msg_remote(async_sess_t *sess, sysarg_t message,
    56     nic_device_id_t device_id, sysarg_t state, services_t target)
     56    device_id_t device_id, sysarg_t state, services_t target)
    5757{
    5858        async_exch_t *exch = async_exchange_begin(sess);
     
    6868 * @param[in] message   Service specific message.
    6969 * @param[in] device_id Device identifier.
     70 * @param[in] arg2      Second argument of the message.
    7071 * @param[in] service   Device module service.
    7172 *
     
    7677 */
    7778int generic_device_req_remote(async_sess_t *sess, sysarg_t message,
    78     nic_device_id_t device_id, services_t service)
    79 {
    80         async_exch_t *exch = async_exchange_begin(sess);
    81         int rc = async_req_3_0(exch, message, (sysarg_t) device_id, 0,
    82             (sysarg_t) service);
     79    device_id_t device_id, sysarg_t arg2, services_t service)
     80{
     81        async_exch_t *exch = async_exchange_begin(sess);
     82        int rc = async_req_3_0(exch, message, (sysarg_t) device_id,
     83            arg2, (sysarg_t) service);
    8384        async_exchange_end(exch);
    8485       
     
    102103 */
    103104int generic_get_addr_req(async_sess_t *sess, sysarg_t message,
    104     nic_device_id_t device_id, uint8_t *address, size_t max_len)
    105 {
    106         aid_t aid;
    107         ipc_call_t result;
    108        
    109         assert(address != NULL);
     105    device_id_t device_id, measured_string_t **address, uint8_t **data)
     106{
     107        if ((!address) || (!data))
     108                return EBADMEM;
    110109       
    111110        /* Request the address */
    112111        async_exch_t *exch = async_exchange_begin(sess);
    113         aid = async_send_1(exch, message, (sysarg_t) device_id, &result);
    114        
    115         sysarg_t ipcrc;
    116         int rc = async_data_read_start(exch, address, max_len);
    117         async_exchange_end(exch);
    118        
    119         if (rc != EOK) {
    120                 async_wait_for(aid, &ipcrc);
    121                 return rc;
    122         }
    123        
    124         async_wait_for(aid, &ipcrc);
    125         if (ipcrc == EOK) {
    126                 return IPC_GET_ARG1(result);
    127         } else {
    128                 return (int) ipcrc;
    129         }
     112        aid_t message_id = async_send_1(exch, message, (sysarg_t) device_id,
     113            NULL);
     114        int rc = measured_strings_return(exch, address, data, 1);
     115        async_exchange_end(exch);
     116       
     117        sysarg_t result;
     118        async_wait_for(message_id, &result);
     119       
     120        /* If not successful */
     121        if ((rc == EOK) && (result != EOK)) {
     122                /* Clear the data */
     123                free(*address);
     124                free(*data);
     125        }
     126       
     127        return (int) result;
    130128}
    131129
     
    144142 */
    145143int generic_packet_size_req_remote(async_sess_t *sess, sysarg_t message,
    146     nic_device_id_t device_id, packet_dimension_t *packet_dimension)
     144    device_id_t device_id, packet_dimension_t *packet_dimension)
    147145{
    148146        if (!packet_dimension)
     
    181179 */
    182180int generic_received_msg_remote(async_sess_t *sess, sysarg_t message,
    183     nic_device_id_t device_id, packet_id_t packet_id, services_t target,
     181    device_id_t device_id, packet_id_t packet_id, services_t target,
    184182    services_t error)
    185183{
     
    212210 */
    213211int generic_send_msg_remote(async_sess_t *sess, sysarg_t message,
    214     nic_device_id_t device_id, packet_id_t packet_id, services_t sender,
     212    device_id_t device_id, packet_id_t packet_id, services_t sender,
    215213    services_t error)
    216214{
     
    253251 */
    254252int generic_translate_req(async_sess_t *sess, sysarg_t message,
    255     nic_device_id_t device_id, services_t service,
     253    device_id_t device_id, services_t service,
    256254    measured_string_t *configuration, size_t count,
    257255    measured_string_t **translation, uint8_t **data)
Note: See TracChangeset for help on using the changeset viewer.