Ignore:
File:
1 edited

Legend:

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

    r7880d58 r1bfd3d3  
    6767                switch (answer_count) {
    6868                case 0:
    69                         ipc_answer_0(callid, (sysarg_t) result);
     69                        ipc_answer_0(callid, (ipcarg_t) result);
    7070                        break;
    7171                case 1:
    72                         ipc_answer_1(callid, (sysarg_t) result,
     72                        ipc_answer_1(callid, (ipcarg_t) result,
    7373                            IPC_GET_ARG1(*answer));
    7474                        break;
    7575                case 2:
    76                         ipc_answer_2(callid, (sysarg_t) result,
     76                        ipc_answer_2(callid, (ipcarg_t) result,
    7777                            IPC_GET_ARG1(*answer), IPC_GET_ARG2(*answer));
    7878                        break;
    7979                case 3:
    80                         ipc_answer_3(callid, (sysarg_t) result,
     80                        ipc_answer_3(callid, (ipcarg_t) result,
    8181                            IPC_GET_ARG1(*answer), IPC_GET_ARG2(*answer),
    8282                            IPC_GET_ARG3(*answer));
    8383                        break;
    8484                case 4:
    85                         ipc_answer_4(callid, (sysarg_t) result,
     85                        ipc_answer_4(callid, (ipcarg_t) result,
    8686                            IPC_GET_ARG1(*answer), IPC_GET_ARG2(*answer),
    8787                            IPC_GET_ARG3(*answer), IPC_GET_ARG4(*answer));
     
    8989                case 5:
    9090                default:
    91                         ipc_answer_5(callid, (sysarg_t) result,
     91                        ipc_answer_5(callid, (ipcarg_t) result,
    9292                            IPC_GET_ARG1(*answer), IPC_GET_ARG2(*answer),
    9393                            IPC_GET_ARG3(*answer), IPC_GET_ARG4(*answer),
     
    111111 *                      function.
    112112 */
    113 int bind_service(services_t need, sysarg_t arg1, sysarg_t arg2, sysarg_t arg3,
     113int bind_service(services_t need, ipcarg_t arg1, ipcarg_t arg2, ipcarg_t arg3,
    114114    async_client_conn_t client_receiver)
    115115{
     
    134134 *
    135135 */
    136 int bind_service_timeout(services_t need, sysarg_t arg1, sysarg_t arg2,
    137     sysarg_t arg3, async_client_conn_t client_receiver, suseconds_t timeout)
     136int bind_service_timeout(services_t need, ipcarg_t arg1, ipcarg_t arg2,
     137    ipcarg_t arg3, async_client_conn_t client_receiver, suseconds_t timeout)
    138138{
    139139        int rc;
     
    143143        if (phone >= 0) {
    144144                /* Request the bidirectional connection */
    145                 sysarg_t phonehash;
     145                ipcarg_t phonehash;
    146146               
    147147                rc = ipc_connect_to_me(phone, arg1, arg2, arg3, &phonehash);
     
    196196                timeout -= MODULE_WAIT_TIME;
    197197        }
     198}
     199
     200/** Receives data from the other party.
     201 *
     202 * The received data buffer is allocated and returned.
     203 *
     204 * @param[out] data     The data buffer to be filled.
     205 * @param[out] length   The buffer length.
     206 * @return              EOK on success.
     207 * @return              EBADMEM if the data or the length parameter is NULL.
     208 * @return              EINVAL if the client does not send data.
     209 * @return              ENOMEM if there is not enough memory left.
     210 * @return              Other error codes as defined for the
     211 *                      async_data_write_finalize() function.
     212 */
     213int data_receive(void **data, size_t *length)
     214{
     215        ipc_callid_t callid;
     216        int rc;
     217
     218        if (!data || !length)
     219                return EBADMEM;
     220
     221        // fetch the request
     222        if (!async_data_write_receive(&callid, length))
     223                return EINVAL;
     224
     225        // allocate the buffer
     226        *data = malloc(*length);
     227        if (!*data)
     228                return ENOMEM;
     229
     230        // fetch the data
     231        rc = async_data_write_finalize(callid, *data, *length);
     232        if (rc != EOK) {
     233                free(data);
     234                return rc;
     235        }
     236
     237        return EOK;
    198238}
    199239
     
    243283                IPC_SET_RETVAL(*answer, 0);
    244284                // just to be precize
    245                 IPC_SET_IMETHOD(*answer, 0);
     285                IPC_SET_METHOD(*answer, 0);
    246286                IPC_SET_ARG1(*answer, 0);
    247287                IPC_SET_ARG2(*answer, 0);
Note: See TracChangeset for help on using the changeset viewer.