afdc74d5a63c90d63df0dc7c3891d61608abbd64
[akaros.git] / lib / libmain.c
1 // Called from entry.S to get us going.
2 // entry.S already took care of defining envs, pages, vpd, and vpt.
3
4 #include <inc/lib.h>
5
6 extern void umain(int argc, char **argv);
7
8 volatile env_t *env;
9 char *binaryname = "(PROGRAM NAME UNKNOWN)";
10
11 void
12 libmain(int argc, char **argv)
13 {
14         // set env to point at our env structure in envs[].
15         // TODO: for now, the kernel just copies our env struct to the beginning of
16         // proc_info.  When we figure out what we want there, change this.
17         env = (env_t*)procinfo;
18
19         // save the name of the program so that panic() can use it
20         if (argc > 0)
21                 binaryname = argv[0];
22
23         // call user main routine
24         umain(argc, argv);
25
26         // exit gracefully
27         exit();
28 }
29