Mercurial > repos > tabletprog
comparison modules/os.tp @ 315:f987bb2a1911
WIP native compiler work
author | Michael Pavone <pavone@retrodev.com> |
---|---|
date | Sat, 14 Mar 2015 12:10:51 -0700 |
parents | d1dc2d70bdfd |
children |
comparison
equal
deleted
inserted
replaced
314:d4df33596e7d | 315:f987bb2a1911 |
---|---|
119 secs <- (mcall: i32 1 osecs) castTo: (obj_int32 ptr) | 119 secs <- (mcall: i32 1 osecs) castTo: (obj_int32 ptr) |
120 intret <- make_object: (addr_of: obj_int32_meta) NULL 0 | 120 intret <- make_object: (addr_of: obj_int32_meta) NULL 0 |
121 intret num!: (sleep: (secs num)) | 121 intret num!: (sleep: (secs num)) |
122 intret | 122 intret |
123 } | 123 } |
124 | |
125 llMessage: execv withVars: { | |
126 opath <- object ptr | |
127 path <- string ptr | |
128 eargs <- object ptr | |
129 oarglen <- object ptr | |
130 arglen <- obj_int32 ptr | |
131 i <- int32_t | |
132 oi <- obj_int32 ptr | |
133 oarg <- object ptr | |
134 arg <- string ptr | |
135 cargs <- (char ptr) ptr | |
136 } andCode: :opath eargs { | |
137 path <- (mcall: string 1 opath) castTo: (string ptr) | |
138 oarglen <- mcall: length 1 eargs | |
139 arglen <- (mcall: int32 1 oarglen) castTo: (obj_int32 ptr) | |
140 cargs <- GC_MALLOC_ATOMIC: (sizeof: (char ptr)) * ((arglen num) + 1) | |
141 i <- 0 | |
142 while: { i < (arglen num) } do: { | |
143 oi <- make_object: (addr_of: obj_int32_meta) NULL 0 | |
144 oi num!: i | |
145 oarg <- mcall: get 2 eargs oi | |
146 arg <- (mcall: string 1 oarg) castTo: (string ptr) | |
147 cargs set: i (arg data) | |
148 i <- i + 1 | |
149 } | |
150 cargs set: i NULL | |
151 i <- execv: (path data) cargs | |
152 oi <- make_object: (addr_of: obj_int32_meta) NULL 0 | |
153 oi num!: i | |
154 oi | |
155 } | |
156 | |
157 llMessage: execvp withVars: { | |
158 opath <- object ptr | |
159 path <- string ptr | |
160 eargs <- object ptr | |
161 oarglen <- object ptr | |
162 arglen <- obj_int32 ptr | |
163 i <- int32_t | |
164 oi <- obj_int32 ptr | |
165 oarg <- object ptr | |
166 arg <- string ptr | |
167 cargs <- (char ptr) ptr | |
168 } andCode: :opath eargs { | |
169 path <- (mcall: string 1 opath) castTo: (string ptr) | |
170 oarglen <- mcall: length 1 eargs | |
171 arglen <- (mcall: int32 1 oarglen) castTo: (obj_int32 ptr) | |
172 cargs <- GC_MALLOC_ATOMIC: (sizeof: (char ptr)) * ((arglen num) + 1) | |
173 i <- 0 | |
174 while: { i < (arglen num) } do: { | |
175 oi <- make_object: (addr_of: obj_int32_meta) NULL 0 | |
176 oi num!: i | |
177 oarg <- mcall: get 2 eargs oi | |
178 arg <- (mcall: string 1 oarg) castTo: (string ptr) | |
179 cargs set: i (arg data) | |
180 i <- i + 1 | |
181 } | |
182 cargs set: i NULL | |
183 i <- execvp: (path data) cargs | |
184 oi <- make_object: (addr_of: obj_int32_meta) NULL 0 | |
185 oi num!: i | |
186 oi | |
187 } | |
188 | |
189 llMessage: execve withVars: { | |
190 opath <- object ptr | |
191 path <- string ptr | |
192 eargs <- object ptr | |
193 env <- object ptr | |
194 oarglen <- object ptr | |
195 arglen <- obj_int32 ptr | |
196 i <- int32_t | |
197 oi <- obj_int32 ptr | |
198 oarg <- object ptr | |
199 arg <- string ptr | |
200 cargs <- (char ptr) ptr | |
201 cenv <- (char ptr) ptr | |
202 } andCode: :opath eargs env { | |
203 path <- (mcall: string 1 opath) castTo: (string ptr) | |
204 oarglen <- mcall: length 1 eargs | |
205 arglen <- (mcall: int32 1 oarglen) castTo: (obj_int32 ptr) | |
206 cargs <- GC_MALLOC_ATOMIC: (sizeof: (char ptr)) * ((arglen num) + 1) | |
207 i <- 0 | |
208 while: { i < (arglen num) } do: { | |
209 oi <- make_object: (addr_of: obj_int32_meta) NULL 0 | |
210 oi num!: i | |
211 oarg <- mcall: get 2 eargs oi | |
212 arg <- (mcall: string 1 oarg) castTo: (string ptr) | |
213 cargs set: i (arg data) | |
214 i <- i + 1 | |
215 } | |
216 cargs set: i NULL | |
217 | |
218 oarglen <- mcall: length 1 eargs | |
219 arglen <- (mcall: int32 1 oarglen) castTo: (obj_int32 ptr) | |
220 cenv <- GC_MALLOC_ATOMIC: (sizeof: (char ptr)) * ((arglen num) + 1) | |
221 i <- 0 | |
222 while: { i < (arglen num) } do: { | |
223 oi <- make_object: (addr_of: obj_int32_meta) NULL 0 | |
224 oi num!: i | |
225 oarg <- mcall: get 2 env oi | |
226 arg <- (mcall: string 1 oarg) castTo: (string ptr) | |
227 cenv set: i (arg data) | |
228 i <- i + 1 | |
229 } | |
230 cenv set: i NULL | |
231 | |
232 i <- execve: (path data) cargs cenv | |
233 oi <- make_object: (addr_of: obj_int32_meta) NULL 0 | |
234 oi num!: i | |
235 oi | |
236 } | |
124 } | 237 } |
125 } | 238 } |