Changes in uspace/app/init/init.c [31e9fe0:73d8600] in mainline


Ignore:
File:
1 edited

Legend:

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

    r31e9fe0 r73d8600  
    4949#include <loc.h>
    5050#include <str_error.h>
     51#include <config.h>
    5152#include "init.h"
    5253
     
    5960#define TMPFS_FS_TYPE      "tmpfs"
    6061#define TMPFS_MOUNT_POINT  "/tmp"
    61 
    62 #define DATA_FS_TYPE      "fat"
    63 #define DATA_DEVICE       "bd/ata1disk0"
    64 #define DATA_MOUNT_POINT  "/data"
    6562
    6663#define SRV_CONSOLE  "/srv/console"
     
    130127                opts = "restore";
    131128       
    132         int rc = mount(fstype, ROOT_MOUNT_POINT, ROOT_DEVICE, opts,
     129        int rc = vfs_mount(fstype, ROOT_MOUNT_POINT, ROOT_DEVICE, opts,
    133130            IPC_FLAG_BLOCKING, 0);
    134131        return mount_report("Root filesystem", ROOT_MOUNT_POINT, fstype,
     
    147144static bool mount_locfs(void)
    148145{
    149         int rc = mount(LOCFS_FS_TYPE, LOCFS_MOUNT_POINT, "", "",
     146        int rc = vfs_mount(LOCFS_FS_TYPE, LOCFS_MOUNT_POINT, "", "",
    150147            IPC_FLAG_BLOCKING, 0);
    151148        return mount_report("Location service filesystem", LOCFS_MOUNT_POINT,
     
    156153{
    157154        struct stat s;
    158         if (stat(path, &s) == ENOENT) {
     155        if (stat(path, &s) != 0) {
    159156                printf("%s: Unable to stat %s\n", NAME, path);
    160157                return ENOENT;
     
    176173        va_start(ap, path);
    177174        task_id_t id;
    178         int rc = task_spawn(&id, path, cnt, ap);
     175        task_wait_t wait;
     176        int rc = task_spawn(&id, &wait, path, cnt, ap);
    179177        va_end(ap);
    180178       
     
    193191        task_exit_t texit;
    194192        int retval;
    195         rc = task_wait(id, &texit, &retval);
     193        rc = task_wait(&wait, &texit, &retval);
    196194        if (rc != EOK) {
    197195                printf("%s: Error waiting for %s (%s)\n", NAME, path,
     
    257255       
    258256        task_id_t id;
    259         int rc = task_spawnl(&id, app, app, winreg, NULL);
     257        task_wait_t wait;
     258        int rc = task_spawnl(&id, &wait, app, app, winreg, NULL);
    260259        if (rc != EOK) {
    261260                printf("%s: Error spawning %s %s (%s)\n", NAME, app,
     
    266265        task_exit_t texit;
    267266        int retval;
    268         rc = task_wait(id, &texit, &retval);
     267        rc = task_wait(&wait, &texit, &retval);
    269268        if ((rc != EOK) || (texit != TASK_EXIT_NORMAL)) {
    270269                printf("%s: Error retrieving retval from %s (%s)\n", NAME,
     
    276275}
    277276
    278 static void getterm(const char *svc, const char *app, bool wmsg)
    279 {
    280         char term[LOC_NAME_MAXLEN];
    281         snprintf(term, LOC_NAME_MAXLEN, "%s/%s", LOCFS_MOUNT_POINT, svc);
    282        
    283         printf("%s: Spawning %s %s %s\n", NAME, APP_GETTERM, term, app);
    284        
    285         /* Wait for the terminal service to be ready */
    286         service_id_t service_id;
    287         int rc = loc_service_get_id(svc, &service_id, IPC_FLAG_BLOCKING);
    288         if (rc != EOK) {
    289                 printf("%s: Error waiting on %s (%s)\n", NAME, term,
    290                     str_error(rc));
    291                 return;
    292         }
    293        
    294         if (wmsg) {
    295                 rc = task_spawnl(NULL, APP_GETTERM, APP_GETTERM, "-w", term,
    296                     app, NULL);
    297                 if (rc != EOK) {
    298                         printf("%s: Error spawning %s -w %s %s (%s)\n", NAME,
    299                             APP_GETTERM, term, app, str_error(rc));
    300                 }
     277static void getterm(const char *svc, const char *app, bool msg)
     278{
     279        if (msg) {
     280                printf("%s: Spawning %s %s %s --msg --wait -- %s\n", NAME,
     281                    APP_GETTERM, svc, LOCFS_MOUNT_POINT, app);
     282               
     283                int rc = task_spawnl(NULL, NULL, APP_GETTERM, APP_GETTERM, svc,
     284                    LOCFS_MOUNT_POINT, "--msg", "--wait", "--", app, NULL);
     285                if (rc != EOK)
     286                        printf("%s: Error spawning %s %s %s --msg --wait -- %s\n",
     287                            NAME, APP_GETTERM, svc, LOCFS_MOUNT_POINT, app);
    301288        } else {
    302                 rc = task_spawnl(NULL, APP_GETTERM, APP_GETTERM, term, app,
    303                     NULL);
    304                 if (rc != EOK) {
    305                         printf("%s: Error spawning %s %s %s (%s)\n", NAME,
    306                             APP_GETTERM, term, app, str_error(rc));
    307                 }
     289                printf("%s: Spawning %s %s %s --wait -- %s\n", NAME,
     290                    APP_GETTERM, svc, LOCFS_MOUNT_POINT, app);
     291               
     292                int rc = task_spawnl(NULL, NULL, APP_GETTERM, APP_GETTERM, svc,
     293                    LOCFS_MOUNT_POINT, "--wait", "--", app, NULL);
     294                if (rc != EOK)
     295                        printf("%s: Error spawning %s %s %s --wait -- %s\n",
     296                            NAME, APP_GETTERM, svc, LOCFS_MOUNT_POINT, app);
    308297        }
    309298}
     
    311300static bool mount_tmpfs(void)
    312301{
    313         int rc = mount(TMPFS_FS_TYPE, TMPFS_MOUNT_POINT, "", "", 0, 0);
     302        int rc = vfs_mount(TMPFS_FS_TYPE, TMPFS_MOUNT_POINT, "", "", 0, 0);
    314303        return mount_report("Temporary filesystem", TMPFS_MOUNT_POINT,
    315304            TMPFS_FS_TYPE, NULL, rc);
    316305}
    317306
    318 static bool mount_data(void)
    319 {
    320         int rc = mount(DATA_FS_TYPE, DATA_MOUNT_POINT, DATA_DEVICE, "wtcache", 0, 0);
    321         return mount_report("Data filesystem", DATA_MOUNT_POINT, DATA_FS_TYPE,
    322             DATA_DEVICE, rc);
    323 }
    324 
    325307int main(int argc, char *argv[])
    326308{
     309        int rc;
     310
    327311        info_print();
    328312       
     
    336320                srv_start("/srv/tmpfs");
    337321       
     322        srv_start("/srv/klog");
    338323        srv_start("/srv/locfs");
    339324        srv_start("/srv/taskmon");
     
    349334        srv_start("/srv/apic");
    350335        srv_start("/srv/i8259");
     336        srv_start("/srv/icp-ic");
    351337        srv_start("/srv/obio");
    352338        srv_start("/srv/cuda_adb");
    353339        srv_start("/srv/s3c24xx_uart");
    354340        srv_start("/srv/s3c24xx_ts");
     341       
     342        srv_start("/srv/vbd");
     343        srv_start("/srv/volsrv");
    355344       
    356345        srv_start("/srv/loopip");
     
    360349        srv_start("/srv/udp");
    361350        srv_start("/srv/dnsrsrv");
     351        srv_start("/srv/dhcp");
     352        srv_start("/srv/nconfsrv");
    362353       
    363354        srv_start("/srv/clipboard");
    364355        srv_start("/srv/remcons");
    365356       
    366         /*
    367          * Start these synchronously so that mount_data() can be
    368          * non-blocking.
    369          */
    370 #ifdef CONFIG_START_BD
    371         srv_start("/srv/ata_bd");
    372 #endif
    373        
    374 #ifdef CONFIG_MOUNT_DATA
    375         /* Make sure fat is running. */
    376         if (str_cmp(STRING(RDFMT), "fat") != 0)
    377                 srv_start("/srv/fat");
    378        
    379         mount_data();
    380 #else
    381         (void) mount_data;
    382 #endif
    383        
    384357        srv_start("/srv/input", HID_INPUT);
    385358        srv_start("/srv/output", HID_OUTPUT);
    386        
    387         int rc = compositor(HID_INPUT, HID_COMPOSITOR_SERVER);
     359        srv_start("/srv/hound");
     360       
     361        if (!config_key_exists("console")) {
     362                rc = compositor(HID_INPUT, HID_COMPOSITOR_SERVER);
     363                if (rc == EOK) {
     364                        gui_start("/app/barber", HID_COMPOSITOR_SERVER);
     365                        gui_start("/app/vlaunch", HID_COMPOSITOR_SERVER);
     366                        gui_start("/app/vterm", HID_COMPOSITOR_SERVER);
     367                }
     368        }
     369       
     370        rc = console(HID_INPUT, HID_OUTPUT);
    388371        if (rc == EOK) {
    389                 gui_start("/app/vlaunch", HID_COMPOSITOR_SERVER);
    390                 gui_start("/app/vterm", HID_COMPOSITOR_SERVER);
    391         } else {
    392                 rc = console(HID_INPUT, HID_OUTPUT);
    393                 if (rc == EOK) {
    394                         getterm("term/vc0", "/app/bdsh", true);
    395                         getterm("term/vc1", "/app/bdsh", false);
    396                         getterm("term/vc2", "/app/bdsh", false);
    397                         getterm("term/vc3", "/app/bdsh", false);
    398                         getterm("term/vc4", "/app/bdsh", false);
    399                         getterm("term/vc5", "/app/bdsh", false);
    400                         getterm("term/vc6", "/app/klog", false);
    401                 }
     372                getterm("term/vc0", "/app/bdsh", true);
     373                getterm("term/vc1", "/app/bdsh", false);
     374                getterm("term/vc2", "/app/bdsh", false);
     375                getterm("term/vc3", "/app/bdsh", false);
     376                getterm("term/vc4", "/app/bdsh", false);
     377                getterm("term/vc5", "/app/bdsh", false);
    402378        }
    403379       
Note: See TracChangeset for help on using the changeset viewer.