Rev 3112 | Rev 3243 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed
| Rev 3112 | Rev 3222 | ||
|---|---|---|---|
| Line 43... | Line 43... | ||
| 43 | #include <task.h> |
43 | #include <task.h> |
| 44 | #include <malloc.h> |
44 | #include <malloc.h> |
| 45 | #include "init.h" |
45 | #include "init.h" |
| 46 | #include "version.h" |
46 | #include "version.h" |
| 47 | 47 | ||
| 48 | #define BUF_SIZE 150000 |
- | |
| 49 | - | ||
| 50 | static char *buf; |
- | |
| 51 | - | ||
| 52 | static void console_wait(void) |
48 | static void console_wait(void) |
| 53 | { |
49 | { |
| 54 | while (get_cons_phone() < 0) |
50 | while (get_cons_phone() < 0) |
| 55 | usleep(50000); // FIXME |
51 | usleep(50000); // FIXME |
| 56 | } |
52 | } |
| Line 80... | Line 76... | ||
| 80 | return true; |
76 | return true; |
| 81 | } |
77 | } |
| 82 | 78 | ||
| 83 | static void spawn(char *fname) |
79 | static void spawn(char *fname) |
| 84 | { |
80 | { |
| - | 81 | char *argv[2]; |
|
| - | 82 | ||
| 85 | printf(NAME ": Spawning %s\n", fname); |
83 | printf(NAME ": Spawning %s\n", fname); |
| 86 | 84 | ||
| 87 | int fd = open(fname, O_RDONLY); |
85 | argv[0] = fname; |
| 88 | if (fd >= 0) { |
86 | argv[1] = NULL; |
| 89 | 87 | ||
| 90 | ssize_t rd; |
- | |
| 91 | size_t len = 0; |
- | |
| 92 | - | ||
| 93 | // FIXME: cannot do long reads yet |
- | |
| 94 | do { |
- | |
| 95 | rd = read(fd, buf + len, 1024); |
- | |
| 96 | if (rd > 0) |
- | |
| 97 | len += rd; |
- | |
| 98 | - | ||
| 99 | } while (rd > 0); |
- | |
| 100 | - | ||
| 101 | if (len > 0) { |
- | |
| 102 | task_spawn(buf, len); |
88 | if (task_spawn(fname, argv) != 0) { |
| 103 | sleep(1); // FIXME |
89 | /* Success */ |
| 104 | } |
- | |
| 105 | - | ||
| 106 | close(fd); |
90 | sleep(1); |
| 107 | } |
91 | } |
| 108 | } |
92 | } |
| 109 | 93 | ||
| 110 | int main(int argc, char *argv[]) |
94 | int main(int argc, char *argv[]) |
| 111 | { |
95 | { |
| Line 115... | Line 99... | ||
| 115 | if (!mount_tmpfs()) { |
99 | if (!mount_tmpfs()) { |
| 116 | printf(NAME ": Exiting\n"); |
100 | printf(NAME ": Exiting\n"); |
| 117 | return -1; |
101 | return -1; |
| 118 | } |
102 | } |
| 119 | 103 | ||
| 120 | buf = malloc(BUF_SIZE); |
- | |
| 121 | - | ||
| 122 | // FIXME: spawn("/sbin/pci"); |
104 | // FIXME: spawn("/sbin/pci"); |
| 123 | spawn("/sbin/fb"); |
105 | spawn("/sbin/fb"); |
| 124 | spawn("/sbin/kbd"); |
106 | spawn("/sbin/kbd"); |
| 125 | spawn("/sbin/console"); |
107 | spawn("/sbin/console"); |
| 126 | 108 | ||
| 127 | console_wait(); |
109 | console_wait(); |
| 128 | version_print(); |
110 | version_print(); |
| 129 | 111 | ||
| 130 | spawn("/sbin/fat"); |
112 | spawn("/sbin/fat"); |
| 131 | spawn("/sbin/tetris"); |
113 | spawn("/sbin/tetris"); |
| - | 114 | spawn("/sbin/cli"); |
|
| 132 | // FIXME: spawn("/sbin/tester"); |
115 | // FIXME: spawn("/sbin/tester"); |
| 133 | spawn("/sbin/klog"); |
116 | spawn("/sbin/klog"); |
| 134 | 117 | ||
| 135 | free(buf); |
- | |
| 136 | return 0; |
118 | return 0; |
| 137 | } |
119 | } |
| 138 | 120 | ||
| 139 | /** @} |
121 | /** @} |
| 140 | */ |
122 | */ |