Changeset 984a9ba in mainline for uspace/lib/c/include/async.h


Ignore:
Timestamp:
2018-07-05T09:34:09Z (6 years ago)
Author:
Martin Decky <martin@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
63d46341
Parents:
76f566d
Message:

do not expose the call capability handler from the async framework

Keep the call capability handler encapsulated within the async framework
and do not expose it explicitly via its API. Use the pointer to
ipc_call_t as the sole object identifying an IPC call in the code that
uses the async framework.

This plugs a major leak in the abstraction and also simplifies both the
async framework (slightly) and all IPC servers.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • uspace/lib/c/include/async.h

    r76f566d r984a9ba  
    6161/** Port connection handler
    6262 *
    63  * @param chandle  Handle of the incoming call or CAP_NIL if connection
    64  *                 initiated from inside using async_create_callback_port()
    65  * @param call     Incoming call or 0 if connection initiated from inside
    66  *                 using async_create_callback_port()
    67  * @param arg      Local argument.
    68  *
    69  */
    70 typedef void (*async_port_handler_t)(cap_call_handle_t, ipc_call_t *, void *);
     63 * @param call Incoming call or NULL if connection initiated from inside
     64 *             using async_create_callback_port()
     65 * @param arg  Local argument.
     66 *
     67 */
     68typedef void (*async_port_handler_t)(ipc_call_t *, void *);
    7169
    7270/** Notification handler */
     
    115113        async_get_call_timeout(data, 0)
    116114
    117 extern cap_call_handle_t async_get_call_timeout(ipc_call_t *, suseconds_t);
     115extern bool async_get_call_timeout(ipc_call_t *, suseconds_t);
    118116
    119117/*
     
    194192 */
    195193
    196 extern errno_t async_answer_0(cap_call_handle_t, errno_t);
    197 extern errno_t async_answer_1(cap_call_handle_t, errno_t, sysarg_t);
    198 extern errno_t async_answer_2(cap_call_handle_t, errno_t, sysarg_t, sysarg_t);
    199 extern errno_t async_answer_3(cap_call_handle_t, errno_t, sysarg_t, sysarg_t,
     194extern errno_t async_answer_0(ipc_call_t *, errno_t);
     195extern errno_t async_answer_1(ipc_call_t *, errno_t, sysarg_t);
     196extern errno_t async_answer_2(ipc_call_t *, errno_t, sysarg_t, sysarg_t);
     197extern errno_t async_answer_3(ipc_call_t *, errno_t, sysarg_t, sysarg_t,
    200198    sysarg_t);
    201 extern errno_t async_answer_4(cap_call_handle_t, errno_t, sysarg_t, sysarg_t,
     199extern errno_t async_answer_4(ipc_call_t *, errno_t, sysarg_t, sysarg_t,
    202200    sysarg_t, sysarg_t);
    203 extern errno_t async_answer_5(cap_call_handle_t, errno_t, sysarg_t, sysarg_t,
     201extern errno_t async_answer_5(ipc_call_t *, errno_t, sysarg_t, sysarg_t,
    204202    sysarg_t, sysarg_t, sysarg_t);
    205203
     
    208206 */
    209207
    210 extern errno_t async_forward_fast(cap_call_handle_t, async_exch_t *, sysarg_t,
     208extern errno_t async_forward_fast(ipc_call_t *, async_exch_t *, sysarg_t,
    211209    sysarg_t, sysarg_t, unsigned int);
    212 extern errno_t async_forward_slow(cap_call_handle_t, async_exch_t *, sysarg_t,
     210extern errno_t async_forward_slow(ipc_call_t *, async_exch_t *, sysarg_t,
    213211    sysarg_t, sysarg_t, sysarg_t, sysarg_t, sysarg_t, unsigned int);
    214212
     
    380378extern errno_t async_share_in_start(async_exch_t *, size_t, sysarg_t,
    381379    unsigned int *, void **);
    382 extern bool async_share_in_receive(cap_call_handle_t *, size_t *);
    383 extern errno_t async_share_in_finalize(cap_call_handle_t, void *, unsigned int);
     380extern bool async_share_in_receive(ipc_call_t *, size_t *);
     381extern errno_t async_share_in_finalize(ipc_call_t *, void *, unsigned int);
    384382
    385383extern errno_t async_share_out_start(async_exch_t *, void *, unsigned int);
    386 extern bool async_share_out_receive(cap_call_handle_t *, size_t *,
    387     unsigned int *);
    388 extern errno_t async_share_out_finalize(cap_call_handle_t, void **);
     384extern bool async_share_out_receive(ipc_call_t *, size_t *, unsigned int *);
     385extern errno_t async_share_out_finalize(ipc_call_t *, void **);
    389386
    390387/*
     
    420417extern aid_t async_data_read(async_exch_t *, void *, size_t, ipc_call_t *);
    421418extern errno_t async_data_read_start(async_exch_t *, void *, size_t);
    422 extern bool async_data_read_receive(cap_call_handle_t *, size_t *);
    423 extern bool async_data_read_receive_call(cap_call_handle_t *, ipc_call_t *,
    424     size_t *);
    425 extern errno_t async_data_read_finalize(cap_call_handle_t, const void *,
    426     size_t);
     419extern bool async_data_read_receive(ipc_call_t *, size_t *);
     420extern errno_t async_data_read_finalize(ipc_call_t *, const void *, size_t);
    427421
    428422extern errno_t async_data_read_forward_fast(async_exch_t *, sysarg_t, sysarg_t,
     
    461455
    462456extern errno_t async_data_write_start(async_exch_t *, const void *, size_t);
    463 extern bool async_data_write_receive(cap_call_handle_t *, size_t *);
    464 extern bool async_data_write_receive_call(cap_call_handle_t *, ipc_call_t *,
    465     size_t *);
    466 extern errno_t async_data_write_finalize(cap_call_handle_t, void *, size_t);
     457extern bool async_data_write_receive(ipc_call_t *, size_t *);
     458extern errno_t async_data_write_finalize(ipc_call_t *, void *, size_t);
    467459
    468460extern errno_t async_data_write_accept(void **, const bool, const size_t,
     
    478470extern errno_t async_state_change_start(async_exch_t *, sysarg_t, sysarg_t,
    479471    sysarg_t, async_exch_t *);
    480 extern bool async_state_change_receive(cap_call_handle_t *, sysarg_t *,
    481     sysarg_t *, sysarg_t *);
    482 extern errno_t async_state_change_finalize(cap_call_handle_t, async_exch_t *);
     472extern bool async_state_change_receive(ipc_call_t *);
     473extern errno_t async_state_change_finalize(ipc_call_t *, async_exch_t *);
    483474
    484475extern void *async_remote_state_acquire(async_sess_t *);
Note: See TracChangeset for help on using the changeset viewer.