Changeset 01900b6 in mainline for uspace/lib/c/include


Ignore:
Timestamp:
2020-01-21T15:10:26Z (6 years ago)
Author:
Martin Decky <martin@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
51da086
Parents:
f8fb03b
Message:

Use an optional output argument instead of errno to propagate the error

The use of errno is troublesome in all other than top-level library
functions since the value in errno might get overwritten by subsequent
inner calls on the error path (e.g. cleanup, deallocation, etc.). The
optional output argument makes it possible to explicitly ignore the
error code if it is not needed, but still to pass it reliably back to
the original caller.

This change affecs async_connect_me_to(),
async_connect_me_to_blocking(), async_connect_kbox(), service_connect(),
service_connect_blocking() and loader_connect().

Location:
uspace/lib/c/include
Files:
3 edited

Legend:

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

    rf8fb03b r01900b6  
    275275
    276276extern async_sess_t *async_connect_me_to(async_exch_t *, iface_t, sysarg_t,
    277     sysarg_t);
     277    sysarg_t, errno_t *);
    278278extern async_sess_t *async_connect_me_to_blocking(async_exch_t *, iface_t,
    279     sysarg_t, sysarg_t);
    280 extern async_sess_t *async_connect_kbox(task_id_t);
     279    sysarg_t, sysarg_t, errno_t *);
     280extern async_sess_t *async_connect_kbox(task_id_t, errno_t *);
    281281
    282282extern errno_t async_connect_to_me(async_exch_t *, iface_t, sysarg_t, sysarg_t);
  • uspace/lib/c/include/loader/loader.h

    rf8fb03b r01900b6  
    4444
    4545extern errno_t loader_spawn(const char *);
    46 extern loader_t *loader_connect(void);
     46extern loader_t *loader_connect(errno_t *);
    4747extern errno_t loader_get_task_id(loader_t *, task_id_t *);
    4848extern errno_t loader_set_cwd(loader_t *);
  • uspace/lib/c/include/ns.h

    rf8fb03b r01900b6  
    4343    void *);
    4444extern errno_t service_register_broker(service_t, async_port_handler_t, void *);
    45 extern async_sess_t *service_connect(service_t, iface_t, sysarg_t);
    46 extern async_sess_t *service_connect_blocking(service_t, iface_t, sysarg_t);
     45extern async_sess_t *service_connect(service_t, iface_t, sysarg_t, errno_t *);
     46extern async_sess_t *service_connect_blocking(service_t, iface_t, sysarg_t,
     47    errno_t *);
    4748
    4849extern errno_t ns_ping(void);
    4950extern errno_t ns_intro(task_id_t);
    50 extern async_sess_t *ns_session_get(void);
     51extern async_sess_t *ns_session_get(errno_t *);
    5152
    5253#endif
Note: See TracChangeset for help on using the changeset viewer.