Changeset eadaeae8 in mainline for kernel/generic/include/ipc/sysipc.h


Ignore:
Timestamp:
2018-03-21T20:58:49Z (7 years ago)
Author:
Jakub Jermar <jakub@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
3be9d10
Parents:
874381a
Message:

Make capability handles type-safe

Define distinct pointer types for the handles of the supported
capability types and use them instead of integer handles. This makes it
virtually impossible to pass a non-handle or a handle of different type
instead of the proper handle. Also turn cap_handle_t into an "untyped"
capability handle that can be assigned to and from the "typed" handles.

This commit also fixes a bug in msim-con driver, which wrongly used the
IRQ number instead of the IRQ capability handle to unregister the IRQ.

This commit also fixes the wrong use of the capability handle instead
of error code in libusbhost.

File:
1 edited

Legend:

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

    r874381a readaeae8  
    4040#include <typedefs.h>
    4141
    42 extern errno_t ipc_req_internal(int, ipc_data_t *, sysarg_t);
     42extern errno_t ipc_req_internal(cap_phone_handle_t, ipc_data_t *, sysarg_t);
    4343
    44 extern sys_errno_t sys_ipc_call_async_fast(sysarg_t, sysarg_t, sysarg_t,
     44extern sys_errno_t sys_ipc_call_async_fast(cap_phone_handle_t, sysarg_t,
     45    sysarg_t, sysarg_t, sysarg_t, sysarg_t);
     46extern sys_errno_t sys_ipc_call_async_slow(cap_phone_handle_t, ipc_data_t *,
     47    sysarg_t);
     48extern sys_errno_t sys_ipc_answer_fast(cap_call_handle_t, sysarg_t, sysarg_t,
    4549    sysarg_t, sysarg_t, sysarg_t);
    46 extern sys_errno_t sys_ipc_call_async_slow(sysarg_t, ipc_data_t *, sysarg_t);
    47 extern sys_errno_t sys_ipc_answer_fast(sysarg_t, sysarg_t, sysarg_t, sysarg_t,
    48     sysarg_t, sysarg_t);
    49 extern sys_errno_t sys_ipc_answer_slow(sysarg_t, ipc_data_t *);
     50extern sys_errno_t sys_ipc_answer_slow(cap_call_handle_t, ipc_data_t *);
    5051extern sys_errno_t sys_ipc_wait_for_call(ipc_data_t *, uint32_t, unsigned int);
    5152extern sys_errno_t sys_ipc_poke(void);
    52 extern sys_errno_t sys_ipc_forward_fast(sysarg_t, sysarg_t, sysarg_t, sysarg_t,
    53     sysarg_t, unsigned int);
    54 extern sys_errno_t sys_ipc_forward_slow(sysarg_t, sysarg_t, ipc_data_t *,
    55     unsigned int);
    56 extern sys_errno_t sys_ipc_hangup(sysarg_t);
     53extern sys_errno_t sys_ipc_forward_fast(cap_call_handle_t, cap_phone_handle_t,
     54    sysarg_t, sysarg_t, sysarg_t, unsigned int);
     55extern sys_errno_t sys_ipc_forward_slow(cap_call_handle_t, cap_phone_handle_t,
     56    ipc_data_t *, unsigned int);
     57extern sys_errno_t sys_ipc_hangup(cap_phone_handle_t);
    5758
    58 extern sys_errno_t sys_ipc_irq_subscribe(inr_t, sysarg_t, irq_code_t *, cap_handle_t *);
    59 extern sys_errno_t sys_ipc_irq_unsubscribe(sysarg_t);
     59extern sys_errno_t sys_ipc_irq_subscribe(inr_t, sysarg_t, irq_code_t *,
     60    cap_irq_handle_t *);
     61extern sys_errno_t sys_ipc_irq_unsubscribe(cap_irq_handle_t);
    6062
    61 extern sys_errno_t sys_ipc_connect_kbox(task_id_t *, cap_handle_t *);
     63extern sys_errno_t sys_ipc_connect_kbox(task_id_t *, cap_phone_handle_t *);
    6264
    6365#endif
Note: See TracChangeset for help on using the changeset viewer.