Changes in / [7b2a7ad:b76a7329] in mainline


Ignore:
Files:
7 edited

Legend:

Unmodified
Added
Removed
  • abi/include/ipc/methods.h

    r7b2a7ad rb76a7329  
    9696 *                       error is sent back to caller. Otherwise
    9797 *                       the call is accepted and the response is sent back.
     98 *                     - the hash of the client task is passed to userspace
     99 *                       (on the receiving side) as ARG4 of the call.
    98100 *                     - the hash of the allocated phone is passed to userspace
    99101 *                       (on the receiving side) as ARG5 of the call.
  • kernel/generic/include/ipc/ipc.h

    r7b2a7ad rb76a7329  
    9898typedef struct {
    9999        sysarg_t args[IPC_CALL_LEN];
    100         /**
    101          * Task which made or forwarded the call with IPC_FF_ROUTE_FROM_ME,
    102          * or the task which answered the call.
    103          */
     100        /** Task which made or forwarded the call with IPC_FF_ROUTE_FROM_ME. */
    104101        task_id_t task_id;
    105102        /** Phone which made or last masqueraded this call. */
  • kernel/generic/src/ipc/ipc.c

    r7b2a7ad rb76a7329  
    230230                }
    231231        }
    232 
    233         call->data.task_id = TASK->taskid;
    234232       
    235233        if (do_lock)
  • kernel/generic/src/ipc/sysipc.c

    r7b2a7ad rb76a7329  
    253253                        /* The connection was accepted */
    254254                        phone_connect(phoneid, &answer->sender->answerbox);
     255                        /* Set 'task ID' as arg3 and arg4 of response */
     256                        IPC_SET_ARG3(answer->data, LOWER32(TASK->taskid));
     257                        IPC_SET_ARG4(answer->data, UPPER32(TASK->taskid));
    255258                        /* Set 'phone hash' as arg5 of response */
    256259                        IPC_SET_ARG5(answer->data,
  • uspace/lib/c/generic/async.c

    r7b2a7ad rb76a7329  
    14721472                return ENOENT;
    14731473       
     1474        task_id_t task_id;
     1475        sysarg_t task_id_lo;
     1476        sysarg_t task_id_hi;
    14741477        sysarg_t phone_hash;
    1475         sysarg_t rc;
    1476 
    1477         aid_t req;
    1478         ipc_call_t answer;
    1479         req = async_send_3(exch, IPC_M_CONNECT_TO_ME, arg1, arg2, arg3,
    1480             &answer);
    1481         async_wait_for(req, &rc);
     1478        int rc = async_req_3_5(exch, IPC_M_CONNECT_TO_ME, arg1, arg2, arg3,
     1479            NULL, NULL, &task_id_lo, &task_id_hi, &phone_hash);
    14821480        if (rc != EOK)
    1483                 return (int) rc;
    1484 
    1485         phone_hash = IPC_GET_ARG5(answer);
    1486 
     1481                return rc;
     1482
     1483        task_id = (task_id_t) MERGE_LOUP32(task_id_lo, task_id_hi);
     1484       
    14871485        if (client_receiver != NULL)
    1488                 async_new_connection(answer.in_task_id, phone_hash, 0, NULL,
     1486                async_new_connection(task_id, phone_hash, 0, NULL,
    14891487                    client_receiver, carg);
    14901488       
  • uspace/lib/c/generic/ipc.c

    r7b2a7ad rb76a7329  
    4747#include <futex.h>
    4848#include <fibril.h>
    49 #include <macros.h>
    5049
    5150/**
     
    612611/** Request callback connection.
    613612 *
    614  * The @a task_id and @a phonehash identifiers returned
     613 * The @a taskhash and @a phonehash identifiers returned
    615614 * by the kernel can be used for connection tracking.
    616615 *
     
    619618 * @param arg2      User defined argument.
    620619 * @param arg3      User defined argument.
    621  * @param task_id   Identifier of the client task.
     620 * @param taskhash  Opaque identifier of the client task.
    622621 * @param phonehash Opaque identifier of the phone that will
    623622 *                  be used for incoming calls.
     
    627626 */
    628627int ipc_connect_to_me(int phoneid, sysarg_t arg1, sysarg_t arg2, sysarg_t arg3,
    629     task_id_t *task_id, sysarg_t *phonehash)
    630 {
    631         ipc_call_t data;
    632         int rc = __SYSCALL6(SYS_IPC_CALL_SYNC_FAST, phoneid,
    633             IPC_M_CONNECT_TO_ME, arg1, arg2, arg3, (sysarg_t) &data);
    634         if (rc == EOK) {
    635                 *task_id = data.in_task_id;
    636                 *phonehash = IPC_GET_ARG5(data);
    637         }       
    638         return rc;
     628    sysarg_t *taskhash, sysarg_t *phonehash)
     629{
     630        return ipc_call_sync_3_5(phoneid, IPC_M_CONNECT_TO_ME, arg1, arg2,
     631            arg3, NULL, NULL, NULL, taskhash, phonehash);
    639632}
    640633
  • uspace/lib/c/include/ipc/ipc.h

    r7b2a7ad rb76a7329  
    254254    sysarg_t, sysarg_t, void *, ipc_async_callback_t, bool);
    255255
    256 extern int ipc_connect_to_me(int, sysarg_t, sysarg_t, sysarg_t, task_id_t *,
     256extern int ipc_connect_to_me(int, sysarg_t, sysarg_t, sysarg_t, sysarg_t *,
    257257    sysarg_t *);
    258258extern int ipc_connect_me(int);
Note: See TracChangeset for help on using the changeset viewer.