Changeset 012dd8e in mainline for uspace/lib/c/generic/libc.c


Ignore:
Timestamp:
2019-08-07T09:15:30Z (5 years ago)
Author:
Matthieu Riolo <matthieu.riolo@…>
Children:
e8747bd8
Parents:
780c8ce
git-author:
Michal Koutný <xm.koutny+hos@…> (2015-11-01 00:08:04)
git-committer:
Matthieu Riolo <matthieu.riolo@…> (2019-08-07 09:15:30)
Message:

taskman: Handle INIT_TASKS as tasks spawned by loader

  • everyone is connected to its spawner, except for INIT_TASKS, they are connected to taskman (first binary)
  • taskman is now aware even of INIT_TASKS and taskman itself
  • refactored taskman handshake — NS session is created lazily
  • refactored async.c with usage of create_session
  • changed EINVAL to EINTR on lost waits
  • removed TODOs from taskman and related libc TODOs

Conflicts:

abi/include/abi/ipc/methods.h
boot/Makefile.common
uspace/lib/c/generic/async.c
uspace/lib/c/generic/libc.c
uspace/lib/c/generic/loader.c
uspace/lib/c/generic/ns.c
uspace/lib/c/generic/private/async.h
uspace/lib/c/generic/private/taskman.h
uspace/lib/c/generic/task.c
uspace/lib/c/include/async.h
uspace/lib/c/include/task.h
uspace/srv/loader/main.c
uspace/srv/ns/ns.c

File:
1 edited

Legend:

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

    r780c8ce r012dd8e  
    5151#include "private/fibril.h"
    5252#include "private/malloc.h"
    53 #include "private/ns.h" // TODO maybe better filename for session_primary
    5453#include "private/task.h"
     54#include "private/taskman.h"
    5555
    5656
     
    6363static bool env_setup;
    6464static fibril_t main_fibril;
     65
     66static void initialize_taskman(pcb_t *pcb)
     67{
     68        if (__pcb == NULL) {
     69                async_sess_t *session_tm = taskman_connect();
     70                if (session_tm == NULL) {
     71                        abort();
     72                }
     73                __task_init(session_tm);
     74        } else {
     75                __task_init(__pcb->session_taskman);
     76        }
     77}
    6578
    6679void __libc_main(void *pcb_ptr)
     
    107120#endif
    108121       
    109         /* Setup async framework */
     122        /* Setup async framework and taskman connection */
    110123        __async_server_init();
    111         if (__pcb == NULL) {
    112                 __async_client_init(NULL);
    113                 __task_init(NULL);
    114         } else {
    115                 __async_client_init(__pcb->session_primary);
    116                 __task_init(__pcb->session_taskman);
    117         }
     124        __async_client_init();
    118125        __async_ports_init();
     126        initialize_taskman(__pcb);
    119127
    120128        /* The basic run-time environment is setup */
Note: See TracChangeset for help on using the changeset viewer.