1 #include <windows.h>
2 #include <lib9.h>
3
4 #define Windows (1<<2) /* hack - can't include cc.h because of clashes */
5 #define Chunk (1*1024*1024)
6
7 void*
mysbrk(ulong size)8 mysbrk(ulong size)
9 {
10 void *v;
11 static int chunk;
12 static uchar *brk;
13
14 if(chunk < size) {
15 chunk = Chunk;
16 if(chunk < size)
17 chunk = Chunk + size;
18 brk = VirtualAlloc(NULL, chunk, MEM_COMMIT, PAGE_EXECUTE_READWRITE);
19 if(brk == 0)
20 return (void*)-1;
21 }
22 v = brk;
23 chunk -= size;
24 brk += size;
25 return v;
26 }
27
28 int
mycreat(char * n,int p)29 mycreat(char *n, int p)
30 {
31
32 return create(n, 1, p);
33 }
34
35 int
mywait(int * s)36 mywait(int *s)
37 {
38 fprint(2, "mywait called\n");
39 abort();
40 return 0;
41 }
42
43 int
mydup(int f1,int f2)44 mydup(int f1, int f2)
45 {
46 int ok;
47
48 ok = _dup2(f1, f2);
49 if(ok < 0)
50 return -1;
51 return f2;
52 /*
53 fprint(2, "mydup called\n");
54 abort();
55 return 0;
56 */
57 }
58
59 int
mypipe(int * fd)60 mypipe(int *fd)
61 {
62 fprint(2, "mypipe called\n");
63 abort();
64 return 0;
65 }
66
67 int
systemtype(int sys)68 systemtype(int sys)
69 {
70
71 return sys&Windows;
72 }
73
74 int
pathchar(void)75 pathchar(void)
76 {
77 return '/';
78 }
79
80 char*
mygetwd(char * path,int len)81 mygetwd(char *path, int len)
82 {
83 return getcwd(path, len);
84 }
85
86 int
myexec(char * path,char * argv[])87 myexec(char *path, char *argv[])
88 {
89 fprint(2, "myexec called\n");
90 abort();
91 return 0;
92 }
93
94 int
myfork(void)95 myfork(void)
96 {
97 fprint(2, "myfork called\n");
98 abort();
99 return 0;
100 }
101
102 /*
103 * fake mallocs
104 */
105 void*
malloc(uint n)106 malloc(uint n)
107 {
108 return mysbrk(n);
109 }
110
111 void*
calloc(uint m,uint n)112 calloc(uint m, uint n)
113 {
114 return mysbrk(m*n);
115 }
116
117 void*
realloc(void * p,uint n)118 realloc(void *p, uint n)
119 {
120 void *new;
121
122 new = malloc(n);
123 if(new && p)
124 memmove(new, p, n);
125 return new;
126 }
127
128 void
free(void * p)129 free(void *p)
130 {
131 }
132