Changes in uspace/app/init/init.c [3acb285:00d7e1b] in mainline


Ignore:
File:
1 edited

Legend:

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

    r3acb285 r00d7e1b  
    4646#include <macros.h>
    4747#include <str.h>
    48 #include <devmap.h>
     48#include <loc.h>
    4949#include <str_error.h>
    5050#include "init.h"
     
    5353#define ROOT_MOUNT_POINT  "/"
    5454
    55 #define DEVFS_FS_TYPE      "devfs"
    56 #define DEVFS_MOUNT_POINT  "/dev"
     55#define LOCFS_FS_TYPE      "locfs"
     56#define LOCFS_MOUNT_POINT  "/loc"
    5757
    5858#define TMPFS_FS_TYPE      "tmpfs"
     
    6666#define APP_GETTERM  "/app/getterm"
    6767
     68/** Print banner */
    6869static void info_print(void)
    6970{
     
    7172}
    7273
     74/** Report mount operation success */
    7375static bool mount_report(const char *desc, const char *mntpt,
    7476    const char *fstype, const char *dev, int rc)
     
    100102}
    101103
     104/** Mount root filesystem
     105 *
     106 * The operation blocks until the root filesystem
     107 * server is ready for mounting.
     108 *
     109 * @param[in] fstype Root filesystem type.
     110 *
     111 * @return True on success.
     112 * @return False on failure.
     113 *
     114 */
    102115static bool mount_root(const char *fstype)
    103116{
     
    108121       
    109122        int rc = mount(fstype, ROOT_MOUNT_POINT, ROOT_DEVICE, opts,
    110             IPC_FLAG_BLOCKING);
     123            IPC_FLAG_BLOCKING, 0);
    111124        return mount_report("Root filesystem", ROOT_MOUNT_POINT, fstype,
    112125            ROOT_DEVICE, rc);
    113126}
    114127
    115 static bool mount_devfs(void)
    116 {
    117         int rc = mount(DEVFS_FS_TYPE, DEVFS_MOUNT_POINT, "", "",
    118             IPC_FLAG_BLOCKING);
    119         return mount_report("Device filesystem", DEVFS_MOUNT_POINT, DEVFS_FS_TYPE,
    120             NULL, rc);
     128/** Mount locfs filesystem
     129 *
     130 * The operation blocks until the locfs filesystem
     131 * server is ready for mounting.
     132 *
     133 * @return True on success.
     134 * @return False on failure.
     135 *
     136 */
     137static bool mount_locfs(void)
     138{
     139        int rc = mount(LOCFS_FS_TYPE, LOCFS_MOUNT_POINT, "", "",
     140            IPC_FLAG_BLOCKING, 0);
     141        return mount_report("Location service filesystem", LOCFS_MOUNT_POINT,
     142            LOCFS_FS_TYPE, NULL, rc);
    121143}
    122144
     
    157179        rc = task_wait(id, &texit, &retval);
    158180        if (rc != EOK) {
    159                 printf("%s: Error waiting for %s (%s(\n", NAME, fname,
     181                printf("%s: Error waiting for %s (%s)\n", NAME, fname,
    160182                    str_error(rc));
    161183                return;
     
    174196}
    175197
    176 static void console(const char *dev)
    177 {
    178         char hid_in[DEVMAP_NAME_MAXLEN];
     198static void console(const char *isvc, const char *fbsvc)
     199{
     200        printf("%s: Spawning %s %s %s\n", NAME, SRV_CONSOLE, isvc, fbsvc);
     201       
     202        /* Wait for the input service to be ready */
     203        service_id_t service_id;
     204        int rc = loc_service_get_id(isvc, &service_id, IPC_FLAG_BLOCKING);
     205        if (rc != EOK) {
     206                printf("%s: Error waiting on %s (%s)\n", NAME, isvc,
     207                    str_error(rc));
     208                return;
     209        }
     210       
     211        /* Wait for the framebuffer service to be ready */
     212        rc = loc_service_get_id(fbsvc, &service_id, IPC_FLAG_BLOCKING);
     213        if (rc != EOK) {
     214                printf("%s: Error waiting on %s (%s)\n", NAME, fbsvc,
     215                    str_error(rc));
     216                return;
     217        }
     218       
     219        rc = task_spawnl(NULL, SRV_CONSOLE, SRV_CONSOLE, isvc, fbsvc, NULL);
     220        if (rc != EOK) {
     221                printf("%s: Error spawning %s %s %s (%s)\n", NAME, SRV_CONSOLE,
     222                    isvc, fbsvc, str_error(rc));
     223        }
     224}
     225
     226static void getterm(const char *svc, const char *app, bool wmsg)
     227{
     228        char term[LOC_NAME_MAXLEN];
    179229        int rc;
    180230       
    181         snprintf(hid_in, DEVMAP_NAME_MAXLEN, "%s/%s", DEVFS_MOUNT_POINT, dev);
    182        
    183         printf("%s: Spawning %s %s\n", NAME, SRV_CONSOLE, hid_in);
    184        
    185         /* Wait for the input device to be ready */
    186         devmap_handle_t handle;
    187         rc = devmap_device_get_handle(dev, &handle, IPC_FLAG_BLOCKING);
    188         if (rc != EOK) {
    189                 printf("%s: Error waiting on %s (%s)\n", NAME, hid_in,
    190                     str_error(rc));
    191                 return;
    192         }
    193        
    194         rc = task_spawnl(NULL, SRV_CONSOLE, SRV_CONSOLE, hid_in, NULL);
    195         if (rc != EOK) {
    196                 printf("%s: Error spawning %s %s (%s)\n", NAME, SRV_CONSOLE,
    197                     hid_in, str_error(rc));
    198         }
    199 }
    200 
    201 static void getterm(const char *dev, const char *app, bool wmsg)
    202 {
    203         char term[DEVMAP_NAME_MAXLEN];
    204         int rc;
    205        
    206         snprintf(term, DEVMAP_NAME_MAXLEN, "%s/%s", DEVFS_MOUNT_POINT, dev);
     231        snprintf(term, LOC_NAME_MAXLEN, "%s/%s", LOCFS_MOUNT_POINT, svc);
    207232       
    208233        printf("%s: Spawning %s %s %s\n", NAME, APP_GETTERM, term, app);
    209234       
    210         /* Wait for the terminal device to be ready */
    211         devmap_handle_t handle;
    212         rc = devmap_device_get_handle(dev, &handle, IPC_FLAG_BLOCKING);
     235        /* Wait for the terminal service to be ready */
     236        service_id_t service_id;
     237        rc = loc_service_get_id(svc, &service_id, IPC_FLAG_BLOCKING);
    213238        if (rc != EOK) {
    214239                printf("%s: Error waiting on %s (%s)\n", NAME, term,
     
    236261static bool mount_tmpfs(void)
    237262{
    238         int rc = mount(TMPFS_FS_TYPE, TMPFS_MOUNT_POINT, "", "", 0);
     263        int rc = mount(TMPFS_FS_TYPE, TMPFS_MOUNT_POINT, "", "", 0, 0);
    239264        return mount_report("Temporary filesystem", TMPFS_MOUNT_POINT,
    240265            TMPFS_FS_TYPE, NULL, rc);
     
    243268static bool mount_data(void)
    244269{
    245         int rc = mount(DATA_FS_TYPE, DATA_MOUNT_POINT, DATA_DEVICE, "wtcache", 0);
     270        int rc = mount(DATA_FS_TYPE, DATA_MOUNT_POINT, DATA_DEVICE, "wtcache", 0, 0);
    246271        return mount_report("Data filesystem", DATA_MOUNT_POINT, DATA_FS_TYPE,
    247272            DATA_DEVICE, rc);
     
    262287        }
    263288       
    264         spawn("/srv/devfs");
     289        spawn("/srv/locfs");
    265290        spawn("/srv/taskmon");
    266291       
    267         if (!mount_devfs()) {
     292        if (!mount_locfs()) {
    268293                printf("%s: Exiting\n", NAME);
    269294                return -2;
     
    272297        mount_tmpfs();
    273298       
    274 #ifdef CONFIG_START_DEVMAN
    275299        spawn("/srv/devman");
    276 #endif
    277300        spawn("/srv/apic");
    278301        spawn("/srv/i8259");
    279         spawn("/srv/fhc");
    280302        spawn("/srv/obio");
    281303        srv_start("/srv/cuda_adb");
    282304        srv_start("/srv/i8042");
    283305        srv_start("/srv/s3c24ser");
    284         srv_start("/srv/adb_ms");
    285         srv_start("/srv/char_ms");
    286306        srv_start("/srv/s3c24ts");
    287307       
     308        spawn("/srv/net");
     309       
    288310        spawn("/srv/fb");
    289         spawn("/srv/kbd");
    290         console("hid_in/kbd");
     311        spawn("/srv/input");
     312        console("hid/input", "hid/fb0");
    291313       
    292314        spawn("/srv/clip");
     
    304326       
    305327#ifdef CONFIG_MOUNT_DATA
     328        /* Make sure fat is running. */
     329        if (str_cmp(STRING(RDFMT), "fat") != 0) {
     330                srv_start("/srv/fat");
     331        }
    306332        mount_data();
    307333#else
Note: See TracChangeset for help on using the changeset viewer.