add unix.fork&unix.pipe(do not work on windows platform)
This commit is contained in:
parent
61666d275d
commit
d8156e839b
4
lib.nas
4
lib.nas
|
@ -273,8 +273,8 @@ var math=
|
||||||
|
|
||||||
var unix=
|
var unix=
|
||||||
{
|
{
|
||||||
pipe: func(){die("not supported yet");},
|
pipe: func(){return __builtin_pipe;},
|
||||||
fork: func(){die("not supported yet");},
|
fork: func(){return __builtin_fork;},
|
||||||
dup2: func(fd0,fd1){die("not supported yet");},
|
dup2: func(fd0,fd1){die("not supported yet");},
|
||||||
exec: func(filename,argv,envp){die("not supported yet");},
|
exec: func(filename,argv,envp){die("not supported yet");},
|
||||||
waitpid: func(pid,nohang=0){die("not supported yet");},
|
waitpid: func(pid,nohang=0){die("not supported yet");},
|
||||||
|
|
|
@ -79,6 +79,8 @@ nas_native(builtin_sfld);
|
||||||
nas_native(builtin_setfld);
|
nas_native(builtin_setfld);
|
||||||
nas_native(builtin_buf);
|
nas_native(builtin_buf);
|
||||||
nas_native(builtin_sleep);
|
nas_native(builtin_sleep);
|
||||||
|
nas_native(builtin_pipe);
|
||||||
|
nas_native(builtin_fork);
|
||||||
nas_native(builtin_opendir);
|
nas_native(builtin_opendir);
|
||||||
nas_native(builtin_readdir);
|
nas_native(builtin_readdir);
|
||||||
nas_native(builtin_closedir);
|
nas_native(builtin_closedir);
|
||||||
|
@ -163,6 +165,8 @@ struct
|
||||||
{"__builtin_setfld", builtin_setfld },
|
{"__builtin_setfld", builtin_setfld },
|
||||||
{"__builtin_buf", builtin_buf },
|
{"__builtin_buf", builtin_buf },
|
||||||
{"__builtin_sleep", builtin_sleep },
|
{"__builtin_sleep", builtin_sleep },
|
||||||
|
{"__builtin_pipe", builtin_pipe },
|
||||||
|
{"__builtin_fork", builtin_fork },
|
||||||
{"__builtin_opendir", builtin_opendir },
|
{"__builtin_opendir", builtin_opendir },
|
||||||
{"__builtin_readdir", builtin_readdir },
|
{"__builtin_readdir", builtin_readdir },
|
||||||
{"__builtin_closedir",builtin_closedir},
|
{"__builtin_closedir",builtin_closedir},
|
||||||
|
@ -955,6 +959,26 @@ nasal_ref builtin_sleep(nasal_ref* local,nasal_gc& gc)
|
||||||
usleep((useconds_t)(val.num()*1e6));
|
usleep((useconds_t)(val.num()*1e6));
|
||||||
return nil;
|
return nil;
|
||||||
}
|
}
|
||||||
|
nasal_ref builtin_pipe(nasal_ref* local,nasal_gc& gc)
|
||||||
|
{
|
||||||
|
int fd[2];
|
||||||
|
nasal_ref res=gc.alloc(vm_vec);
|
||||||
|
#ifndef _WIN32
|
||||||
|
if(pipe(fd)==-1)
|
||||||
|
return builtin_err("pipe","failed to create pipe");
|
||||||
|
res.vec()->elems.push_back({vm_num,(double)fd[0]});
|
||||||
|
res.vec()->elems.push_back({vm_num,(double)fd[1]});
|
||||||
|
return res;
|
||||||
|
#endif
|
||||||
|
return builtin_err("pipe","not supported yet");
|
||||||
|
}
|
||||||
|
nasal_ref builtin_fork(nasal_ref* local,nasal_gc& gc)
|
||||||
|
{
|
||||||
|
#ifndef _WIN32
|
||||||
|
return {vm_num,(double)fork()};
|
||||||
|
#endif
|
||||||
|
return builtin_err("fork","not supported yet");
|
||||||
|
}
|
||||||
nasal_ref builtin_opendir(nasal_ref* local,nasal_gc& gc)
|
nasal_ref builtin_opendir(nasal_ref* local,nasal_gc& gc)
|
||||||
{
|
{
|
||||||
nasal_ref path=local[1];
|
nasal_ref path=local[1];
|
||||||
|
|
|
@ -273,8 +273,8 @@ var math=
|
||||||
|
|
||||||
var unix=
|
var unix=
|
||||||
{
|
{
|
||||||
pipe: func(){die("not supported yet");},
|
pipe: func(){return __builtin_pipe;},
|
||||||
fork: func(){die("not supported yet");},
|
fork: func(){return __builtin_fork;},
|
||||||
dup2: func(fd0,fd1){die("not supported yet");},
|
dup2: func(fd0,fd1){die("not supported yet");},
|
||||||
exec: func(filename,argv,envp){die("not supported yet");},
|
exec: func(filename,argv,envp){die("not supported yet");},
|
||||||
waitpid: func(pid,nohang=0){die("not supported yet");},
|
waitpid: func(pid,nohang=0){die("not supported yet");},
|
||||||
|
|
|
@ -1,7 +1,28 @@
|
||||||
import("lib.nas");
|
import("lib.nas");
|
||||||
|
|
||||||
var geodinfo=func(lat,lon){}
|
var geodinfo=func(lat,lon){
|
||||||
var maketimer=func(t,f){}
|
return {};
|
||||||
|
}
|
||||||
|
var maketimer=func(interval,function){
|
||||||
|
return {
|
||||||
|
isRunning:0,
|
||||||
|
start:func(){
|
||||||
|
me.isRunning=1;
|
||||||
|
while(1){
|
||||||
|
unix.sleep(interval);
|
||||||
|
function();
|
||||||
|
}
|
||||||
|
},
|
||||||
|
stop:func(){
|
||||||
|
me.isRunning=0;
|
||||||
|
},
|
||||||
|
restart:func(interval){
|
||||||
|
|
||||||
|
},
|
||||||
|
singleShot:0,
|
||||||
|
simulatedTime:0
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
var props=
|
var props=
|
||||||
{
|
{
|
||||||
|
|
Loading…
Reference in New Issue