Ignore:
File:
1 edited

Legend:

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

    r21d3201 r01900b6  
    4646#include "private/loader.h"
    4747
    48 /** Connect to a new program loader.
    49  *
    50  * Spawns a new program loader task and returns the connection structure.
     48/** Spawn a new program loader.
     49 *
     50 * Spawn a new program loader task. The loader then independetly
     51 * connects to the naming service.
    5152 *
    5253 * @param name Symbolic name to set on the newly created task.
    5354 *
    5455 * @return Error code.
     56 *
    5557 */
    5658errno_t loader_spawn(const char *name)
     
    6062}
    6163
    62 loader_t *loader_connect(void)
     64/** Connect to a program loader.
     65 *
     66 * @param rc Placeholder for return code. Unused if NULL.
     67 *
     68 * @return Loader structure.
     69 *
     70 */
     71loader_t *loader_connect(errno_t *rc)
    6372{
    6473        loader_t *ldr = malloc(sizeof(loader_t));
     
    6776
    6877        async_sess_t *sess =
    69             service_connect_blocking(SERVICE_LOADER, INTERFACE_LOADER, 0);
     78            service_connect_blocking(SERVICE_LOADER, INTERFACE_LOADER, 0, rc);
    7079        if (sess == NULL) {
    7180                free(ldr);
     
    345354}
    346355
     356/** Instruct loader to execute the program and do not wait for reply.
     357 *
     358 * This function does not block even if the loaded task is stopped
     359 * for debugging.
     360 *
     361 * After using this function, no further operations can be performed
     362 * on the loader structure and it is deallocated.
     363 *
     364 * @param ldr Loader connection structure.
     365 *
     366 * @return Zero on success or an error code.
     367 *
     368 */
     369void loader_run_nowait(loader_t *ldr)
     370{
     371        async_exch_t *exch = async_exchange_begin(ldr->sess);
     372        async_msg_0(exch, LOADER_RUN);
     373        async_exchange_end(exch);
     374
     375        async_hangup(ldr->sess);
     376        free(ldr);
     377}
     378
    347379/** Cancel the loader session.
    348380 *
Note: See TracChangeset for help on using the changeset viewer.