Changeset 3209923 in mainline for kernel


Ignore:
Timestamp:
2007-11-20T09:12:49Z (18 years ago)
Author:
Jakub Jermar <jakub@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
b74959bd
Parents:
bc50fc42
Message:

Modify asynchronous IPC to make use of all six syscall arguments. The preferred
means of asynchronous communication is now via the set of ipc_call_async_m()
macros, where m is the number of payload arguments passed to the kernel. These
macros will automatically decide between the fast and the universal slow version
of ipc_call_async.

Location:
kernel/generic
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • kernel/generic/include/ipc/sysipc.h

    rbc50fc42 r3209923  
    4545    ipc_data_t *reply);
    4646unative_t sys_ipc_call_async_fast(unative_t phoneid, unative_t method,
    47     unative_t arg1, unative_t arg2);
    48 unative_t sys_ipc_call_async(unative_t phoneid, ipc_data_t *data);
     47    unative_t arg1, unative_t arg2, unative_t arg3, unative_t arg4);
     48unative_t sys_ipc_call_async_slow(unative_t phoneid, ipc_data_t *data);
    4949unative_t sys_ipc_answer_fast(unative_t callid, unative_t retval,
    5050    unative_t arg1, unative_t arg2);
  • kernel/generic/include/syscall/syscall.h

    rbc50fc42 r3209923  
    5151        SYS_IPC_CALL_SYNC_SLOW,
    5252        SYS_IPC_CALL_ASYNC_FAST,
    53         SYS_IPC_CALL_ASYNC,
     53        SYS_IPC_CALL_ASYNC_SLOW,
    5454        SYS_IPC_ANSWER_FAST,
    5555        SYS_IPC_ANSWER,
  • kernel/generic/src/ipc/sysipc.c

    rbc50fc42 r3209923  
    445445/** Make a fast asynchronous call over IPC.
    446446 *
    447  * This function can only handle two arguments of payload, but is faster than
    448  * the generic function sys_ipc_call_async().
     447 * This function can only handle four arguments of payload, but is faster than
     448 * the generic function sys_ipc_call_async_slow().
    449449 *
    450450 * @param phoneid       Phone handle for the call.
     
    452452 * @param arg1          Service-defined payload argument.
    453453 * @param arg2          Service-defined payload argument.
     454 * @param arg3          Service-defined payload argument.
     455 * @param arg4          Service-defined payload argument.
    454456 *
    455457 * @return              Return call hash on success.
     
    459461 */
    460462unative_t sys_ipc_call_async_fast(unative_t phoneid, unative_t method,
    461     unative_t arg1, unative_t arg2)
     463    unative_t arg1, unative_t arg2, unative_t arg3, unative_t arg4)
    462464{
    463465        call_t *call;
     
    474476        IPC_SET_ARG1(call->data, arg1);
    475477        IPC_SET_ARG2(call->data, arg2);
    476         IPC_SET_ARG3(call->data, 0);
     478        IPC_SET_ARG3(call->data, arg3);
     479        IPC_SET_ARG4(call->data, arg4);
    477480
    478481        if (!(res = request_preprocess(call)))
     
    491494 * @return              See sys_ipc_call_async_fast().
    492495 */
    493 unative_t sys_ipc_call_async(unative_t phoneid, ipc_data_t *data)
     496unative_t sys_ipc_call_async_slow(unative_t phoneid, ipc_data_t *data)
    494497{
    495498        call_t *call;
  • kernel/generic/src/syscall/syscall.c

    rbc50fc42 r3209923  
    136136        (syshandler_t) sys_ipc_call_sync_slow,
    137137        (syshandler_t) sys_ipc_call_async_fast,
    138         (syshandler_t) sys_ipc_call_async,
     138        (syshandler_t) sys_ipc_call_async_slow,
    139139        (syshandler_t) sys_ipc_answer_fast,
    140140        (syshandler_t) sys_ipc_answer,
Note: See TracChangeset for help on using the changeset viewer.