Changes in uspace/app/init/init.c [0485135:7bbc389] in mainline


Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • uspace/app/init/init.c

    r0485135 r7bbc389  
    124124static void spawn(const char *fname)
    125125{
    126         int rc;
     126        const char *argv[2];
    127127        struct stat s;
    128128       
     
    131131       
    132132        printf("%s: Spawning %s\n", NAME, fname);
    133         rc = task_spawnl(NULL, fname, fname, NULL);
    134         if (rc != EOK) {
     133       
     134        argv[0] = fname;
     135        argv[1] = NULL;
     136       
     137        int err;
     138        if (!task_spawn(fname, argv, &err))
    135139                printf("%s: Error spawning %s (%s)\n", NAME, fname,
    136                     str_error(rc));
    137         }
     140                    str_error(err));
    138141}
    139142
    140143static void srv_start(const char *fname)
    141144{
     145        const char *argv[2];
    142146        task_id_t id;
    143147        task_exit_t texit;
     
    149153       
    150154        printf("%s: Starting %s\n", NAME, fname);
    151         rc = task_spawnl(&id, fname, fname, NULL);
     155       
     156        argv[0] = fname;
     157        argv[1] = NULL;
     158       
     159        id = task_spawn(fname, argv, &retval);
    152160        if (!id) {
    153161                printf("%s: Error spawning %s (%s)\n", NAME, fname,
    154                     str_error(rc));
     162                    str_error(retval));
    155163                return;
    156164        }
     
    159167        if (rc != EOK) {
    160168                printf("%s: Error waiting for %s (%s(\n", NAME, fname,
    161                     str_error(rc));
     169                    str_error(retval));
    162170                return;
    163171        }
    164172       
    165         if (texit != TASK_EXIT_NORMAL) {
    166                 printf("%s: Server %s failed to start (unexpectedly "
    167                     "terminated)\n", NAME, fname);
    168                 return;
    169         }
    170 
    171         if (retval != 0) {
    172                 printf("%s: Server %s failed to start (exit code %d)\n", NAME,
    173                         fname, retval);
     173        if ((texit != TASK_EXIT_NORMAL) || (retval != 0)) {
     174                printf("%s: Server %s failed to start (%s)\n", NAME,
     175                        fname, str_error(retval));
    174176        }
    175177}
     
    177179static void console(const char *dev)
    178180{
     181        const char *argv[3];
    179182        char hid_in[DEVMAP_NAME_MAXLEN];
    180183        int rc;
     
    187190        dev_handle_t handle;
    188191        rc = devmap_device_get_handle(dev, &handle, IPC_FLAG_BLOCKING);
    189         if (rc != EOK) {
     192       
     193        if (rc == EOK) {
     194                argv[0] = SRV_CONSOLE;
     195                argv[1] = hid_in;
     196                argv[2] = NULL;
     197               
     198                if (!task_spawn(SRV_CONSOLE, argv, &rc))
     199                        printf("%s: Error spawning %s %s (%s)\n", NAME, SRV_CONSOLE,
     200                            hid_in, str_error(rc));
     201        } else
    190202                printf("%s: Error waiting on %s (%s)\n", NAME, hid_in,
    191203                    str_error(rc));
    192                 return;
    193         }
    194        
    195         rc = task_spawnl(NULL, SRV_CONSOLE, SRV_CONSOLE, hid_in, NULL);
    196         if (rc != EOK) {
    197                 printf("%s: Error spawning %s %s (%s)\n", NAME, SRV_CONSOLE,
    198                     hid_in, str_error(rc));
    199         }
    200204}
    201205
    202206static void getterm(const char *dev, const char *app)
    203207{
     208        const char *argv[4];
    204209        char term[DEVMAP_NAME_MAXLEN];
    205210        int rc;
     
    212217        dev_handle_t handle;
    213218        rc = devmap_device_get_handle(dev, &handle, IPC_FLAG_BLOCKING);
    214         if (rc != EOK) {
     219       
     220        if (rc == EOK) {
     221                argv[0] = APP_GETTERM;
     222                argv[1] = term;
     223                argv[2] = app;
     224                argv[3] = NULL;
     225               
     226                if (!task_spawn(APP_GETTERM, argv, &rc))
     227                        printf("%s: Error spawning %s %s %s (%s)\n", NAME, APP_GETTERM,
     228                            term, app, str_error(rc));
     229        } else
    215230                printf("%s: Error waiting on %s (%s)\n", NAME, term,
    216231                    str_error(rc));
    217                 return;
    218         }
    219        
    220         rc = task_spawnl(NULL, APP_GETTERM, APP_GETTERM, term, app, NULL);
    221         if (rc != EOK) {
    222                 printf("%s: Error spawning %s %s %s (%s)\n", NAME,
    223                     APP_GETTERM, term, app, str_error(rc));
    224         }
    225232}
    226233
Note: See TracChangeset for help on using the changeset viewer.