Changes in uspace/app/init/init.c [3acb285:00d7e1b] in mainline
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/app/init/init.c
r3acb285 r00d7e1b 46 46 #include <macros.h> 47 47 #include <str.h> 48 #include < devmap.h>48 #include <loc.h> 49 49 #include <str_error.h> 50 50 #include "init.h" … … 53 53 #define ROOT_MOUNT_POINT "/" 54 54 55 #define DEVFS_FS_TYPE "devfs"56 #define DEVFS_MOUNT_POINT "/dev"55 #define LOCFS_FS_TYPE "locfs" 56 #define LOCFS_MOUNT_POINT "/loc" 57 57 58 58 #define TMPFS_FS_TYPE "tmpfs" … … 66 66 #define APP_GETTERM "/app/getterm" 67 67 68 /** Print banner */ 68 69 static void info_print(void) 69 70 { … … 71 72 } 72 73 74 /** Report mount operation success */ 73 75 static bool mount_report(const char *desc, const char *mntpt, 74 76 const char *fstype, const char *dev, int rc) … … 100 102 } 101 103 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 */ 102 115 static bool mount_root(const char *fstype) 103 116 { … … 108 121 109 122 int rc = mount(fstype, ROOT_MOUNT_POINT, ROOT_DEVICE, opts, 110 IPC_FLAG_BLOCKING );123 IPC_FLAG_BLOCKING, 0); 111 124 return mount_report("Root filesystem", ROOT_MOUNT_POINT, fstype, 112 125 ROOT_DEVICE, rc); 113 126 } 114 127 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 */ 137 static 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); 121 143 } 122 144 … … 157 179 rc = task_wait(id, &texit, &retval); 158 180 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, 160 182 str_error(rc)); 161 183 return; … … 174 196 } 175 197 176 static void console(const char *dev) 177 { 178 char hid_in[DEVMAP_NAME_MAXLEN]; 198 static 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 226 static void getterm(const char *svc, const char *app, bool wmsg) 227 { 228 char term[LOC_NAME_MAXLEN]; 179 229 int rc; 180 230 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); 207 232 208 233 printf("%s: Spawning %s %s %s\n", NAME, APP_GETTERM, term, app); 209 234 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); 213 238 if (rc != EOK) { 214 239 printf("%s: Error waiting on %s (%s)\n", NAME, term, … … 236 261 static bool mount_tmpfs(void) 237 262 { 238 int rc = mount(TMPFS_FS_TYPE, TMPFS_MOUNT_POINT, "", "", 0 );263 int rc = mount(TMPFS_FS_TYPE, TMPFS_MOUNT_POINT, "", "", 0, 0); 239 264 return mount_report("Temporary filesystem", TMPFS_MOUNT_POINT, 240 265 TMPFS_FS_TYPE, NULL, rc); … … 243 268 static bool mount_data(void) 244 269 { 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); 246 271 return mount_report("Data filesystem", DATA_MOUNT_POINT, DATA_FS_TYPE, 247 272 DATA_DEVICE, rc); … … 262 287 } 263 288 264 spawn("/srv/ devfs");289 spawn("/srv/locfs"); 265 290 spawn("/srv/taskmon"); 266 291 267 if (!mount_ devfs()) {292 if (!mount_locfs()) { 268 293 printf("%s: Exiting\n", NAME); 269 294 return -2; … … 272 297 mount_tmpfs(); 273 298 274 #ifdef CONFIG_START_DEVMAN275 299 spawn("/srv/devman"); 276 #endif277 300 spawn("/srv/apic"); 278 301 spawn("/srv/i8259"); 279 spawn("/srv/fhc");280 302 spawn("/srv/obio"); 281 303 srv_start("/srv/cuda_adb"); 282 304 srv_start("/srv/i8042"); 283 305 srv_start("/srv/s3c24ser"); 284 srv_start("/srv/adb_ms");285 srv_start("/srv/char_ms");286 306 srv_start("/srv/s3c24ts"); 287 307 308 spawn("/srv/net"); 309 288 310 spawn("/srv/fb"); 289 spawn("/srv/ kbd");290 console("hid _in/kbd");311 spawn("/srv/input"); 312 console("hid/input", "hid/fb0"); 291 313 292 314 spawn("/srv/clip"); … … 304 326 305 327 #ifdef CONFIG_MOUNT_DATA 328 /* Make sure fat is running. */ 329 if (str_cmp(STRING(RDFMT), "fat") != 0) { 330 srv_start("/srv/fat"); 331 } 306 332 mount_data(); 307 333 #else
Note:
See TracChangeset
for help on using the changeset viewer.