xref: /inferno-os/utils/c2l/Nt.c (revision 74a4d8c26dd3c1e9febcb717cfd6cb6512991a7a)
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