Changeset eadaeae8 in mainline for uspace/lib/c


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.

Location:
uspace/lib/c
Files:
7 edited

Legend:

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

    r874381a readaeae8  
    133133
    134134        /** Session identification */
    135         int phone;
     135        cap_phone_handle_t phone;
    136136
    137137        /** First clone connection argument */
     
    169169
    170170        /** Exchange identification */
    171         int phone;
     171        cap_phone_handle_t phone;
    172172};
    173173
     
    185185        link_t link;
    186186
    187         cap_handle_t chandle;
     187        cap_call_handle_t chandle;
    188188        ipc_call_t call;
    189189} msg_t;
     
    237237
    238238        /** Identification of the opening call. */
    239         cap_handle_t chandle;
     239        cap_call_handle_t chandle;
    240240
    241241        /** Call data of the opening call. */
     
    243243
    244244        /** Identification of the closing call. */
    245         cap_handle_t close_chandle;
     245        cap_call_handle_t close_chandle;
    246246
    247247        /** Fibril function that will be used to handle the connection. */
     
    382382 *
    383383 */
    384 static void default_fallback_port_handler(cap_handle_t chandle,
     384static void default_fallback_port_handler(cap_call_handle_t chandle,
    385385    ipc_call_t *call, void *arg)
    386386{
     
    786786 */
    787787static fid_t async_new_connection(task_id_t in_task_id, sysarg_t in_phone_hash,
    788     cap_handle_t chandle, ipc_call_t *call, async_port_handler_t handler,
     788    cap_call_handle_t chandle, ipc_call_t *call, async_port_handler_t handler,
    789789    void *data)
    790790{
     
    968968 *
    969969 */
    970 static bool route_call(cap_handle_t chandle, ipc_call_t *call)
     970static bool route_call(cap_call_handle_t chandle, ipc_call_t *call)
    971971{
    972972        assert(call);
     
    10571057 */
    10581058errno_t async_irq_subscribe(int inr, async_notification_handler_t handler,
    1059     void *data, const irq_code_t *ucode, cap_handle_t *handle)
     1059    void *data, const irq_code_t *ucode, cap_irq_handle_t *handle)
    10601060{
    10611061        notification_t *notification =
     
    10771077        futex_up(&async_futex);
    10781078
    1079         cap_handle_t cap;
    1080         errno_t rc = ipc_irq_subscribe(inr, imethod, ucode, &cap);
     1079        cap_irq_handle_t ihandle;
     1080        errno_t rc = ipc_irq_subscribe(inr, imethod, ucode, &ihandle);
    10811081        if (rc == EOK && handle != NULL) {
    1082                 *handle = cap;
     1082                *handle = ihandle;
    10831083        }
    10841084        return rc;
     
    10871087/** Unsubscribe from IRQ notification.
    10881088 *
    1089  * @param cap     IRQ capability handle.
     1089 * @param handle  IRQ capability handle.
    10901090 *
    10911091 * @return Zero on success or an error code.
    10921092 *
    10931093 */
    1094 errno_t async_irq_unsubscribe(int cap)
     1094errno_t async_irq_unsubscribe(cap_irq_handle_t ihandle)
    10951095{
    10961096        // TODO: Remove entry from hash table
    10971097        //       to avoid memory leak
    10981098
    1099         return ipc_irq_unsubscribe(cap);
     1099        return ipc_irq_unsubscribe(ihandle);
    11001100}
    11011101
     
    12001200 *          message. In that case zero CAP_NIL is returned.
    12011201 */
    1202 cap_handle_t async_get_call_timeout(ipc_call_t *call, suseconds_t usecs)
     1202cap_call_handle_t async_get_call_timeout(ipc_call_t *call, suseconds_t usecs)
    12031203{
    12041204        assert(call);
     
    12671267        list_remove(&msg->link);
    12681268
    1269         cap_handle_t chandle = msg->chandle;
     1269        cap_call_handle_t chandle = msg->chandle;
    12701270        *call = msg->call;
    12711271        free(msg);
     
    13391339 *
    13401340 */
    1341 static void handle_call(cap_handle_t chandle, ipc_call_t *call)
     1341static void handle_call(cap_call_handle_t chandle, ipc_call_t *call)
    13421342{
    13431343        assert(call);
     
    20422042}
    20432043
    2044 errno_t async_answer_0(cap_handle_t chandle, errno_t retval)
     2044errno_t async_answer_0(cap_call_handle_t chandle, errno_t retval)
    20452045{
    20462046        return ipc_answer_0(chandle, retval);
    20472047}
    20482048
    2049 errno_t async_answer_1(cap_handle_t chandle, errno_t retval, sysarg_t arg1)
     2049errno_t async_answer_1(cap_call_handle_t chandle, errno_t retval, sysarg_t arg1)
    20502050{
    20512051        return ipc_answer_1(chandle, retval, arg1);
    20522052}
    20532053
    2054 errno_t async_answer_2(cap_handle_t chandle, errno_t retval, sysarg_t arg1,
     2054errno_t async_answer_2(cap_call_handle_t chandle, errno_t retval, sysarg_t arg1,
    20552055    sysarg_t arg2)
    20562056{
     
    20582058}
    20592059
    2060 errno_t async_answer_3(cap_handle_t chandle, errno_t retval, sysarg_t arg1,
     2060errno_t async_answer_3(cap_call_handle_t chandle, errno_t retval, sysarg_t arg1,
    20612061    sysarg_t arg2, sysarg_t arg3)
    20622062{
     
    20642064}
    20652065
    2066 errno_t async_answer_4(cap_handle_t chandle, errno_t retval, sysarg_t arg1,
     2066errno_t async_answer_4(cap_call_handle_t chandle, errno_t retval, sysarg_t arg1,
    20672067    sysarg_t arg2, sysarg_t arg3, sysarg_t arg4)
    20682068{
     
    20702070}
    20712071
    2072 errno_t async_answer_5(cap_handle_t chandle, errno_t retval, sysarg_t arg1,
     2072errno_t async_answer_5(cap_call_handle_t chandle, errno_t retval, sysarg_t arg1,
    20732073    sysarg_t arg2, sysarg_t arg3, sysarg_t arg4, sysarg_t arg5)
    20742074{
     
    20762076}
    20772077
    2078 errno_t async_forward_fast(cap_handle_t chandle, async_exch_t *exch,
     2078errno_t async_forward_fast(cap_call_handle_t chandle, async_exch_t *exch,
    20792079    sysarg_t imethod, sysarg_t arg1, sysarg_t arg2, unsigned int mode)
    20802080{
     
    20852085}
    20862086
    2087 errno_t async_forward_slow(cap_handle_t chandle, async_exch_t *exch,
     2087errno_t async_forward_slow(cap_call_handle_t chandle, async_exch_t *exch,
    20882088    sysarg_t imethod, sysarg_t arg1, sysarg_t arg2, sysarg_t arg3,
    20892089    sysarg_t arg4, sysarg_t arg5, unsigned int mode)
     
    21262126}
    21272127
    2128 static errno_t async_connect_me_to_internal(int phone, sysarg_t arg1, sysarg_t arg2,
    2129     sysarg_t arg3, sysarg_t arg4, int *out_phone)
     2128static errno_t async_connect_me_to_internal(cap_phone_handle_t phone,
     2129    sysarg_t arg1, sysarg_t arg2, sysarg_t arg3, sysarg_t arg4,
     2130    cap_phone_handle_t *out_phone)
    21302131{
    21312132        ipc_call_t result;
     
    21332134        // XXX: Workaround for GCC's inability to infer association between
    21342135        // rc == EOK and *out_phone being assigned.
    2135         *out_phone = -1;
     2136        *out_phone = CAP_NIL;
    21362137
    21372138        amsg_t *msg = amsg_create();
     
    21512152                return rc;
    21522153
    2153         *out_phone = (int) IPC_GET_ARG5(result);
     2154        *out_phone = (cap_phone_handle_t) IPC_GET_ARG5(result);
    21542155        return EOK;
    21552156}
     
    21822183        }
    21832184
    2184         int phone;
     2185        cap_phone_handle_t phone;
    21852186        errno_t rc = async_connect_me_to_internal(exch->phone, arg1, arg2, arg3,
    21862187            0, &phone);
     
    22352236        }
    22362237
    2237         int phone;
     2238        cap_phone_handle_t phone;
    22382239        errno_t rc = async_connect_me_to_internal(exch->phone, iface, arg2,
    22392240            arg3, 0, &phone);
     
    23062307        }
    23072308
    2308         int phone;
     2309        cap_phone_handle_t phone;
    23092310        errno_t rc = async_connect_me_to_internal(exch->phone, arg1, arg2, arg3,
    23102311            IPC_FLAG_BLOCKING, &phone);
     
    23602361        }
    23612362
    2362         int phone;
     2363        cap_phone_handle_t phone;
    23632364        errno_t rc = async_connect_me_to_internal(exch->phone, iface, arg2,
    23642365            arg3, IPC_FLAG_BLOCKING, &phone);
     
    23962397        }
    23972398
    2398         cap_handle_t phone;
     2399        cap_phone_handle_t phone;
    23992400        errno_t rc = ipc_connect_kbox(id, &phone);
    24002401        if (rc != EOK) {
     
    24212422}
    24222423
    2423 static errno_t async_hangup_internal(int phone)
     2424static errno_t async_hangup_internal(cap_phone_handle_t phone)
    24242425{
    24252426        return ipc_hangup(phone);
     
    25152516                        }
    25162517                } else if (mgmt == EXCHANGE_PARALLEL) {
    2517                         int phone;
     2518                        cap_phone_handle_t phone;
    25182519                        errno_t rc;
    25192520
     
    26452646 *
    26462647 */
    2647 bool async_share_in_receive(cap_handle_t *chandle, size_t *size)
     2648bool async_share_in_receive(cap_call_handle_t *chandle, size_t *size)
    26482649{
    26492650        assert(chandle);
     
    26732674 *
    26742675 */
    2675 errno_t async_share_in_finalize(cap_handle_t chandle, void *src, unsigned int flags)
     2676errno_t async_share_in_finalize(cap_call_handle_t chandle, void *src,
     2677    unsigned int flags)
    26762678{
    26772679        return ipc_answer_3(chandle, EOK, (sysarg_t) src, (sysarg_t) flags,
     
    27122714 *
    27132715 */
    2714 bool async_share_out_receive(cap_handle_t *chandle, size_t *size,
     2716bool async_share_out_receive(cap_call_handle_t *chandle, size_t *size,
    27152717    unsigned int *flags)
    27162718{
     
    27432745 *
    27442746 */
    2745 errno_t async_share_out_finalize(cap_handle_t chandle, void **dst)
     2747errno_t async_share_out_finalize(cap_call_handle_t chandle, void **dst)
    27462748{
    27472749        return ipc_answer_2(chandle, EOK, (sysarg_t) __entry, (sysarg_t) dst);
     
    27972799 *
    27982800 */
    2799 bool async_data_read_receive(cap_handle_t *chandle, size_t *size)
     2801bool async_data_read_receive(cap_call_handle_t *chandle, size_t *size)
    28002802{
    28012803        ipc_call_t data;
     
    28172819 *
    28182820 */
    2819 bool async_data_read_receive_call(cap_handle_t *chandle, ipc_call_t *data,
     2821bool async_data_read_receive_call(cap_call_handle_t *chandle, ipc_call_t *data,
    28202822    size_t *size)
    28212823{
     
    28482850 *
    28492851 */
    2850 errno_t async_data_read_finalize(cap_handle_t chandle, const void *src, size_t size)
     2852errno_t async_data_read_finalize(cap_call_handle_t chandle, const void *src,
     2853    size_t size)
    28512854{
    28522855        return ipc_answer_2(chandle, EOK, (sysarg_t) src, (sysarg_t) size);
     
    28632866                return ENOENT;
    28642867
    2865         cap_handle_t chandle;
     2868        cap_call_handle_t chandle;
    28662869        if (!async_data_read_receive(&chandle, NULL)) {
    28672870                ipc_answer_0(chandle, EINVAL);
     
    29222925 *
    29232926 */
    2924 bool async_data_write_receive(cap_handle_t *chandle, size_t *size)
     2927bool async_data_write_receive(cap_call_handle_t *chandle, size_t *size)
    29252928{
    29262929        ipc_call_t data;
     
    29432946 *
    29442947 */
    2945 bool async_data_write_receive_call(cap_handle_t *chandle, ipc_call_t *data,
     2948bool async_data_write_receive_call(cap_call_handle_t *chandle, ipc_call_t *data,
    29462949    size_t *size)
    29472950{
     
    29732976 *
    29742977 */
    2975 errno_t async_data_write_finalize(cap_handle_t chandle, void *dst, size_t size)
     2978errno_t async_data_write_finalize(cap_call_handle_t chandle, void *dst,
     2979    size_t size)
    29762980{
    29772981        return ipc_answer_2(chandle, EOK, (sysarg_t) dst, (sysarg_t) size);
     
    30053009        assert(data);
    30063010
    3007         cap_handle_t chandle;
     3011        cap_call_handle_t chandle;
    30083012        size_t size;
    30093013        if (!async_data_write_receive(&chandle, &size)) {
     
    30643068void async_data_write_void(errno_t retval)
    30653069{
    3066         cap_handle_t chandle;
     3070        cap_call_handle_t chandle;
    30673071        async_data_write_receive(&chandle, NULL);
    30683072        ipc_answer_0(chandle, retval);
     
    30793083                return ENOENT;
    30803084
    3081         cap_handle_t chandle;
     3085        cap_call_handle_t chandle;
    30823086        if (!async_data_write_receive(&chandle, NULL)) {
    30833087                ipc_answer_0(chandle, EINVAL);
     
    31213125        /* Accept the phone */
    31223126        ipc_call_t call;
    3123         cap_handle_t chandle = async_get_call(&call);
    3124         cap_handle_t phandle = (cap_handle_t) IPC_GET_ARG5(call);
    3125 
    3126         if ((IPC_GET_IMETHOD(call) != IPC_M_CONNECT_TO_ME) || (phandle < 0)) {
     3127        cap_call_handle_t chandle = async_get_call(&call);
     3128        cap_phone_handle_t phandle = (cap_handle_t) IPC_GET_ARG5(call);
     3129
     3130        if ((IPC_GET_IMETHOD(call) != IPC_M_CONNECT_TO_ME) ||
     3131            !CAP_HANDLE_VALID((phandle))) {
    31273132                async_answer_0(chandle, EINVAL);
    31283133                return NULL;
     
    31713176async_sess_t *async_callback_receive_start(exch_mgmt_t mgmt, ipc_call_t *call)
    31723177{
    3173         cap_handle_t phandle = (cap_handle_t) IPC_GET_ARG5(*call);
    3174 
    3175         if ((IPC_GET_IMETHOD(*call) != IPC_M_CONNECT_TO_ME) || (phandle < 0))
     3178        cap_phone_handle_t phandle = (cap_handle_t) IPC_GET_ARG5(*call);
     3179
     3180        if ((IPC_GET_IMETHOD(*call) != IPC_M_CONNECT_TO_ME) ||
     3181            !CAP_HANDLE_VALID((phandle)))
    31763182                return NULL;
    31773183
     
    32013207{
    32023208        return async_req_5_0(exch, IPC_M_STATE_CHANGE_AUTHORIZE,
    3203             arg1, arg2, arg3, 0, other_exch->phone);
    3204 }
    3205 
    3206 bool async_state_change_receive(cap_handle_t *chandle, sysarg_t *arg1,
     3209            arg1, arg2, arg3, 0, CAP_HANDLE_RAW(other_exch->phone));
     3210}
     3211
     3212bool async_state_change_receive(cap_call_handle_t *chandle, sysarg_t *arg1,
    32073213    sysarg_t *arg2, sysarg_t *arg3)
    32083214{
     
    32253231}
    32263232
    3227 errno_t async_state_change_finalize(cap_handle_t chandle, async_exch_t *other_exch)
    3228 {
    3229         return ipc_answer_1(chandle, EOK, other_exch->phone);
     3233errno_t async_state_change_finalize(cap_call_handle_t chandle,
     3234    async_exch_t *other_exch)
     3235{
     3236        return ipc_answer_1(chandle, EOK, CAP_HANDLE_RAW(other_exch->phone));
    32303237}
    32313238
  • uspace/lib/c/generic/ipc.c

    r874381a readaeae8  
    129129 * @param callback  Answer or error callback.
    130130 */
    131 void ipc_call_async_fast(cap_handle_t phandle, sysarg_t imethod, sysarg_t arg1,
    132     sysarg_t arg2, sysarg_t arg3, void *private, ipc_async_callback_t callback)
     131void ipc_call_async_fast(cap_phone_handle_t phandle, sysarg_t imethod,
     132    sysarg_t arg1, sysarg_t arg2, sysarg_t arg3, void *private,
     133    ipc_async_callback_t callback)
    133134{
    134135        async_call_t *call = ipc_prepare_async(private, callback);
     
    136137                return;
    137138
    138         errno_t rc = (errno_t) __SYSCALL6(SYS_IPC_CALL_ASYNC_FAST, phandle, imethod, arg1,
    139             arg2, arg3, (sysarg_t) call);
     139        errno_t rc = (errno_t) __SYSCALL6(SYS_IPC_CALL_ASYNC_FAST,
     140            CAP_HANDLE_RAW(phandle), imethod, arg1, arg2, arg3,
     141            (sysarg_t) call);
    140142
    141143        ipc_finish_async(rc, call);
     
    160162 * @param callback  Answer or error callback.
    161163 */
    162 void ipc_call_async_slow(int phandle, sysarg_t imethod, sysarg_t arg1,
    163     sysarg_t arg2, sysarg_t arg3, sysarg_t arg4, sysarg_t arg5, void *private,
    164     ipc_async_callback_t callback)
     164void ipc_call_async_slow(cap_phone_handle_t phandle, sysarg_t imethod,
     165    sysarg_t arg1, sysarg_t arg2, sysarg_t arg3, sysarg_t arg4, sysarg_t arg5,
     166    void *private, ipc_async_callback_t callback)
    165167{
    166168        async_call_t *call = ipc_prepare_async(private, callback);
     
    175177        IPC_SET_ARG5(call->msg.data, arg5);
    176178
    177         errno_t rc = (errno_t) __SYSCALL3(SYS_IPC_CALL_ASYNC_SLOW, phandle,
    178             (sysarg_t) &call->msg.data, (sysarg_t) call);
     179        errno_t rc = (errno_t) __SYSCALL3(SYS_IPC_CALL_ASYNC_SLOW,
     180            CAP_HANDLE_RAW(phandle), (sysarg_t) &call->msg.data,
     181            (sysarg_t) call);
    179182
    180183        ipc_finish_async(rc, call);
     
    197200 *
    198201 */
    199 errno_t ipc_answer_fast(cap_handle_t chandle, errno_t retval, sysarg_t arg1,
    200     sysarg_t arg2, sysarg_t arg3, sysarg_t arg4)
    201 {
    202         return (errno_t) __SYSCALL6(SYS_IPC_ANSWER_FAST, chandle, (sysarg_t) retval, arg1, arg2,
    203             arg3, arg4);
     202errno_t ipc_answer_fast(cap_call_handle_t chandle, errno_t retval,
     203    sysarg_t arg1, sysarg_t arg2, sysarg_t arg3, sysarg_t arg4)
     204{
     205        return (errno_t) __SYSCALL6(SYS_IPC_ANSWER_FAST,
     206            CAP_HANDLE_RAW(chandle), (sysarg_t) retval, arg1, arg2, arg3, arg4);
    204207}
    205208
     
    218221 *
    219222 */
    220 errno_t ipc_answer_slow(cap_handle_t chandle, errno_t retval, sysarg_t arg1,
    221     sysarg_t arg2, sysarg_t arg3, sysarg_t arg4, sysarg_t arg5)
     223errno_t ipc_answer_slow(cap_call_handle_t chandle, errno_t retval,
     224    sysarg_t arg1, sysarg_t arg2, sysarg_t arg3, sysarg_t arg4, sysarg_t arg5)
    222225{
    223226        ipc_call_t data;
     
    230233        IPC_SET_ARG5(data, arg5);
    231234
    232         return (errno_t) __SYSCALL2(SYS_IPC_ANSWER_SLOW, chandle, (sysarg_t) &data);
     235        return (errno_t) __SYSCALL2(SYS_IPC_ANSWER_SLOW,
     236            CAP_HANDLE_RAW(chandle), (sysarg_t) &data);
    233237}
    234238
     
    251255/** Wait for first IPC call to come.
    252256 *
    253  * @param call   Incoming call storage.
    254  * @param usec   Timeout in microseconds
    255  * @param flags  Flags passed to SYS_IPC_WAIT (blocking, nonblocking).
    256  * @param[out] out_handle  Call handle.
     257 * @param[out] call   Storage for the received call.
     258 * @param[in]  usec   Timeout in microseconds
     259 * @param[in[  flags  Flags passed to SYS_IPC_WAIT (blocking, nonblocking).
    257260 *
    258261 * @return  Error code.
     
    260263errno_t ipc_wait_cycle(ipc_call_t *call, sysarg_t usec, unsigned int flags)
    261264{
    262         errno_t rc = (errno_t) __SYSCALL3(SYS_IPC_WAIT, (sysarg_t) call, usec, flags);
     265        errno_t rc = (errno_t) __SYSCALL3(SYS_IPC_WAIT, (sysarg_t) call, usec,
     266            flags);
    263267
    264268        /* Handle received answers */
     
    295299        do {
    296300                rc = ipc_wait_cycle(call, usec, SYNCH_FLAGS_NONE);
    297         } while ((rc == EOK) && (call->cap_handle == CAP_NIL) && (call->flags & IPC_CALL_ANSWERED));
     301        } while ((rc == EOK) && (call->cap_handle == CAP_NIL) &&
     302            (call->flags & IPC_CALL_ANSWERED));
    298303
    299304        return rc;
     
    316321                rc = ipc_wait_cycle(call, SYNCH_NO_TIMEOUT,
    317322                    SYNCH_FLAGS_NON_BLOCKING);
    318         } while ((rc == EOK) && (call->cap_handle == CAP_NIL) && (call->flags & IPC_CALL_ANSWERED));
     323        } while ((rc == EOK) && (call->cap_handle == CAP_NIL) &&
     324            (call->flags & IPC_CALL_ANSWERED));
    319325
    320326        return rc;
     
    328334 *
    329335 */
    330 errno_t ipc_hangup(cap_handle_t phandle)
    331 {
    332         return (errno_t) __SYSCALL1(SYS_IPC_HANGUP, phandle);
     336errno_t ipc_hangup(cap_phone_handle_t phandle)
     337{
     338        return (errno_t) __SYSCALL1(SYS_IPC_HANGUP, CAP_HANDLE_RAW(phandle));
    333339}
    334340
     
    350356 *
    351357 */
    352 errno_t ipc_forward_fast(cap_handle_t chandle, cap_handle_t phandle,
     358errno_t ipc_forward_fast(cap_call_handle_t chandle, cap_phone_handle_t phandle,
    353359    sysarg_t imethod, sysarg_t arg1, sysarg_t arg2, unsigned int mode)
    354360{
    355         return (errno_t) __SYSCALL6(SYS_IPC_FORWARD_FAST, chandle, phandle, imethod, arg1,
     361        return (errno_t) __SYSCALL6(SYS_IPC_FORWARD_FAST,
     362            CAP_HANDLE_RAW(chandle), CAP_HANDLE_RAW(phandle), imethod, arg1,
    356363            arg2, mode);
    357364}
    358365
    359 errno_t ipc_forward_slow(cap_handle_t chandle, cap_handle_t phandle,
     366errno_t ipc_forward_slow(cap_call_handle_t chandle, cap_phone_handle_t phandle,
    360367    sysarg_t imethod, sysarg_t arg1, sysarg_t arg2, sysarg_t arg3,
    361368    sysarg_t arg4, sysarg_t arg5, unsigned int mode)
     
    370377        IPC_SET_ARG5(data, arg5);
    371378
    372         return (errno_t) __SYSCALL4(SYS_IPC_FORWARD_SLOW, chandle, phandle,
    373             (sysarg_t) &data, mode);
     379        return (errno_t) __SYSCALL4(SYS_IPC_FORWARD_SLOW,
     380            CAP_HANDLE_RAW(chandle), CAP_HANDLE_RAW(phandle), (sysarg_t) &data,
     381            mode);
    374382}
    375383
     
    377385 *
    378386 */
    379 errno_t ipc_connect_kbox(task_id_t id, cap_handle_t *phone)
     387errno_t ipc_connect_kbox(task_id_t id, cap_phone_handle_t *phone)
    380388{
    381389        return (errno_t) __SYSCALL2(SYS_IPC_CONNECT_KBOX, (sysarg_t) &id, (sysarg_t) phone);
  • uspace/lib/c/generic/irq.c

    r874381a readaeae8  
    6464 */
    6565errno_t ipc_irq_subscribe(int inr, sysarg_t method, const irq_code_t *ucode,
    66     cap_handle_t *out_handle)
     66    cap_irq_handle_t *out_handle)
    6767{
    6868        if (ucode == NULL)
    6969                ucode = &default_ucode;
    7070
    71         return (errno_t) __SYSCALL4(SYS_IPC_IRQ_SUBSCRIBE, inr, method, (sysarg_t) ucode,
    72             (sysarg_t) out_handle);
     71        return (errno_t) __SYSCALL4(SYS_IPC_IRQ_SUBSCRIBE, inr, method,
     72            (sysarg_t) ucode, (sysarg_t) out_handle);
    7373}
    7474
     
    8080 *
    8181 */
    82 errno_t ipc_irq_unsubscribe(cap_handle_t cap)
     82errno_t ipc_irq_unsubscribe(cap_irq_handle_t cap)
    8383{
    84         return (errno_t) __SYSCALL1(SYS_IPC_IRQ_UNSUBSCRIBE, cap);
     84        return (errno_t) __SYSCALL1(SYS_IPC_IRQ_UNSUBSCRIBE,
     85            CAP_HANDLE_RAW(cap));
    8586}
    8687
  • uspace/lib/c/include/async.h

    r874381a readaeae8  
    6666 *
    6767 */
    68 typedef void (*async_port_handler_t)(cap_handle_t, ipc_call_t *, void *);
     68typedef void (*async_port_handler_t)(cap_call_handle_t, ipc_call_t *, void *);
    6969
    7070/** Notification handler */
     
    119119        async_get_call_timeout(data, 0)
    120120
    121 extern cap_handle_t async_get_call_timeout(ipc_call_t *, suseconds_t);
     121extern cap_call_handle_t async_get_call_timeout(ipc_call_t *, suseconds_t);
    122122
    123123/*
     
    169169
    170170extern errno_t async_irq_subscribe(int, async_notification_handler_t, void *,
    171     const irq_code_t *, cap_handle_t *);
    172 extern errno_t async_irq_unsubscribe(cap_handle_t);
     171    const irq_code_t *, cap_irq_handle_t *);
     172extern errno_t async_irq_unsubscribe(cap_irq_handle_t);
    173173
    174174extern errno_t async_event_subscribe(event_type_t, async_notification_handler_t,
     
    198198 */
    199199
    200 extern errno_t async_answer_0(cap_handle_t, errno_t);
    201 extern errno_t async_answer_1(cap_handle_t, errno_t, sysarg_t);
    202 extern errno_t async_answer_2(cap_handle_t, errno_t, sysarg_t, sysarg_t);
    203 extern errno_t async_answer_3(cap_handle_t, errno_t, sysarg_t, sysarg_t,
     200extern errno_t async_answer_0(cap_call_handle_t, errno_t);
     201extern errno_t async_answer_1(cap_call_handle_t, errno_t, sysarg_t);
     202extern errno_t async_answer_2(cap_call_handle_t, errno_t, sysarg_t, sysarg_t);
     203extern errno_t async_answer_3(cap_call_handle_t, errno_t, sysarg_t, sysarg_t,
    204204    sysarg_t);
    205 extern errno_t async_answer_4(cap_handle_t, errno_t, sysarg_t, sysarg_t,
     205extern errno_t async_answer_4(cap_call_handle_t, errno_t, sysarg_t, sysarg_t,
    206206    sysarg_t, sysarg_t);
    207 extern errno_t async_answer_5(cap_handle_t, errno_t, sysarg_t, sysarg_t,
     207extern errno_t async_answer_5(cap_call_handle_t, errno_t, sysarg_t, sysarg_t,
    208208    sysarg_t, sysarg_t, sysarg_t);
    209209
     
    212212 */
    213213
    214 extern errno_t async_forward_fast(cap_handle_t, async_exch_t *, sysarg_t, sysarg_t,
    215     sysarg_t, unsigned int);
    216 extern errno_t async_forward_slow(cap_handle_t, async_exch_t *, sysarg_t, sysarg_t,
    217     sysarg_t, sysarg_t, sysarg_t, sysarg_t, unsigned int);
     214extern errno_t async_forward_fast(cap_call_handle_t, async_exch_t *, sysarg_t,
     215    sysarg_t, sysarg_t, unsigned int);
     216extern errno_t async_forward_slow(cap_call_handle_t, async_exch_t *, sysarg_t,
     217    sysarg_t, sysarg_t, sysarg_t, sysarg_t, sysarg_t, unsigned int);
    218218
    219219/*
     
    384384extern errno_t async_share_in_start(async_exch_t *, size_t, sysarg_t,
    385385    unsigned int *, void **);
    386 extern bool async_share_in_receive(cap_handle_t *, size_t *);
    387 extern errno_t async_share_in_finalize(cap_handle_t, void *, unsigned int);
     386extern bool async_share_in_receive(cap_call_handle_t *, size_t *);
     387extern errno_t async_share_in_finalize(cap_call_handle_t, void *, unsigned int);
    388388
    389389extern errno_t async_share_out_start(async_exch_t *, void *, unsigned int);
    390 extern bool async_share_out_receive(cap_handle_t *, size_t *, unsigned int *);
    391 extern errno_t async_share_out_finalize(cap_handle_t, void **);
     390extern bool async_share_out_receive(cap_call_handle_t *, size_t *,
     391    unsigned int *);
     392extern errno_t async_share_out_finalize(cap_call_handle_t, void **);
    392393
    393394/*
     
    423424extern aid_t async_data_read(async_exch_t *, void *, size_t, ipc_call_t *);
    424425extern errno_t async_data_read_start(async_exch_t *, void *, size_t);
    425 extern bool async_data_read_receive(cap_handle_t *, size_t *);
    426 extern bool async_data_read_receive_call(cap_handle_t *, ipc_call_t *, size_t *);
    427 extern errno_t async_data_read_finalize(cap_handle_t, const void *, size_t);
     426extern bool async_data_read_receive(cap_call_handle_t *, size_t *);
     427extern bool async_data_read_receive_call(cap_call_handle_t *, ipc_call_t *,
     428    size_t *);
     429extern errno_t async_data_read_finalize(cap_call_handle_t, const void *,
     430    size_t);
    428431
    429432extern errno_t async_data_read_forward_fast(async_exch_t *, sysarg_t, sysarg_t,
     
    462465
    463466extern errno_t async_data_write_start(async_exch_t *, const void *, size_t);
    464 extern bool async_data_write_receive(cap_handle_t *, size_t *);
    465 extern bool async_data_write_receive_call(cap_handle_t *, ipc_call_t *, size_t *);
    466 extern errno_t async_data_write_finalize(cap_handle_t, void *, size_t);
     467extern bool async_data_write_receive(cap_call_handle_t *, size_t *);
     468extern bool async_data_write_receive_call(cap_call_handle_t *, ipc_call_t *,
     469    size_t *);
     470extern errno_t async_data_write_finalize(cap_call_handle_t, void *, size_t);
    467471
    468472extern errno_t async_data_write_accept(void **, const bool, const size_t,
     
    478482extern errno_t async_state_change_start(async_exch_t *, sysarg_t, sysarg_t,
    479483    sysarg_t, async_exch_t *);
    480 extern bool async_state_change_receive(cap_handle_t *, sysarg_t *, sysarg_t *,
    481     sysarg_t *);
    482 extern errno_t async_state_change_finalize(cap_handle_t, async_exch_t *);
     484extern bool async_state_change_receive(cap_call_handle_t *, sysarg_t *,
     485    sysarg_t *, sysarg_t *);
     486extern errno_t async_state_change_finalize(cap_call_handle_t, async_exch_t *);
    483487
    484488extern void *async_remote_state_acquire(async_sess_t *);
  • uspace/lib/c/include/ipc/common.h

    r874381a readaeae8  
    5252        unsigned flags;
    5353        struct async_call *label;
    54         cap_handle_t cap_handle;
     54        cap_call_handle_t cap_handle;
    5555} ipc_call_t;
    5656
    57 typedef cap_handle_t ipc_callid_t;
     57typedef cap_call_handle_t ipc_callid_t;
    5858
    5959extern futex_t async_futex;
  • uspace/lib/c/include/ipc/ipc.h

    r874381a readaeae8  
    7878            (arg5))
    7979
    80 extern errno_t ipc_answer_fast(cap_handle_t, errno_t, sysarg_t, sysarg_t,
     80extern errno_t ipc_answer_fast(cap_call_handle_t, errno_t, sysarg_t, sysarg_t,
    8181    sysarg_t, sysarg_t);
    82 extern errno_t ipc_answer_slow(cap_handle_t, errno_t, sysarg_t, sysarg_t,
     82extern errno_t ipc_answer_slow(cap_call_handle_t, errno_t, sysarg_t, sysarg_t,
    8383    sysarg_t, sysarg_t, sysarg_t);
    8484
     
    110110            (arg4), (arg5), (private), (callback))
    111111
    112 extern void ipc_call_async_fast(cap_handle_t, sysarg_t, sysarg_t, sysarg_t,
    113     sysarg_t, void *, ipc_async_callback_t);
    114 extern void ipc_call_async_slow(cap_handle_t, sysarg_t, sysarg_t, sysarg_t,
    115     sysarg_t, sysarg_t, sysarg_t, void *, ipc_async_callback_t);
     112extern void ipc_call_async_fast(cap_phone_handle_t, sysarg_t, sysarg_t,
     113    sysarg_t, sysarg_t, void *, ipc_async_callback_t);
     114extern void ipc_call_async_slow(cap_phone_handle_t, sysarg_t, sysarg_t,
     115    sysarg_t, sysarg_t, sysarg_t, sysarg_t, void *, ipc_async_callback_t);
    116116
    117 extern errno_t ipc_hangup(cap_handle_t);
     117extern errno_t ipc_hangup(cap_phone_handle_t);
    118118
    119 extern errno_t ipc_forward_fast(cap_handle_t, cap_handle_t, sysarg_t, sysarg_t,
    120     sysarg_t, unsigned int);
    121 extern errno_t ipc_forward_slow(cap_handle_t, cap_handle_t, sysarg_t, sysarg_t,
    122     sysarg_t, sysarg_t, sysarg_t, sysarg_t, unsigned int);
     119extern errno_t ipc_forward_fast(cap_call_handle_t, cap_phone_handle_t, sysarg_t,
     120    sysarg_t, sysarg_t, unsigned int);
     121extern errno_t ipc_forward_slow(cap_call_handle_t, cap_phone_handle_t, sysarg_t,
     122    sysarg_t, sysarg_t, sysarg_t, sysarg_t, sysarg_t, unsigned int);
    123123
    124 extern errno_t ipc_connect_kbox(task_id_t, cap_handle_t *);
     124extern errno_t ipc_connect_kbox(task_id_t, cap_phone_handle_t *);
    125125
    126126#endif
  • uspace/lib/c/include/ipc/irq.h

    r874381a readaeae8  
    4040#include <abi/cap.h>
    4141
    42 extern errno_t ipc_irq_subscribe(int, sysarg_t, const irq_code_t *, cap_handle_t *);
    43 extern errno_t ipc_irq_unsubscribe(cap_handle_t);
     42extern errno_t ipc_irq_subscribe(int, sysarg_t, const irq_code_t *,
     43    cap_irq_handle_t *);
     44extern errno_t ipc_irq_unsubscribe(cap_irq_handle_t);
    4445
    4546#endif
Note: See TracChangeset for help on using the changeset viewer.