user/vmm: add and use a load_elf function
[akaros.git] / tests / old / spawn.c
1
2 #include <stdio.h>
3 #include <parlib/parlib.h>
4 #include <unistd.h>
5
6 int main(int argc, char **argv, char **envp)
7 {
8         char *p_argv[] = {0, 0, 0};
9         char *p_envp[] = {"LD_LIBRARY_PATH=/lib", 0};
10         #define FILENAME "/bin/hello"
11         //#define FILENAME "/bin/hello-sym"
12         char filename[] = FILENAME;
13         #if 0
14         /* try some bad combos */
15         int pid = sys_proc_create("garbagexxx");
16         printf("Garbage pid result: %d\n", pid);
17
18         error_t err = sys_proc_run(2342);
19         printf("sys_proc_run(2342) error: %e\n", err);
20
21         err = sys_proc_run(-1);
22         cprintf("sys_proc_run(-1) error: %e\n", err);
23         #endif
24
25         #define NUM_KIDS 5
26         int child_pid[NUM_KIDS];
27         #if 0
28         printf("U: attempting to create hello(s)\n");
29         for (int i = 0; i < NUM_KIDS; i++)
30                 child_pid[i] = sys_proc_create("roslib_hello");
31
32         for (int i = 0; i < NUM_KIDS; i++) {
33                 cprintf("U: attempting to run hello (pid: %d)\n", child_pid[i]);
34                 sys_proc_run(child_pid[i]);
35         }
36         #endif
37         printf("U: attempting to create and run hello\n");
38         p_argv[0] = filename;
39         printf("SPAWN, I'm pid %d, filename %s\n", getpid(), filename);
40         child_pid[0] = sys_proc_create(FILENAME, strlen(FILENAME), p_argv, p_envp,
41                                        PROC_DUP_FGRP);
42         if (child_pid[0] <= 0)
43                 printf("Failed to create the child\n");
44         else
45                 if (sys_proc_run(child_pid[0]) < 0)
46                         printf("Failed to run the child (pid %d)\n", child_pid[0]);
47
48         #if 0
49         printf("U: attempting to create and run another hello\n");
50         child_pid[1] = sys_proc_create(FILENAME, strlen(FILENAME), 0, 0);
51         if (child_pid[1] <= 0)
52                 perror("");
53         else
54                 if (sys_proc_run(child_pid[1]) < 0)
55                         perror("");
56         #endif
57         return 0;
58 }