Changes in uspace/app/init/init.c [73d8600:31e9fe0] in mainline
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/app/init/init.c
r73d8600 r31e9fe0 49 49 #include <loc.h> 50 50 #include <str_error.h> 51 #include <config.h>52 51 #include "init.h" 53 52 … … 60 59 #define TMPFS_FS_TYPE "tmpfs" 61 60 #define TMPFS_MOUNT_POINT "/tmp" 61 62 #define DATA_FS_TYPE "fat" 63 #define DATA_DEVICE "bd/ata1disk0" 64 #define DATA_MOUNT_POINT "/data" 62 65 63 66 #define SRV_CONSOLE "/srv/console" … … 127 130 opts = "restore"; 128 131 129 int rc = vfs_mount(fstype, ROOT_MOUNT_POINT, ROOT_DEVICE, opts,132 int rc = mount(fstype, ROOT_MOUNT_POINT, ROOT_DEVICE, opts, 130 133 IPC_FLAG_BLOCKING, 0); 131 134 return mount_report("Root filesystem", ROOT_MOUNT_POINT, fstype, … … 144 147 static bool mount_locfs(void) 145 148 { 146 int rc = vfs_mount(LOCFS_FS_TYPE, LOCFS_MOUNT_POINT, "", "",149 int rc = mount(LOCFS_FS_TYPE, LOCFS_MOUNT_POINT, "", "", 147 150 IPC_FLAG_BLOCKING, 0); 148 151 return mount_report("Location service filesystem", LOCFS_MOUNT_POINT, … … 153 156 { 154 157 struct stat s; 155 if (stat(path, &s) != 0) {158 if (stat(path, &s) == ENOENT) { 156 159 printf("%s: Unable to stat %s\n", NAME, path); 157 160 return ENOENT; … … 173 176 va_start(ap, path); 174 177 task_id_t id; 175 task_wait_t wait; 176 int rc = task_spawn(&id, &wait, path, cnt, ap); 178 int rc = task_spawn(&id, path, cnt, ap); 177 179 va_end(ap); 178 180 … … 191 193 task_exit_t texit; 192 194 int retval; 193 rc = task_wait( &wait, &texit, &retval);195 rc = task_wait(id, &texit, &retval); 194 196 if (rc != EOK) { 195 197 printf("%s: Error waiting for %s (%s)\n", NAME, path, … … 255 257 256 258 task_id_t id; 257 task_wait_t wait; 258 int rc = task_spawnl(&id, &wait, app, app, winreg, NULL); 259 int rc = task_spawnl(&id, app, app, winreg, NULL); 259 260 if (rc != EOK) { 260 261 printf("%s: Error spawning %s %s (%s)\n", NAME, app, … … 265 266 task_exit_t texit; 266 267 int retval; 267 rc = task_wait( &wait, &texit, &retval);268 rc = task_wait(id, &texit, &retval); 268 269 if ((rc != EOK) || (texit != TASK_EXIT_NORMAL)) { 269 270 printf("%s: Error retrieving retval from %s (%s)\n", NAME, … … 275 276 } 276 277 277 static 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); 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 } 288 301 } else { 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); 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 } 297 308 } 298 309 } … … 300 311 static bool mount_tmpfs(void) 301 312 { 302 int rc = vfs_mount(TMPFS_FS_TYPE, TMPFS_MOUNT_POINT, "", "", 0, 0);313 int rc = mount(TMPFS_FS_TYPE, TMPFS_MOUNT_POINT, "", "", 0, 0); 303 314 return mount_report("Temporary filesystem", TMPFS_MOUNT_POINT, 304 315 TMPFS_FS_TYPE, NULL, rc); 305 316 } 306 317 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 307 325 int main(int argc, char *argv[]) 308 326 { 309 int rc;310 311 327 info_print(); 312 328 … … 320 336 srv_start("/srv/tmpfs"); 321 337 322 srv_start("/srv/klog");323 338 srv_start("/srv/locfs"); 324 339 srv_start("/srv/taskmon"); … … 334 349 srv_start("/srv/apic"); 335 350 srv_start("/srv/i8259"); 336 srv_start("/srv/icp-ic");337 351 srv_start("/srv/obio"); 338 352 srv_start("/srv/cuda_adb"); 339 353 srv_start("/srv/s3c24xx_uart"); 340 354 srv_start("/srv/s3c24xx_ts"); 341 342 srv_start("/srv/vbd");343 srv_start("/srv/volsrv");344 355 345 356 srv_start("/srv/loopip"); … … 349 360 srv_start("/srv/udp"); 350 361 srv_start("/srv/dnsrsrv"); 351 srv_start("/srv/dhcp");352 srv_start("/srv/nconfsrv");353 362 354 363 srv_start("/srv/clipboard"); 355 364 srv_start("/srv/remcons"); 356 365 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 357 384 srv_start("/srv/input", HID_INPUT); 358 385 srv_start("/srv/output", HID_OUTPUT); 359 srv_start("/srv/hound"); 360 361 if (!config_key_exists("console")) { 362 rc = compositor(HID_INPUT, HID_COMPOSITOR_SERVER); 386 387 int rc = compositor(HID_INPUT, HID_COMPOSITOR_SERVER); 388 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); 363 393 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); 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); 367 401 } 368 402 } 369 403 370 rc = console(HID_INPUT, HID_OUTPUT);371 if (rc == EOK) {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);378 }379 380 404 return 0; 381 405 }
Note:
See TracChangeset
for help on using the changeset viewer.