* more re-work
[mascara-docs.git] / i386 / junos / MIT / course / src / src.lab / user / testpteshare.c
blob487f3efc4f5d01ea853c174edd94aca224b9eedf
1 #include <inc/x86.h>
2 #include <inc/lib.h>
4 #define VA ((char *) 0xA0000000)
5 const char *msg = "hello, world\n";
6 const char *msg2 = "goodbye, world\n";
8 void childofspawn(void);
10 void
11 umain(int argc, char **argv)
13 int r;
15 if (argc != 0)
16 childofspawn();
18 if ((r = sys_page_alloc(0, VA, PTE_P|PTE_W|PTE_U|PTE_SHARE)) < 0)
19 panic("sys_page_alloc: %e", r);
21 // check fork
22 if ((r = fork()) < 0)
23 panic("fork: %e", r);
24 if (r == 0) {
25 strcpy(VA, msg);
26 exit();
28 wait(r);
29 cprintf("fork handles PTE_SHARE %s\n", strcmp(VA, msg) == 0 ? "right" : "wrong");
31 // check spawn
32 if ((r = spawnl("/testpteshare", "testpteshare", "arg", 0)) < 0)
33 panic("spawn: %e", r);
34 wait(r);
35 cprintf("spawn handles PTE_SHARE %s\n", strcmp(VA, msg2) == 0 ? "right" : "wrong");
37 breakpoint();
40 void
41 childofspawn(void)
43 strcpy(VA, msg2);
44 exit();