diff --git a/rtl/ntapi.pas b/rtl/ntapi.pas
index abd0d520..51562e0a 100644
--- a/rtl/ntapi.pas
+++ b/rtl/ntapi.pas
@@ -51,6 +51,7 @@ const
NT_INFINITE=$8000000000000000;
+ //ThreadInformationClass
ThreadBasicInformation = 0;
ThreadTimes = 1;
ThreadPriority = 2;
@@ -70,13 +71,24 @@ const
ThreadIsIoPending = 16;
ThreadHideFromDebugger = 17;
+ //ProcessInformationClass
ProcessBasicInformation=0;
ProcessQuotaLimits =1;
ProcessIoCounters =2;
ProcessVmCounters =3;
ProcessTimes =4;
+ ProcessPriorityClass =18;
ProcessAffinityMask =21;
+ //ntapi PriorityClass
+ PROCESS_PRIORITY_CLASS_UNKNOWN =0;
+ PROCESS_PRIORITY_CLASS_IDLE =1;
+ PROCESS_PRIORITY_CLASS_NORMAL =2;
+ PROCESS_PRIORITY_CLASS_HIGH =3;
+ PROCESS_PRIORITY_CLASS_REALTIME =4;
+ PROCESS_PRIORITY_CLASS_BELOW_NORMAL=5;
+ PROCESS_PRIORITY_CLASS_ABOVE_NORMAL=6;
+
//FileInformationClass
FileBasicInformation = 4;
FileStandardInformation = 5;
@@ -418,6 +430,12 @@ type
InheritedFromUPI:QWORD;
end;
+ PPROCESS_PRIORITY_CLASS=^PROCESS_PRIORITY_CLASS;
+ PROCESS_PRIORITY_CLASS=packed record
+ Foreground :Boolean;
+ PriorityClass:Byte;
+ end;
+
PKERNEL_USER_TIMES=^KERNEL_USER_TIMES;
KERNEL_USER_TIMES=packed record
CreateTime:LARGE_INTEGER;
diff --git a/sys/kern/kern_cpuset.pas b/sys/kern/kern_cpuset.pas
index 8aba07ee..90d510d7 100644
--- a/sys/kern/kern_cpuset.pas
+++ b/sys/kern/kern_cpuset.pas
@@ -25,7 +25,8 @@ uses
systm,
kern_thr,
kern_thread,
- vm_machdep;
+ md_thread,
+ md_proc;
function sys_cpuset_getaffinity(level,which:Integer;id,cpusetsize:QWORD;mask:p_cpuset_t):Integer;
var
@@ -39,7 +40,7 @@ begin
Case which of
CPU_WHICH_TID:
begin
- if (int64(id)=-1) then
+ if (Integer(id)=-1) then
begin
td:=curkthread;
thread_inc_ref(td);
@@ -56,7 +57,7 @@ begin
end;
CPU_WHICH_PID:
begin
- if (int64(id)=-1) or (id=g_pid) then
+ if (Integer(id)=-1) or (id=g_pid) then
begin
Result:=cpuset_getproc(old);
if (Result<>0) then Exit(ESRCH);
@@ -87,7 +88,7 @@ begin
Case which of
CPU_WHICH_TID:
begin
- if (int64(id)=-1) then
+ if (Integer(id)=-1) then
begin
td:=curkthread;
thread_inc_ref(td);
@@ -106,7 +107,7 @@ begin
CPU_WHICH_PID:
begin
begin
- if (int64(id)=-1) or (id=g_pid) then
+ if (Integer(id)=-1) or (id=g_pid) then
begin
Result:=cpuset_setproc(new);
if (Result<>0) then Result:=ESRCH;
diff --git a/sys/kern/kern_exit.pas b/sys/kern/kern_exit.pas
new file mode 100644
index 00000000..c51d29fa
--- /dev/null
+++ b/sys/kern/kern_exit.pas
@@ -0,0 +1,188 @@
+unit kern_exit;
+
+{$mode ObjFPC}{$H+}
+{$CALLING SysV_ABI_CDecl}
+
+interface
+
+uses
+ kern_resource;
+
+const
+ WCOREFLAG=&0200;
+ _WSTOPPED=&0177; { _WSTATUS if process is stopped }
+
+ {
+ * Option bits for the third argument of wait4. WNOHANG causes the
+ * wait to not hang if there are no stopped or terminated processes, rather
+ * returning an error indication in this case (pid==0). WUNTRACED
+ * indicates that the caller should receive status about untraced children
+ * which stop due to signals. If children are stopped and a wait without
+ * this option is done, it is as though they were still running... nothing
+ * about them is returned. WNOWAIT only request information about zombie,
+ * leaving the proc around, available for later waits.
+ }
+ WNOHANG =1; { Don't hang in wait. }
+ WUNTRACED =2; { Tell about stopped, untraced children. }
+ WSTOPPED =WUNTRACED; { SUS compatibility }
+ WCONTINUED=4; { Report a job control continued process. }
+ WNOWAIT =8; { Poll only. Don't delete the proc entry. }
+ WEXITED =16; { Wait for exited processes. }
+ WTRAPPED =32; { Wait for a process to hit a trap or a breakpoint. }
+
+ WLINUXCLONE=$80000000; { Wait for kthread spawned from linux_clone. }
+
+ {
+ * Tokens for special values of the "pid" parameter to wait4.
+ * Extended struct __wrusage to collect rusage for both the target
+ * process and its children within one wait6() call.
+ }
+ WAIT_ANY =(-1); { any process }
+ WAIT_MYPGRP=0; { any process in my process group }
+
+type
+ _W_INT=Integer;
+
+function _WSTATUS(x:Integer):Integer; inline;
+function WIFSTOPPED(x:Integer):Boolean; inline;
+function WSTOPSIG(x:Integer):Integer; inline;
+function WIFSIGNALED(x:Integer):Boolean; inline;
+function WTERMSIG(x:Integer):Integer; inline;
+function WIFEXITED(x:Integer):Boolean; inline;
+function WEXITSTATUS(x:Integer):Integer; inline;
+function WIFCONTINUED(x:Integer):Boolean; inline; { 0x13=SIGCONT }
+function WCOREDUMP(x:Integer):Boolean; inline;
+function W_STOPCODE(sig:Integer):Integer; inline;
+function W_EXITCODE(ret,sig:Integer):Integer; inline;
+
+procedure exit1(rv:Integer);
+
+procedure sys_sys_exit(rval:Integer);
+function sys_wait4(pid:Integer;status:PInteger;options:Integer;rusage:p_rusage):Integer;
+
+implementation
+
+uses
+ errno,
+ systm;
+
+function _WSTATUS(x:Integer):Integer; inline;
+begin
+ Result:=(_W_INT(x) and &0177);
+end;
+
+function WIFSTOPPED(x:Integer):Boolean; inline;
+begin
+ Result:=(_WSTATUS(x)=_WSTOPPED);
+end;
+
+function WSTOPSIG(x:Integer):Integer; inline;
+begin
+ Result:=(_W_INT(x) shr 8) ;
+end;
+
+function WIFSIGNALED(x:Integer):Boolean; inline;
+begin
+ Result:=(_WSTATUS(x)<>_WSTOPPED) and (_WSTATUS(x)<>0);
+end;
+
+function WTERMSIG(x:Integer):Integer; inline;
+begin
+ Result:=(_WSTATUS(x));
+end;
+
+function WIFEXITED(x:Integer):Boolean; inline;
+begin
+ Result:=(_WSTATUS(x)=0);
+end;
+
+function WEXITSTATUS(x:Integer):Integer; inline;
+begin
+ Result:=(_W_INT(x) shr 8);
+end;
+
+function WIFCONTINUED(x:Integer):Boolean; inline; { 0x13=SIGCONT }
+begin
+ Result:=(x=$13);
+end;
+
+function WCOREDUMP(x:Integer):Boolean; inline;
+begin
+ Result:=(_W_INT(x) and WCOREFLAG)<>0;
+end;
+
+function W_STOPCODE(sig:Integer):Integer; inline;
+begin
+ Result:=(sig shl 8) or _WSTOPPED;
+end;
+
+function W_EXITCODE(ret,sig:Integer):Integer; inline;
+begin
+ Result:=(ret shl 8) or sig;
+end;
+
+procedure exit1(rv:Integer);
+begin
+ Halt(rv);
+end;
+
+procedure sys_sys_exit(rval:Integer);
+begin
+ exit1(W_EXITCODE(rval, 0));
+ // NOTREACHED
+end;
+
+function kern_wait(pid:Integer;status:PInteger;options:Integer;rusage:p_rusage):Integer;
+begin
+ options:=options or WEXITED or WTRAPPED;
+
+ { If we don't know the option, just return. }
+ if ((options and (not (WUNTRACED or WNOHANG or WCONTINUED or WNOWAIT or
+ WEXITED or WTRAPPED or WLINUXCLONE)))<>0) then
+ begin
+ Exit(EINVAL);
+ end;
+
+ if ((options and (WEXITED or WUNTRACED or WCONTINUED or WTRAPPED))=0) then
+ begin
+ {
+ * We will be unable to find any matching processes,
+ * because there are no known events to look for.
+ * Prefer to Exiterror instead of blocking
+ * indefinitely.
+ }
+ Exit(EINVAL);
+ end;
+
+ Exit(ECHILD);
+end;
+
+{
+ * The dirty work is handled by kern_wait().
+ }
+function sys_wait4(pid:Integer;status:PInteger;options:Integer;rusage:p_rusage):Integer;
+var
+ ru:t_rusage;
+ rup:p_rusage;
+ error,_status:Integer;
+begin
+ if (rusage<>nil) then
+ rup:=@ru
+ else
+ rup:=nil;
+
+ error:=kern_wait(pid, @_status, options, rup);
+
+ if (status<>nil) and (error=0) then
+ error:=copyout(@_status, status, sizeof(_status));
+
+ if (rusage<>nil) and (error=0) then
+ error:=copyout(@ru, rusage, sizeof(t_rusage));
+
+ Exit(error);
+end;
+
+
+
+end.
+
diff --git a/sys/kern/kern_prot.pas b/sys/kern/kern_prot.pas
new file mode 100644
index 00000000..0822bc49
--- /dev/null
+++ b/sys/kern/kern_prot.pas
@@ -0,0 +1,488 @@
+unit kern_prot;
+
+{$mode ObjFPC}{$H+}
+{$CALLING SysV_ABI_CDecl}
+
+interface
+
+const
+ MAXLOGNAME =17; { max login name length (incl. NUL) }
+
+function sys_getpid():Integer;
+function sys_getppid():Integer;
+function sys_getpgrp():Integer;
+function sys_getpgid():Integer;
+function sys_getsid():Integer;
+function sys_getuid():Integer;
+function sys_geteuid():Integer;
+function sys_getgid():Integer;
+function sys_getegid():Integer;
+function sys_getgroups(gidsetsize:DWORD;gidset:PInteger):Integer;
+function sys_setsid():Integer;
+function sys_setpgid(pid,pgid:Integer):Integer;
+function sys_setuid(uid:Integer):Integer;
+function sys_seteuid(euid:Integer):Integer;
+function sys_setgid(gid:Integer):Integer;
+function sys_setegid(egid:Integer):Integer;
+function sys_setgroups(gidsetsize:DWORD;gidset:PInteger):Integer;
+function sys_setreuid(ruid,euid:Integer):Integer;
+function sys_setregid(rgid,egid:Integer):Integer;
+function sys_setresuid(ruid,euid,suid:Integer):Integer;
+function sys_setresgid(rgid,egid,sgid:Integer):Integer;
+function sys_getresuid(ruid,euid,suid:PInteger):Integer;
+function sys_getresgid(rgid,egid,sgid:PInteger):Integer;
+function sys_issetugid():Integer;
+function sys_getlogin(namebuf:PChar;namelen:DWORD):Integer;
+function sys_setlogin(namebuf:PChar):Integer;
+
+function p_cansignal(signum:Integer):Integer;
+
+implementation
+
+uses
+ errno,
+ systm,
+ signal,
+ kern_thr,
+ md_proc;
+
+{
+ * System calls related to processes and protection
+ }
+
+function sys_getpid():Integer;
+var
+ td:p_kthread;
+begin
+ td:=curkthread;
+ if (td=nil) then Exit(-1);
+ td^.td_retval[0]:=g_pid;
+ Exit(0);
+end;
+
+function sys_getppid():Integer;
+var
+ td:p_kthread;
+begin
+ td:=curkthread;
+ if (td=nil) then Exit(-1);
+ td^.td_retval[0]:=1; //psevodo parent id
+ Exit(0);
+end;
+
+{
+ * Get process group ID; note that POSIX getpgrp takes no parameter.
+ }
+function sys_getpgrp():Integer;
+var
+ td:p_kthread;
+begin
+ td:=curkthread;
+ if (td=nil) then Exit(-1);
+ td^.td_retval[0]:=0; //psevodo group id
+ Exit(0);
+end;
+
+{ Get an arbitary pid's process group id }
+function sys_getpgid():Integer;
+var
+ td:p_kthread;
+begin
+ td:=curkthread;
+ if (td=nil) then Exit(-1);
+ td^.td_retval[0]:=0; //psevodo group id
+ Exit(0);
+end;
+
+{
+ * Get an arbitary pid's session id.
+ }
+function sys_getsid():Integer;
+var
+ td:p_kthread;
+begin
+ td:=curkthread;
+ if (td=nil) then Exit(-1);
+ td^.td_retval[0]:=0; //psevodo session id
+ Exit(0);
+end;
+
+function sys_getuid():Integer;
+var
+ td:p_kthread;
+begin
+ td:=curkthread;
+ if (td=nil) then Exit(-1);
+ td^.td_retval[0]:=0; //psevodo user id
+ Exit(0);
+end;
+
+function sys_geteuid():Integer;
+var
+ td:p_kthread;
+begin
+ td:=curkthread;
+ if (td=nil) then Exit(-1);
+ td^.td_retval[0]:=0; //psevodo user id
+ Exit(0);
+end;
+
+function sys_getgid():Integer;
+var
+ td:p_kthread;
+begin
+ td:=curkthread;
+ if (td=nil) then Exit(-1);
+ td^.td_retval[0]:=0; //psevodo group id
+ Exit(0);
+end;
+
+{
+ * Get effective group ID. The 'egid' is groups[0], and could be obtained
+ * via getgroups. This syscall exists because it is somewhat painful to do
+ * correctly in a library function.
+ }
+function sys_getegid():Integer;
+var
+ td:p_kthread;
+begin
+ td:=curkthread;
+ if (td=nil) then Exit(-1);
+ td^.td_retval[0]:=0; //psevodo group id
+ Exit(0);
+end;
+
+function sys_getgroups(gidsetsize:DWORD;gidset:PInteger):Integer;
+const
+ cr_ngroups=1;
+var
+ td:p_kthread;
+ ngrp:Integer;
+ groups:array[0..0] of Integer;
+begin
+ td:=curkthread;
+ if (td=nil) then Exit(-1);
+
+ if (gidsetsize < cr_ngroups) then
+ begin
+ if (gidsetsize=0) then
+ ngrp:=0
+ else
+ Exit(EINVAL);
+ end else
+ ngrp:=cr_ngroups;
+
+ groups[0]:=0;
+
+ if (gidsetsize > 0) then
+ Result:=copyout(@groups, gidset, ngrp * sizeof(Integer));
+
+ if (Result=0) then
+ td^.td_retval[0]:=ngrp;
+end;
+
+function sys_setsid():Integer;
+begin
+ Exit(EPERM);
+end;
+
+{
+ * set process group (setpgid/old setpgrp)
+ *
+ * caller does setpgid(targpid, targpgid)
+ *
+ * pid must be caller or child of caller (ESRCH)
+ * if a child
+ * pid must be in same session (EPERM)
+ * pid can't have done an exec (EACCES)
+ * if pgid<>pid
+ * there must exist some pid in same session having pgid (EPERM)
+ * pid must not be session leader (EPERM)
+ }
+function sys_setpgid(pid,pgid:Integer):Integer;
+begin
+ if (pid<>0) and (pid<>g_pid) then
+ begin
+ Exit(ESRCH);
+ end;
+
+ Exit(EPERM);
+end;
+
+{
+ * Use the clause in B.4.2.2 that allows setuid/setgid to be 4.2/4.3BSD
+ * compatible. It says that setting the uid/gid to euid/egid is a special
+ * case of 'appropriate privilege'. Once the rules are expanded out, this
+ * basically means that setuid(nnn) sets all three id's, in all permitted
+ * cases unless _POSIX_SAVED_IDS is enabled. In that case, setuid(getuid())
+ * does not set the saved id - this is dangerous for traditional BSD
+ * programs. For this reason, we *really* do not want to set
+ * _POSIX_SAVED_IDS and do not want to clear POSIX_APPENDIX_B_4_2_2.
+ }
+function sys_setuid(uid:Integer):Integer;
+begin
+ Result:=0;
+ if (uid<>0) then //not psevodo user id
+ begin
+ Exit(EPERM);
+ end;
+end;
+
+function sys_seteuid(euid:Integer):Integer;
+begin
+ Result:=0;
+ if (euid<>0) then //not psevodo user id
+ begin
+ Exit(EPERM);
+ end;
+end;
+
+function sys_setgid(gid:Integer):Integer;
+begin
+ Result:=0;
+ if (gid<>0) then //not group user id
+ begin
+ Exit(EPERM);
+ end;
+end;
+
+function sys_setegid(egid:Integer):Integer;
+begin
+ Result:=0;
+ if (egid<>0) then //not group user id
+ begin
+ Exit(EPERM);
+ end;
+end;
+
+function sys_setgroups(gidsetsize:DWORD;gidset:PInteger):Integer;
+const
+ ngroups_max=1023;
+var
+ groups:array[0..0] of Integer;
+begin
+ Result:=0;
+
+ if (gidsetsize > ngroups_max + 1) then
+ Exit(EINVAL);
+
+ Result:=copyin(gidset, @groups, 1 * sizeof(Integer));
+ if (Result<>0) then Exit;
+
+ if (gidsetsize<>1) then Exit(EPERM);
+
+ if (groups[0]<>0) then //not group user id
+ begin
+ Exit(EPERM);
+ end;
+end;
+
+function sys_setreuid(ruid,euid:Integer):Integer;
+begin
+ Result:=0;
+ if (ruid<>0) and (ruid<>-1) then //not psevodo user id
+ begin
+ Exit(EPERM);
+ end;
+ if (euid<>0) and (euid<>-1) then //not psevodo user id
+ begin
+ Exit(EPERM);
+ end;
+end;
+
+function sys_setregid(rgid,egid:Integer):Integer;
+begin
+ Result:=0;
+ if (rgid<>0) and (rgid<>-1) then //not psevodo group id
+ begin
+ Exit(EPERM);
+ end;
+ if (egid<>0) and (egid<>-1) then //not psevodo group id
+ begin
+ Exit(EPERM);
+ end;
+end;
+
+{
+ * setresuid(ruid, euid, suid) is like setreuid except control over the saved
+ * uid is explicit.
+ }
+function sys_setresuid(ruid,euid,suid:Integer):Integer;
+begin
+ Result:=0;
+ if (ruid<>0) and (ruid<>-1) then //not psevodo user id
+ begin
+ Exit(EPERM);
+ end;
+ if (euid<>0) and (euid<>-1) then //not psevodo user id
+ begin
+ Exit(EPERM);
+ end;
+ if (suid<>0) and (suid<>-1) then //not psevodo session id
+ begin
+ Exit(EPERM);
+ end;
+end;
+
+{
+ * setresgid(rgid, egid, sgid) is like setregid except control over the saved
+ * gid is explicit.
+ }
+function sys_setresgid(rgid,egid,sgid:Integer):Integer;
+begin
+ Result:=0;
+ if (rgid<>0) and (rgid<>-1) then //not psevodo group id
+ begin
+ Exit(EPERM);
+ end;
+ if (egid<>0) and (egid<>-1) then //not psevodo group id
+ begin
+ Exit(EPERM);
+ end;
+ if (sgid<>0) and (sgid<>-1) then //not psevodo group id
+ begin
+ Exit(EPERM);
+ end;
+end;
+
+function sys_getresuid(ruid,euid,suid:PInteger):Integer;
+var
+ cr_uid:Integer;
+ error1,error2,error3:Integer;
+begin
+ cr_uid:=0; //psevodo user id
+
+ error1:=0;
+ error2:=0;
+ error3:=0;
+
+ if (ruid<>nil) then
+ error1:=copyout(@cr_uid, ruid, sizeof(Integer));
+
+ if (euid<>nil) then
+ error2:=copyout(@cr_uid, euid, sizeof(Integer));
+
+ if (suid<>nil) then
+ error3:=copyout(@cr_uid, suid, sizeof(Integer));
+
+ if (error1<>0) then
+ begin
+ Exit(error1);
+ end else
+ if (error2<>0) then
+ begin
+ Exit(error2);
+ end else
+ begin
+ Exit(error3);
+ end;
+end;
+
+function sys_getresgid(rgid,egid,sgid:PInteger):Integer;
+var
+ cr_gid:Integer;
+ error1,error2,error3:Integer;
+begin
+ cr_gid:=0; //psevodo group id
+
+ error1:=0;
+ error2:=0;
+ error3:=0;
+
+ if (rgid<>nil) then
+ error1:=copyout(@cr_gid, rgid, sizeof(Integer));
+
+ if (egid<>nil) then
+ error2:=copyout(@cr_gid, egid, sizeof(Integer));
+
+ if (sgid<>nil) then
+ error3:=copyout(@cr_gid, sgid, sizeof(Integer));
+
+ if (error1<>0) then
+ begin
+ Exit(error1);
+ end else
+ if (error2<>0) then
+ begin
+ Exit(error2);
+ end else
+ begin
+ Exit(error3);
+ end;
+end;
+
+function sys_issetugid():Integer;
+begin
+ Exit(0);
+end;
+
+{
+ * Get login name, if available.
+ }
+function sys_getlogin(namebuf:PChar;namelen:DWORD):Integer;
+var
+ login:array[0..MAXLOGNAME-1] of AnsiChar;
+ len:ptrint;
+begin
+ if (namelen > MAXLOGNAME) then
+ namelen:=MAXLOGNAME;
+
+ login:='user';
+ len:=strlen(@login);
+
+ if (len > namelen) then
+ Exit(ERANGE);
+
+ Exit(copyout(@login, namebuf, len));
+end;
+
+{
+ * Set login name.
+ }
+function sys_setlogin(namebuf:PChar):Integer;
+begin
+ //error:=priv_check(td, PRIV_PROC_SETLOGIN);
+ Exit(EPERM);
+end;
+
+
+{-
+ * Determine whether td may deliver the specified signal to p.
+ * Returns: 0 for permitted, an errno value otherwise
+ * Locks: Sufficient locks to protect various components of td and p
+ * must be held. td must be curthread, and a lock must be
+ * held for p.
+ * References: td and p must be valid for the lifetime of the call
+ }
+function p_cansignal(signum:Integer):Integer;
+begin
+ if (curkthread=nil) then Exit(-1);
+
+ {
+ * UNIX signalling semantics require that processes in the same
+ * session always be able to deliver SIGCONT to one another,
+ * overriding the remaining protections.
+ }
+ { XXX: This will require an additional lock of some sort. }
+ if (signum=SIGCONT) {and (td^.td_proc^.p_session=p^.p_session)} then
+ Exit(0);
+ {
+ * Some compat layers use SIGTHR and higher signals for
+ * communication between different kernel threads of the same
+ * process, so that they expect that it's always possible to
+ * deliver them, even for suid applications where cr_cansignal() can
+ * deny such ability for security consideration. It should be
+ * pretty safe to do since the only way to create two processes
+ * with the same p_leader is via rfork(2).
+ }
+ if (signum >= SIGTHR) and
+ (signum < SIGTHR + 4) then
+ Exit(0);
+
+ //Exit(cr_cansignal(td^.td_ucred, p, signum));
+ Exit(0);
+end;
+
+
+end.
+
diff --git a/sys/kern/kern_resource.pas b/sys/kern/kern_resource.pas
new file mode 100644
index 00000000..1d41ba76
--- /dev/null
+++ b/sys/kern/kern_resource.pas
@@ -0,0 +1,226 @@
+unit kern_resource;
+
+{$mode ObjFPC}{$H+}
+{$CALLING SysV_ABI_CDecl}
+
+interface
+
+uses
+ time,
+ vmparam,
+ vfile;
+
+const
+ RLIMIT_CPU = 0; // maximum cpu time in seconds
+ RLIMIT_FSIZE = 1; // maximum file size
+ RLIMIT_DATA = 2; // data size
+ RLIMIT_STACK = 3; // stack size
+ RLIMIT_CORE = 4; // core file size
+ RLIMIT_RSS = 5; // resident set size
+ RLIMIT_MEMLOCK= 6; // locked-in-memory address space
+ RLIMIT_NPROC = 7; // number of processes
+ RLIMIT_NOFILE = 8; // number of open files
+ RLIMIT_SBSIZE = 9; // maximum size of all socket buffers
+ RLIMIT_VMEM =10; // virtual process size (incl. mmap)
+ RLIMIT_AS =RLIMIT_VMEM; // standard name for RLIMIT_VMEM
+ RLIMIT_NPTS =11; // pseudo-terminals
+ RLIMIT_SWAP =12; // swap used
+
+function lim_max(which:Integer):QWORD;
+function lim_cur(which:Integer):QWORD;
+
+const
+ RUSAGE_SELF = 0;
+ RUSAGE_CHILDREN=-1;
+ RUSAGE_THREAD = 1;
+
+type
+ p_rusage=^t_rusage;
+ t_rusage=packed record
+ ru_utime :timeval; // user time used
+ ru_stime :timeval; // system time used
+ ru_maxrss :DWORD; // max resident set size
+ ru_ixrss :DWORD; // integral shared memory size *
+ ru_idrss :DWORD; // integral unshared data
+ ru_isrss :DWORD; // integral unshared stack
+ ru_minflt :DWORD; // page reclaims
+ ru_majflt :DWORD; // page faults
+ ru_nswap :DWORD; // swaps
+ ru_inblock :DWORD; // block input operations
+ ru_oublock :DWORD; // block output operations
+ ru_msgsnd :DWORD; // messages sent
+ ru_msgrcv :DWORD; // messages received
+ ru_nsignals:DWORD; // signals received
+ ru_nvcsw :DWORD; // voluntary context switches
+ ru_nivcsw :DWORD; // involuntary
+ end;
+
+const
+ //Process priority specifications to get/setpriority.
+ PRIO_MIN=-20;
+ PRIO_MAX= 20;
+
+ PRIO_PROCESS=0;
+ PRIO_PGRP =1;
+ PRIO_USER =2;
+
+function sys_getpriority(which,who:Integer):Integer;
+function sys_setpriority(which,who,prio:Integer):Integer;
+
+implementation
+
+uses
+ errno,
+ kern_thr,
+ md_proc;
+
+function lim_max(which:Integer):QWORD;
+begin
+ Result:=0;
+ Case which of
+ RLIMIT_DATA :Result:=MAXDSIZ;
+ RLIMIT_STACK :Result:=MAXSSIZ;
+ RLIMIT_MEMLOCK:Result:=pageablemem;
+ RLIMIT_VMEM :Result:=pageablemem;
+ RLIMIT_NOFILE :Result:=maxfilesperproc;
+ else;
+ end;
+end;
+
+function lim_cur(which:Integer):QWORD;
+begin
+ Result:=0;
+ Case which of
+ RLIMIT_DATA :Result:=MAXDSIZ;
+ RLIMIT_STACK :Result:=MAXSSIZ;
+ RLIMIT_MEMLOCK:Result:=pageablemem;
+ RLIMIT_VMEM :Result:=pageablemem;
+ RLIMIT_NOFILE :Result:=maxfilesperproc;
+ else;
+ end;
+end;
+
+function cur_proc_get_nice():Integer; inline;
+begin
+ Result:=get_proc_prio;
+end;
+
+function cur_proc_donice(n:Integer):Integer;
+begin
+ if (n > PRIO_MAX) then n:=PRIO_MAX;
+ if (n < PRIO_MIN) then n:=PRIO_MIN;
+
+ //if (n < cur_proc_get_nice) and (priv_check(td, PRIV_SCHED_SETPRIORITY) <> 0) then
+ // Exit(EACCES);
+
+ Result:=set_proc_prio(n);
+ if (Result<>0) then Result:=EPERM;
+end;
+
+{
+ * Resource controls and accounting.
+ }
+function sys_getpriority(which,who:Integer):Integer;
+var
+ td:p_kthread;
+ error,low:Integer;
+begin
+ td:=curkthread;
+ if (td=nil) then Exit(-1);
+
+ error:=0;
+ low:=PRIO_MAX+1;
+
+ case (which) of
+
+ PRIO_PROCESS:
+ begin
+ if (who=0) or (who=g_pid) then
+ begin
+ low:=cur_proc_get_nice;
+ end;
+ end;
+
+ PRIO_PGRP:
+ begin
+ if (who=0) then
+ begin
+ low:=cur_proc_get_nice;
+ end;
+ end;
+
+ PRIO_USER:
+ begin
+ if (who=0) or (who=g_pid) then
+ begin
+ low:=cur_proc_get_nice;
+ end;
+ end;
+
+ else
+ error:=EINVAL;
+ end;
+
+ if (low=PRIO_MAX+1) and (error=0) then
+ error:=ESRCH;
+
+ td^.td_retval[0]:=low;
+ Exit(error);
+end;
+
+function sys_setpriority(which,who,prio:Integer):Integer;
+var
+ found,error:Integer;
+begin
+ found:=0;
+ error:=0;
+
+ case (which) of
+
+ PRIO_PROCESS:
+ begin
+ if (who=0) or (who=g_pid) then
+ begin
+ PROC_LOCK();
+ error:=cur_proc_donice(prio);
+ PROC_UNLOCK();
+ Inc(found);
+ end;
+ end;
+
+ PRIO_PGRP:
+ begin
+ if (who=0) then
+ begin
+ PROC_LOCK();
+ error:=cur_proc_donice(prio);
+ PROC_UNLOCK();
+ Inc(found);
+ end;
+ end;
+
+ PRIO_USER:
+ begin
+ if (who=0) or (who=g_pid) then
+ begin
+ PROC_LOCK();
+ error:=cur_proc_donice(prio);
+ PROC_UNLOCK();
+ Inc(found);
+ end;
+ end;
+
+ else
+ error:=EINVAL;
+ end;
+
+ if (found=0) and (error=0) then
+ error:=ESRCH;
+
+ Exit(error);
+end;
+
+
+
+end.
+
diff --git a/sys/kern/kern_rtprio.pas b/sys/kern/kern_rtprio.pas
index cb91fb65..1e7b5a8b 100644
--- a/sys/kern/kern_rtprio.pas
+++ b/sys/kern/kern_rtprio.pas
@@ -21,7 +21,7 @@ uses
errno,
kern_thread,
sched_ule,
- vm_machdep;
+ md_proc;
function rtp_to_pri(rtp:p_rtprio;td:p_kthread):Integer;
var
diff --git a/sys/kern/kern_sig.pas b/sys/kern/kern_sig.pas
index dad03897..6ab6aceb 100644
--- a/sys/kern/kern_sig.pas
+++ b/sys/kern/kern_sig.pas
@@ -76,6 +76,8 @@ Function sys_sigsuspend(sigmask:p_sigset_t):Integer;
Function sys_sigaltstack(ss:p_stack_t;oss:p_stack_t):Integer;
+function sys_kill(pid,signum:Integer):Integer;
+
Function sigonstack(sp:size_t):Integer;
procedure sigqueue_init(list:p_sigqueue);
procedure tdsigcleanup(td:p_kthread);
@@ -112,7 +114,11 @@ uses
kern_mtx,
kern_time,
kern_thread,
+ kern_exit,
+ kern_prot,
vm_machdep,
+ md_thread,
+ md_proc,
machdep,
sched_ule,
subr_sleepqueue;
@@ -1115,6 +1121,103 @@ begin
end;
end;
+function pksignal(sig:Integer;ksi:p_ksiginfo):Integer; forward;
+
+{
+ * Common code for kill process group/broadcast kill.
+ * cp is calling process.
+ }
+function killpg1(sig,pgid,all:Integer;ksi:p_ksiginfo):Integer;
+var
+ err:Integer;
+begin
+ Result:=ESRCH;
+
+ if (all<>0) then
+ begin
+ //broadcast
+ PROC_LOCK;
+
+ err:=p_cansignal(sig);
+ if (err=0) then
+ begin
+ if (sig<>0) then pksignal(sig, ksi);
+ Result:=err;
+ end else
+ if (Result=ESRCH) then
+ begin
+ Result:=err;
+ end;
+
+ PROC_UNLOCK;
+ end else
+ begin
+ if (pgid=0) then
+ begin
+ //zero pgid means send to my process group.
+ end else
+ begin
+ Exit(ESRCH);
+ end;
+
+ PROC_LOCK;
+
+ err:=p_cansignal(sig);
+ if (err=0) then
+ begin
+ if (sig<>0) then pksignal(sig, ksi);
+ Result:=err;
+ end else
+ if (Result=ESRCH) then
+ begin
+ Result:=err;
+ end;
+
+ PROC_UNLOCK;
+ end;
+end;
+
+function sys_kill(pid,signum:Integer):Integer;
+var
+ ksi:ksiginfo_t;
+ error:Integer;
+begin
+ if (signum > _SIG_MAXSIG) then
+ Exit(EINVAL);
+
+ ksiginfo_init(@ksi);
+ ksi.ksi_info.si_signo:=signum;
+ ksi.ksi_info.si_code:=SI_USER;
+ ksi.ksi_info.si_pid :=pid;
+
+ if (pid > 0) then
+ begin
+ { kill single process }
+ if (pid<>g_pid) then Exit(ESRCH);
+
+ PROC_LOCK;
+
+ error:=p_cansignal(signum);
+
+ if (error=0) and (signum<>0) then
+ pksignal(signum, @ksi);
+
+ PROC_UNLOCK;
+
+ Exit(error);
+ end;
+
+ case pid of
+ -1: { broadcast signal }
+ Exit(killpg1(signum, 0, 1, @ksi));
+ 0: { signal own process group }
+ Exit(killpg1(signum, 0, 0, @ksi));
+ else { negative explicit process group }
+ Exit(killpg1(signum, -pid, 0, @ksi));
+ end;
+ { NOTREACHED }
+end;
+
procedure postsig_done(sig:Integer;td:p_kthread);
var
mask:sigset_t;
@@ -1585,14 +1688,9 @@ begin
Result:=1;
end;
-function W_EXITCODE(ret,sig:Integer):Integer; inline;
-begin
- Result:=(ret shl 8) or sig;
-end;
-
procedure sigexit(td:p_kthread;sig:Integer);
begin
- Halt(W_EXITCODE(0,sig));
+ exit1(W_EXITCODE(0,sig));
// NOTREACHED
end;
diff --git a/sys/kern/kern_synch.pas b/sys/kern/kern_synch.pas
index fc4d32d8..e023115a 100644
--- a/sys/kern/kern_synch.pas
+++ b/sys/kern/kern_synch.pas
@@ -47,6 +47,8 @@ procedure wakeup_one(ident:Pointer);
procedure maybe_yield();
procedure kern_yield(prio:Integer);
function sys_yield():Integer;
+function sys_sched_yield():Integer;
+function sys_cpumode_yield():Integer;
implementation
@@ -169,5 +171,15 @@ begin
Exit(0);
end;
+function sys_sched_yield():Integer;
+begin
+ Result:=sys_yield;
+end;
+
+function sys_cpumode_yield():Integer;
+begin
+ Result:=sys_yield;
+end;
+
end.
diff --git a/sys/kern/kern_thr.pas b/sys/kern/kern_thr.pas
index 15ce4562..5ac0232c 100644
--- a/sys/kern/kern_thr.pas
+++ b/sys/kern/kern_thr.pas
@@ -107,6 +107,8 @@ type
iflag :Integer; //0x710
end;
+ t_td_name=array[0..31] of AnsiChar;
+
p_kthread=^kthread;
kthread=record
td_umtxq :Pointer; //p_umtx_q
@@ -128,7 +130,7 @@ type
td_base_user_pri:Word;
td_lend_user_pri:Word;
td_user_pri :Word;
- td_name :array[0..31] of AnsiChar;
+ td_name :t_td_name;
//
td_cpuset :Ptruint;
td_sigmask :sigset_t;
@@ -164,8 +166,8 @@ type
stack_size:Ptruint;
tls_base :Pointer;
tls_size :Ptruint;
- child_tid :PQWORD;
- parent_tid:PQWORD;
+ child_tid :PDWORD;
+ parent_tid:PDWORD;
flags :Integer;
align :Integer;
rtp :Pointer;
@@ -388,7 +390,7 @@ var
td:p_kthread;
begin
td:=curkthread;
- if (td=nil) then Exit;
+ if (td=nil) then Exit(0);
Result:=(not flags) or (td^.td_pflags and flags);
td^.td_pflags:=td^.td_pflags or flags;
end;
diff --git a/sys/kern/kern_thread.pas b/sys/kern/kern_thread.pas
index c26710e4..20f27e4e 100644
--- a/sys/kern/kern_thread.pas
+++ b/sys/kern/kern_thread.pas
@@ -6,6 +6,7 @@ unit kern_thread;
interface
uses
+ sysutils,
mqueue,
kern_thr,
ntapi,
@@ -14,7 +15,6 @@ uses
signal,
signalvar,
time,
- kern_time,
rtprio,
kern_rtprio,
hamt;
@@ -23,12 +23,13 @@ function thread_alloc:p_kthread;
procedure thread_free(td:p_kthread);
function sys_thr_new(_param:p_thr_param;_size:Integer):Integer;
-function sys_thr_self(id:PQWORD):Integer;
+function sys_thr_self(id:PDWORD):Integer;
procedure sys_thr_exit(state:PQWORD);
-function sys_thr_kill(id:QWORD;sig:Integer):Integer;
+function sys_thr_kill(id:DWORD;sig:Integer):Integer;
function sys_thr_suspend(timeout:ptimespec):Integer;
-function sys_thr_wake(id:QWORD):Integer;
-function sys_thr_set_name(id:QWORD;pname:PChar):Integer;
+function sys_thr_wake(id:DWORD):Integer;
+function sys_thr_set_name(id:DWORD;pname:PChar):Integer;
+function sys_thr_get_name(id:DWORD;pname:PChar):Integer;
function sys_amd64_set_fsbase(base:Pointer):Integer;
@@ -69,6 +70,7 @@ uses
errno,
systm,
vm_machdep,
+ md_thread,
kern_rwlock,
kern_mtx,
kern_umtx,
@@ -297,8 +299,8 @@ function create_thread(td :p_kthread; //calling thread
stack_base:Pointer;
stack_size:QWORD;
tls_base :Pointer;
- child_tid :PQWORD;
- parent_tid:PQWORD;
+ child_tid :PDWORD;
+ parent_tid:PDWORD;
rtp :p_rtprio;
name :PChar
):Integer;
@@ -401,13 +403,13 @@ begin
if (child_tid<>nil) then
begin
- n:=suword64(child_tid^,newtd^.td_tid);
+ n:=suword32(child_tid^,newtd^.td_tid);
if (n<>0) then Goto _term;
end;
if (parent_tid<>nil) then
begin
- n:=suword64(parent_tid^,newtd^.td_tid);
+ n:=suword32(parent_tid^,newtd^.td_tid);
if (n<>0) then Goto _term;
end;
@@ -420,7 +422,7 @@ begin
if (name<>nil) then
begin
- Move(name^,newtd^.td_name,SizeOf(newtd^.td_name));
+ Move(name^,newtd^.td_name,SizeOf(t_td_name));
end;
SetThreadDebugName(newtd^.td_handle,'ps4:'+newtd^.td_name);
@@ -450,7 +452,7 @@ function kern_thr_new(td:p_kthread;param:p_thr_param):Integer;
var
rtp:t_rtprio;
rtpp:p_rtprio;
- name:array[0..31] of AnsiChar;
+ name:t_td_name;
begin
Result:=0;
rtpp:=nil;
@@ -462,7 +464,7 @@ begin
rtpp:=@rtp;
end;
- name[0]:=#0;
+ name:=Default(t_td_name);
if (param^.name<>nil) then
begin
@@ -530,7 +532,7 @@ begin
RtlExitUserThread(0);
end;
-function sys_thr_self(id:PQWORD):Integer;
+function sys_thr_self(id:PDWORD):Integer;
var
td:p_kthread;
begin
@@ -539,7 +541,7 @@ begin
td:=curkthread;
if (td=nil) then Exit(EFAULT);
- Result:=suword64(id^,td^.td_tid);
+ Result:=suword32(id^,td^.td_tid);
if (Result<>0) then Exit(EFAULT);
Result:=0;
@@ -582,7 +584,7 @@ begin
end;
end;
-function sys_thr_kill(id:QWORD;sig:Integer):Integer;
+function sys_thr_kill(id:DWORD;sig:Integer):Integer;
var
data:_t_stk;
begin
@@ -592,7 +594,7 @@ begin
data.ksi.ksi_info.si_signo:=sig;
data.ksi.ksi_info.si_code :=SI_LWP;
- if (int64(id)=-1) then
+ if (Integer(id)=-1) then
begin
if (sig<>0) and (not _SIG_VALID(sig)) then
begin
@@ -702,7 +704,7 @@ begin
Result:=kern_thr_suspend(td,tsp);
end;
-function sys_thr_wake(id:QWORD):Integer;
+function sys_thr_wake(id:DWORD):Integer;
var
td:p_kthread;
begin
@@ -728,21 +730,21 @@ begin
thread_dec_ref(td);
end;
-function sys_thr_set_name(id:QWORD;pname:PChar):Integer;
+function sys_thr_set_name(id:DWORD;pname:PChar):Integer;
var
td:p_kthread;
- name:array[0..31] of AnsiChar;
+ name:t_td_name;
begin
Result:=0;
- name[0]:=#0;
+ name:=Default(t_td_name);
if (name<>nil) then
begin
Result:=copyinstr(pname,@name,32,nil);
if (Result<>0) then Exit;
end;
- if (int64(id)=-1) then
+ if (Integer(id)=-1) then
begin
//TODO SetProcName
Exit;
@@ -753,7 +755,7 @@ begin
thread_lock(td);
- Move(name,td^.td_name,SizeOf(td^.td_name));
+ td^.td_name:=name;
SetThreadDebugName(td^.td_handle,'ps4:'+name);
thread_unlock(td);
@@ -761,6 +763,41 @@ begin
thread_dec_ref(td);
end;
+function strnlen(s:PChar;maxlen:ptrint):ptrint;
+var
+ len:size_t;
+begin
+ For len:=0 to maxlen-1 do
+ begin
+ if (s^=#0) then Break;
+ Inc(s);
+ end;
+ Exit(len);
+end;
+
+function sys_thr_get_name(id:DWORD;pname:PChar):Integer;
+var
+ td:p_kthread;
+ name:t_td_name;
+ len:ptrint;
+begin
+ Result:=0;
+
+ td:=tdfind(DWORD(id));
+ if (td=nil) then Exit(ESRCH);
+
+ thread_lock(td);
+
+ name:=td^.td_name;
+
+ thread_unlock(td);
+
+ len:=strnlen(name,31);
+ Result:=copyout(@name,pname,len+1);
+
+ thread_dec_ref(td);
+end;
+
function sys_amd64_set_fsbase(base:Pointer):Integer;
var
td:p_kthread;
diff --git a/sys/kern/kern_umtx.pas b/sys/kern/kern_umtx.pas
index f9391d33..df65bf8d 100644
--- a/sys/kern/kern_umtx.pas
+++ b/sys/kern/kern_umtx.pas
@@ -20,9 +20,9 @@ procedure umtx_thread_init(td:p_kthread);
procedure umtx_thread_exit(td:p_kthread);
procedure umtx_thread_fini(td:p_kthread);
-function _sys_umtx_lock(mtx:p_umtx):Integer;
-function _sys_umtx_unlock(mtx:p_umtx):Integer;
-function _sys_umtx_op(obj:Pointer;op:Integer;val:QWORD;uaddr1,uaddr2:Pointer):Integer;
+function sys__umtx_lock(mtx:p_umtx):Integer;
+function sys__umtx_unlock(mtx:p_umtx):Integer;
+function sys__umtx_op(obj:Pointer;op:Integer;val:QWORD;uaddr1,uaddr2:Pointer):Integer;
//
@@ -2453,7 +2453,7 @@ begin
Result:=do_rw_unlock(td,obj);
end;
-function _sys_umtx_lock(mtx:p_umtx):Integer;
+function sys__umtx_lock(mtx:p_umtx):Integer;
var
td:p_kthread;
begin
@@ -2463,7 +2463,7 @@ begin
Result:=_do_lock_umtx(td,mtx,td^.td_tid,0);
end;
-function _sys_umtx_unlock(mtx:p_umtx):Integer;
+function sys__umtx_unlock(mtx:p_umtx):Integer;
var
td:p_kthread;
begin
@@ -2495,7 +2495,7 @@ begin
Result:=do_sem_wake(td,obj)
end;
-function _sys_umtx_op(obj:Pointer;op:Integer;val:QWORD;uaddr1,uaddr2:Pointer):Integer;
+function sys__umtx_op(obj:Pointer;op:Integer;val:QWORD;uaddr1,uaddr2:Pointer):Integer;
var
td:p_kthread;
begin
diff --git a/sys/kern/md_proc.pas b/sys/kern/md_proc.pas
new file mode 100644
index 00000000..89d6d547
--- /dev/null
+++ b/sys/kern/md_proc.pas
@@ -0,0 +1,100 @@
+unit md_proc;
+
+{$mode ObjFPC}{$H+}
+{$CALLING SysV_ABI_CDecl}
+
+interface
+
+uses
+ ntapi,
+ windows;
+
+var
+ g_pid:DWORD=0;
+
+function cpuset_setproc(new:Ptruint):Integer;
+function cpuset_getproc(var old:Ptruint):Integer;
+
+function get_proc_prio():Integer;
+function set_proc_prio(n:Integer):Integer;
+
+implementation
+
+function cpuset_setproc(new:Ptruint):Integer;
+begin
+ Result:=NtSetInformationProcess(NtCurrentProcess,
+ ProcessAffinityMask,
+ @new,
+ SizeOf(QWORD));
+end;
+
+function cpuset_getproc(var old:Ptruint):Integer;
+var
+ info:PROCESS_BASIC_INFORMATION;
+begin
+ Result:=NtQueryInformationProcess(NtCurrentProcess,
+ ProcessBasicInformation,
+ @info,
+ SizeOf(info),
+ nil);
+ if (Result=0) then
+ begin
+ old:=info.AffinityMask;
+ end;
+end;
+
+function get_proc_prio():Integer;
+var
+ info:PROCESS_PRIORITY_CLASS;
+begin
+ Result:=NtQueryInformationProcess(NtCurrentProcess,
+ ProcessPriorityClass,
+ @info,
+ SizeOf(info),
+ nil);
+ if (Result=0) then
+ begin
+ Result:=0;
+
+ case info.PriorityClass of
+ PROCESS_PRIORITY_CLASS_IDLE :Result:=-20;
+ PROCESS_PRIORITY_CLASS_BELOW_NORMAL:Result:=-10;
+ PROCESS_PRIORITY_CLASS_NORMAL :Result:=0;
+ PROCESS_PRIORITY_CLASS_ABOVE_NORMAL:Result:=10;
+ PROCESS_PRIORITY_CLASS_HIGH :Result:=20;
+ else;
+ end;
+
+ end else
+ begin
+ Result:=0;
+ end;
+end;
+
+function set_proc_prio(n:Integer):Integer;
+var
+ info:PROCESS_PRIORITY_CLASS;
+begin
+ info.Foreground :=False;
+ info.PriorityClass:=PROCESS_PRIORITY_CLASS_NORMAL;
+
+ case n of
+ -20..-14:info.PriorityClass:=PROCESS_PRIORITY_CLASS_IDLE;
+ -13.. -7:info.PriorityClass:=PROCESS_PRIORITY_CLASS_BELOW_NORMAL;
+ -6.. 6:info.PriorityClass:=PROCESS_PRIORITY_CLASS_NORMAL;
+ 7.. 13:info.PriorityClass:=PROCESS_PRIORITY_CLASS_ABOVE_NORMAL;
+ 14.. 20:info.PriorityClass:=PROCESS_PRIORITY_CLASS_HIGH;
+ else;
+ end;
+
+ Result:=NtSetInformationProcess(NtCurrentProcess,
+ ProcessPriorityClass,
+ @info,
+ SizeOf(info));
+end;
+
+initialization
+ g_pid:=GetCurrentProcessId;
+
+end.
+
diff --git a/sys/kern/md_thread.pas b/sys/kern/md_thread.pas
new file mode 100644
index 00000000..00f5b315
--- /dev/null
+++ b/sys/kern/md_thread.pas
@@ -0,0 +1,115 @@
+unit md_thread;
+
+{$mode ObjFPC}{$H+}
+{$CALLING SysV_ABI_CDecl}
+
+interface
+
+uses
+ ntapi,
+ windows,
+ kern_thr;
+
+Const
+ SYS_STACK_RSRV=64*1024;
+ SYS_STACK_SIZE=16*1024;
+
+function cpu_thread_alloc(td:p_kthread):Integer;
+function cpu_thread_free(td:p_kthread):Integer;
+function cpuset_setaffinity(td:p_kthread;new:Ptruint):Integer;
+procedure cpu_set_user_tls(td:p_kthread;base:Pointer);
+function cpu_set_priority(td:p_kthread;prio:Integer):Integer;
+function cpu_getstack(td:p_kthread):QWORD; inline;
+
+implementation
+
+function cpu_thread_alloc(td:p_kthread):Integer;
+var
+ data:Pointer;
+ size:ULONG_PTR;
+begin
+ data:=nil;
+ size:=SYS_STACK_RSRV;
+
+ Result:=NtAllocateVirtualMemory(
+ NtCurrentProcess,
+ @data,
+ 0,
+ @size,
+ MEM_RESERVE,
+ PAGE_READWRITE
+ );
+ if (Result<>0) then Exit;
+
+ data:=data+SYS_STACK_RSRV-SYS_STACK_SIZE;
+ size:=SYS_STACK_SIZE;
+
+ Result:=NtAllocateVirtualMemory(
+ NtCurrentProcess,
+ @data,
+ 0,
+ @size,
+ MEM_COMMIT,
+ PAGE_READWRITE
+ );
+
+ data:=data+SYS_STACK_SIZE;
+ td^.td_kstack:=data;
+end;
+
+function cpu_thread_free(td:p_kthread):Integer;
+var
+ data:Pointer;
+ size:ULONG_PTR;
+begin
+ data:=td^.td_kstack;
+ data:=data-SYS_STACK_RSRV;
+ size:=0;
+
+ Result:=NtFreeVirtualMemory(
+ NtCurrentProcess,
+ @data,
+ @size,
+ MEM_RELEASE
+ );
+end;
+
+function cpuset_setaffinity(td:p_kthread;new:Ptruint):Integer;
+begin
+ td^.td_cpuset:=new;
+ Result:=NtSetInformationThread(td^.td_handle,ThreadAffinityMask,@new,SizeOf(Ptruint));
+end;
+
+procedure cpu_set_user_tls(td:p_kthread;base:Pointer); inline;
+begin
+ td^.pcb_fsbase:=base;
+ td^.td_teb^.tcb:=base;
+end;
+
+function cpu_set_priority(td:p_kthread;prio:Integer):Integer;
+begin
+ td^.td_priority:=prio;
+
+ Case prio of
+ 0..255:prio:= 16;
+ 256..496:prio:= 2;
+ 497..526:prio:= 1;
+ 527..556:prio:= 0;
+ 557..586:prio:=-1;
+ 587..767:prio:=-2;
+ else
+ prio:=-16;
+ end;
+
+ Result:=NtSetInformationThread(td^.td_handle,ThreadBasePriority,@prio,SizeOf(Integer));
+end;
+
+function cpu_getstack(td:p_kthread):QWORD; inline;
+begin
+ Result:=td^.td_frame^.tf_rsp;
+end;
+
+
+
+end.
+
diff --git a/sys/kern/sched_ule.pas b/sys/kern/sched_ule.pas
index 7ea2ba5c..1e66badc 100644
--- a/sys/kern/sched_ule.pas
+++ b/sys/kern/sched_ule.pas
@@ -24,7 +24,8 @@ function setrunnable(td:p_kthread):Integer;
implementation
uses
- vm_machdep;
+ vm_machdep,
+ md_thread;
procedure sched_fork_thread(td,childtd:p_kthread);
begin
diff --git a/sys/kern/vm_machdep.pas b/sys/kern/vm_machdep.pas
index 7f97b08f..e3677103 100644
--- a/sys/kern/vm_machdep.pas
+++ b/sys/kern/vm_machdep.pas
@@ -13,18 +13,6 @@ uses
trap,
kern_thr;
-var
- g_pid:DWORD=0;
-
-function cpu_thread_alloc(td:p_kthread):Integer;
-function cpu_thread_free(td:p_kthread):Integer;
-function cpuset_setaffinity(td:p_kthread;new:Ptruint):Integer;
-function cpuset_setproc(new:Ptruint):Integer;
-function cpuset_getproc(var old:Ptruint):Integer;
-procedure cpu_set_user_tls(td:p_kthread;base:Pointer);
-function cpu_set_priority(td:p_kthread;prio:Integer):Integer;
-function cpu_getstack(td:p_kthread):QWORD;
-
procedure ipi_sigreturn;
function ipi_send_cpu(td:p_kthread):Integer;
@@ -45,7 +33,8 @@ uses
machdep,
md_context,
signal,
- kern_sig;
+ kern_sig,
+ md_thread;
function ntw2px(n:Integer):Integer; inline;
begin
@@ -135,121 +124,11 @@ begin
NtYieldExecution;
end;
-Const
- SYS_STACK_RSRV=64*1024;
- SYS_STACK_SIZE=16*1024;
-
-function cpu_thread_alloc(td:p_kthread):Integer;
-var
- data:Pointer;
- size:ULONG_PTR;
-begin
- data:=nil;
- size:=SYS_STACK_RSRV;
-
- Result:=NtAllocateVirtualMemory(
- NtCurrentProcess,
- @data,
- 0,
- @size,
- MEM_RESERVE,
- PAGE_READWRITE
- );
- if (Result<>0) then Exit;
-
- data:=data+SYS_STACK_RSRV-SYS_STACK_SIZE;
- size:=SYS_STACK_SIZE;
-
- Result:=NtAllocateVirtualMemory(
- NtCurrentProcess,
- @data,
- 0,
- @size,
- MEM_COMMIT,
- PAGE_READWRITE
- );
-
- data:=data+SYS_STACK_SIZE;
- td^.td_kstack:=data;
-end;
-
-function cpu_thread_free(td:p_kthread):Integer;
-var
- data:Pointer;
- size:ULONG_PTR;
-begin
- data:=td^.td_kstack;
- data:=data-SYS_STACK_RSRV;
- size:=0;
-
- Result:=NtFreeVirtualMemory(
- NtCurrentProcess,
- @data,
- @size,
- MEM_RELEASE
- );
-end;
-
-function cpuset_setaffinity(td:p_kthread;new:Ptruint):Integer;
-begin
- td^.td_cpuset:=new;
- Result:=NtSetInformationThread(td^.td_handle,ThreadAffinityMask,@new,SizeOf(Ptruint));
-end;
-
-function cpuset_setproc(new:Ptruint):Integer;
-begin
- Result:=NtSetInformationProcess(NtCurrentProcess,ProcessAffinityMask,@new,SizeOf(QWORD));
-end;
-
-function cpuset_getproc(var old:Ptruint):Integer;
-var
- info:PROCESS_BASIC_INFORMATION;
-begin
- Result:=NtQueryInformationProcess(NtCurrentProcess,
- ProcessBasicInformation,
- @info,
- SizeOf(PROCESS_BASIC_INFORMATION),
- nil);
- if (Result=0) then
- begin
- old:=info.AffinityMask;
- end;
-end;
-
-procedure cpu_set_user_tls(td:p_kthread;base:Pointer); inline;
-begin
- td^.pcb_fsbase:=base;
- td^.td_teb^.tcb:=base;
-end;
-
function cpu_get_iflag(td:p_kthread):PInteger; inline;
begin
Result:=@td^.td_teb^.iflag;
end;
-function cpu_set_priority(td:p_kthread;prio:Integer):Integer;
-begin
- td^.td_priority:=prio;
-
- Case prio of
- 0..255:prio:= 16;
- 256..496:prio:= 2;
- 497..526:prio:= 1;
- 527..556:prio:= 0;
- 557..586:prio:=-1;
- 587..767:prio:=-2;
- else
- prio:=-16;
- end;
-
- Result:=NtSetInformationThread(td^.td_handle,ThreadBasePriority,@prio,SizeOf(Integer));
-end;
-
-function cpu_getstack(td:p_kthread):QWORD; inline;
-begin
- Result:=td^.td_frame^.tf_rsp;
-end;
-
function IS_SYSTEM_STACK(td:p_kthread;rsp:qword):Boolean; inline;
begin
Result:=(rsp<=QWORD(td^.td_kstack)) and (rsp>(QWORD(td^.td_kstack)-SYS_STACK_SIZE));
@@ -513,9 +392,6 @@ begin
PROC_UNLOCK;
end;
-initialization
- g_pid:=GetCurrentProcessId;
-
end.
diff --git a/sys/rtprio.pas b/sys/rtprio.pas
index de1a4a1a..edbfdad7 100644
--- a/sys/rtprio.pas
+++ b/sys/rtprio.pas
@@ -42,8 +42,8 @@ type
_prio:Word;
end;
-function PRI_BASE(P:Word):Word; inline;
-function RTP_PRIO_BASE(P:Word):Word; inline;
+function PRI_BASE(P:Word):Word;
+function RTP_PRIO_BASE(P:Word):Word;
function rtprio_thread(func,tid:Integer;rtp:p_rtprio):Integer;
function _rtprio(func,pid:Integer;rtp:p_rtprio):Integer;
@@ -55,12 +55,12 @@ uses
thr_error,
kern_rtprio;
-function PRI_BASE(P:Word):Word; inline;
+function PRI_BASE(P:Word):Word;
begin
Result:=P and (not PRI_FIFO_BIT);
end;
-function RTP_PRIO_BASE(P:Word):Word; inline;
+function RTP_PRIO_BASE(P:Word):Word;
begin
Result:=P and (not PRI_FIFO_BIT);
end;
diff --git a/sys/sys_umtx.pas b/sys/sys_umtx.pas
index 62865583..bb8ad9b2 100644
--- a/sys/sys_umtx.pas
+++ b/sys/sys_umtx.pas
@@ -89,28 +89,28 @@ end;
function _umtx_lock(mtx:p_umtx):Integer; assembler; nostackframe;
asm
- movq _sys_umtx_lock,%rax
+ movq sys__umtx_lock,%rax
call fast_syscall
jmp cerror
end;
function _umtx_unlock(mtx:p_umtx):Integer; assembler; nostackframe;
asm
- movq _sys_umtx_unlock,%rax
+ movq sys__umtx_unlock,%rax
call fast_syscall
jmp cerror
end;
function _umtx_op(obj:Pointer;op:Integer;val:QWORD;uaddr1,uaddr2:Pointer):Integer; assembler; nostackframe;
asm
- movq _sys_umtx_op,%rax
+ movq sys__umtx_op,%rax
call fast_syscall
jmp cerror
end;
function _umtx_op_err(obj:Pointer;op:Integer;val:QWORD;uaddr1,uaddr2:Pointer):Integer; assembler; nostackframe;
asm
- movq _sys_umtx_op,%rax
+ movq sys__umtx_op,%rax
call fast_syscall
end;
diff --git a/sys/test/project1.lpi b/sys/test/project1.lpi
index 1fc12f76..a594193b 100644
--- a/sys/test/project1.lpi
+++ b/sys/test/project1.lpi
@@ -225,10 +225,6 @@
-
-
-
-
@@ -501,6 +497,26 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/sys/test/project1.lpr b/sys/test/project1.lpr
index 6e45de7a..b5aed014 100644
--- a/sys/test/project1.lpr
+++ b/sys/test/project1.lpr
@@ -31,7 +31,7 @@ uses
kern_condvar,
kern_osem,
kern_id,
- sys_osem,
+ sys_osem,
kern_evf,
sys_evf,
rtprio,
@@ -72,7 +72,10 @@ uses
null_vnops,
null_vfsops,
ufs,
- vmount;
+ vmount,
+ kern_prot,
+ kern_resource,
+ md_proc;
var
mtx:umutex;
@@ -1092,6 +1095,10 @@ begin
//test_map;
sys_init;
+ Writeln(get_proc_prio());
+ Writeln(set_proc_prio(14));
+ Writeln(get_proc_prio());
+
e:=_umtx_op(nil,UMTX_OP_RW_WRLOCK,0,nil,nil);
Writeln('me=',e,' _errno:',__error^);
diff --git a/sys/test/test.txt b/sys/test/test.txt
new file mode 100644
index 00000000..73396786
--- /dev/null
+++ b/sys/test/test.txt
@@ -0,0 +1 @@
+1111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
\ No newline at end of file
diff --git a/sys/thr.pas b/sys/thr.pas
index eee0cba1..ea1c02c5 100644
--- a/sys/thr.pas
+++ b/sys/thr.pas
@@ -34,7 +34,7 @@ implementation
uses
trap,
thr_error,
- vm_machdep;
+ md_proc;
function getpid:Integer;
begin
diff --git a/sys/vm/kern_resource.pas b/sys/vm/kern_resource.pas
deleted file mode 100644
index db485c9a..00000000
--- a/sys/vm/kern_resource.pas
+++ /dev/null
@@ -1,60 +0,0 @@
-unit kern_resource;
-
-{$mode ObjFPC}{$H+}
-{$CALLING SysV_ABI_CDecl}
-
-interface
-
-uses
- vmparam,
- vfile;
-
-const
- RLIMIT_CPU = 0; // maximum cpu time in seconds
- RLIMIT_FSIZE = 1; // maximum file size
- RLIMIT_DATA = 2; // data size
- RLIMIT_STACK = 3; // stack size
- RLIMIT_CORE = 4; // core file size
- RLIMIT_RSS = 5; // resident set size
- RLIMIT_MEMLOCK= 6; // locked-in-memory address space
- RLIMIT_NPROC = 7; // number of processes
- RLIMIT_NOFILE = 8; // number of open files
- RLIMIT_SBSIZE = 9; // maximum size of all socket buffers
- RLIMIT_VMEM =10; // virtual process size (incl. mmap)
- RLIMIT_AS =RLIMIT_VMEM; // standard name for RLIMIT_VMEM
- RLIMIT_NPTS =11; // pseudo-terminals
- RLIMIT_SWAP =12; // swap used
-
-function lim_max(which:Integer):QWORD;
-function lim_cur(which:Integer):QWORD;
-
-implementation
-
-function lim_max(which:Integer):QWORD;
-begin
- Result:=0;
- Case which of
- RLIMIT_DATA :Result:=MAXDSIZ;
- RLIMIT_STACK :Result:=MAXSSIZ;
- RLIMIT_MEMLOCK:Result:=pageablemem;
- RLIMIT_VMEM :Result:=pageablemem;
- RLIMIT_NOFILE :Result:=maxfilesperproc;
- else;
- end;
-end;
-
-function lim_cur(which:Integer):QWORD;
-begin
- Result:=0;
- Case which of
- RLIMIT_DATA :Result:=MAXDSIZ;
- RLIMIT_STACK :Result:=MAXSSIZ;
- RLIMIT_MEMLOCK:Result:=pageablemem;
- RLIMIT_VMEM :Result:=pageablemem;
- RLIMIT_NOFILE :Result:=maxfilesperproc;
- else;
- end;
-end;
-
-end.
-
diff --git a/tools/syscalls_gen/_sysent.pas b/tools/syscalls_gen/_sysent.pas
new file mode 100644
index 00000000..aa2b0b3c
--- /dev/null
+++ b/tools/syscalls_gen/_sysent.pas
@@ -0,0 +1,3435 @@
+unit _sysent;
+
+{$mode ObjFPC}{$H+}
+{$CALLING SysV_ABI_CDecl}
+
+interface
+
+function nosys:Integer;
+function nosup:Integer;
+function nzero:Integer;
+
+type
+ t_sysent=packed record
+ sy_narg:ptruint;
+ sy_call:Pointer;
+ sy_name:PChar;
+ end;
+
+const
+ sysent_table:array[0..677] of t_sysent=(
+ (//[0]
+ sy_narg:0;
+ sy_call:@nosys;
+ sy_name:'nosys'
+ ),
+ (//[1]
+ sy_narg:1;
+ sy_call:nil;
+ sy_name:'sys_sys_exit'
+ ),
+ (//[2]
+ sy_narg:0;
+ sy_call:nil;
+ sy_name:'sys_fork'
+ ),
+ (//[3]
+ sy_narg:3;
+ sy_call:nil;
+ sy_name:'sys_read'
+ ),
+ (//[4]
+ sy_narg:3;
+ sy_call:nil;
+ sy_name:'sys_write'
+ ),
+ (//[5]
+ sy_narg:3;
+ sy_call:nil;
+ sy_name:'sys_open'
+ ),
+ (//[6]
+ sy_narg:1;
+ sy_call:nil;
+ sy_name:'sys_close'
+ ),
+ (//[7]
+ sy_narg:4;
+ sy_call:nil;
+ sy_name:'sys_wait4'
+ ),
+ (//[8]
+ sy_narg:0;
+ sy_call:@nosys;
+ sy_name:'nosys'
+ ),
+ (//[9]
+ sy_narg:2;
+ sy_call:nil;
+ sy_name:'sys_link'
+ ),
+ (//[10]
+ sy_narg:1;
+ sy_call:nil;
+ sy_name:'sys_unlink'
+ ),
+ (//[11]
+ sy_narg:0;
+ sy_call:@nosys;
+ sy_name:'nosys'
+ ),
+ (//[12]
+ sy_narg:1;
+ sy_call:nil;
+ sy_name:'sys_chdir'
+ ),
+ (//[13]
+ sy_narg:1;
+ sy_call:nil;
+ sy_name:'sys_fchdir'
+ ),
+ (//[14]
+ sy_narg:3;
+ sy_call:nil;
+ sy_name:'sys_mknod'
+ ),
+ (//[15]
+ sy_narg:2;
+ sy_call:nil;
+ sy_name:'sys_chmod'
+ ),
+ (//[16]
+ sy_narg:3;
+ sy_call:nil;
+ sy_name:'sys_chown'
+ ),
+ (//[17]
+ sy_narg:0;
+ sy_call:@nosys;
+ sy_name:'nosys'
+ ),
+ (//[18]
+ sy_narg:0;
+ sy_call:@nosys;
+ sy_name:'nosys'
+ ),
+ (//[19]
+ sy_narg:0;
+ sy_call:@nosys;
+ sy_name:'nosys'
+ ),
+ (//[20]
+ sy_narg:0;
+ sy_call:nil;
+ sy_name:'sys_getpid'
+ ),
+ (//[21]
+ sy_narg:4;
+ sy_call:nil;
+ sy_name:'sys_mount'
+ ),
+ (//[22]
+ sy_narg:2;
+ sy_call:nil;
+ sy_name:'sys_unmount'
+ ),
+ (//[23]
+ sy_narg:1;
+ sy_call:nil;
+ sy_name:'sys_setuid'
+ ),
+ (//[24]
+ sy_narg:0;
+ sy_call:nil;
+ sy_name:'sys_getuid'
+ ),
+ (//[25]
+ sy_narg:0;
+ sy_call:nil;
+ sy_name:'sys_geteuid'
+ ),
+ (//[26]
+ sy_narg:4;
+ sy_call:nil;
+ sy_name:'sys_ptrace'
+ ),
+ (//[27]
+ sy_narg:3;
+ sy_call:nil;
+ sy_name:'sys_recvmsg'
+ ),
+ (//[28]
+ sy_narg:3;
+ sy_call:nil;
+ sy_name:'sys_sendmsg'
+ ),
+ (//[29]
+ sy_narg:6;
+ sy_call:nil;
+ sy_name:'sys_recvfrom'
+ ),
+ (//[30]
+ sy_narg:3;
+ sy_call:nil;
+ sy_name:'sys_accept'
+ ),
+ (//[31]
+ sy_narg:3;
+ sy_call:nil;
+ sy_name:'sys_getpeername'
+ ),
+ (//[32]
+ sy_narg:3;
+ sy_call:nil;
+ sy_name:'sys_getsockname'
+ ),
+ (//[33]
+ sy_narg:2;
+ sy_call:nil;
+ sy_name:'sys_access'
+ ),
+ (//[34]
+ sy_narg:2;
+ sy_call:nil;
+ sy_name:'sys_chflags'
+ ),
+ (//[35]
+ sy_narg:2;
+ sy_call:nil;
+ sy_name:'sys_fchflags'
+ ),
+ (//[36]
+ sy_narg:0;
+ sy_call:nil;
+ sy_name:'sys_sync'
+ ),
+ (//[37]
+ sy_narg:2;
+ sy_call:nil;
+ sy_name:'sys_kill'
+ ),
+ (//[38]
+ sy_narg:0;
+ sy_call:@nosys;
+ sy_name:'nosys'
+ ),
+ (//[39]
+ sy_narg:0;
+ sy_call:nil;
+ sy_name:'sys_getppid'
+ ),
+ (//[40]
+ sy_narg:0;
+ sy_call:@nosys;
+ sy_name:'nosys'
+ ),
+ (//[41]
+ sy_narg:1;
+ sy_call:nil;
+ sy_name:'sys_dup'
+ ),
+ (//[42]
+ sy_narg:0;
+ sy_call:nil;
+ sy_name:'sys_pipe'
+ ),
+ (//[43]
+ sy_narg:0;
+ sy_call:nil;
+ sy_name:'sys_getegid'
+ ),
+ (//[44]
+ sy_narg:4;
+ sy_call:nil;
+ sy_name:'sys_profil'
+ ),
+ (//[45]
+ sy_narg:4;
+ sy_call:nil;
+ sy_name:'sys_ktrace'
+ ),
+ (//[46]
+ sy_narg:0;
+ sy_call:@nosys;
+ sy_name:'nosys'
+ ),
+ (//[47]
+ sy_narg:0;
+ sy_call:nil;
+ sy_name:'sys_getgid'
+ ),
+ (//[48]
+ sy_narg:0;
+ sy_call:@nosys;
+ sy_name:'nosys'
+ ),
+ (//[49]
+ sy_narg:2;
+ sy_call:nil;
+ sy_name:'sys_getlogin'
+ ),
+ (//[50]
+ sy_narg:1;
+ sy_call:nil;
+ sy_name:'sys_setlogin'
+ ),
+ (//[51]
+ sy_narg:0;
+ sy_call:@nosys;
+ sy_name:'nosys'
+ ),
+ (//[52]
+ sy_narg:0;
+ sy_call:@nosys;
+ sy_name:'nosys'
+ ),
+ (//[53]
+ sy_narg:2;
+ sy_call:nil;
+ sy_name:'sys_sigaltstack'
+ ),
+ (//[54]
+ sy_narg:3;
+ sy_call:nil;
+ sy_name:'sys_ioctl'
+ ),
+ (//[55]
+ sy_narg:1;
+ sy_call:nil;
+ sy_name:'sys_reboot'
+ ),
+ (//[56]
+ sy_narg:1;
+ sy_call:nil;
+ sy_name:'sys_revoke'
+ ),
+ (//[57]
+ sy_narg:2;
+ sy_call:nil;
+ sy_name:'sys_symlink'
+ ),
+ (//[58]
+ sy_narg:3;
+ sy_call:nil;
+ sy_name:'sys_readlink'
+ ),
+ (//[59]
+ sy_narg:3;
+ sy_call:nil;
+ sy_name:'sys_execve'
+ ),
+ (//[60]
+ sy_narg:1;
+ sy_call:nil;
+ sy_name:'sys_umask'
+ ),
+ (//[61]
+ sy_narg:1;
+ sy_call:nil;
+ sy_name:'sys_chroot'
+ ),
+ (//[62]
+ sy_narg:0;
+ sy_call:@nosys;
+ sy_name:'nosys'
+ ),
+ (//[63]
+ sy_narg:0;
+ sy_call:@nosys;
+ sy_name:'nosys'
+ ),
+ (//[64]
+ sy_narg:0;
+ sy_call:@nosys;
+ sy_name:'nosys'
+ ),
+ (//[65]
+ sy_narg:3;
+ sy_call:nil;
+ sy_name:'sys_msync'
+ ),
+ (//[66]
+ sy_narg:0;
+ sy_call:nil;
+ sy_name:'sys_vfork'
+ ),
+ (//[67]
+ sy_narg:0;
+ sy_call:@nosys;
+ sy_name:'nosys'
+ ),
+ (//[68]
+ sy_narg:0;
+ sy_call:@nosys;
+ sy_name:'nosys'
+ ),
+ (//[69]
+ sy_narg:1;
+ sy_call:@nosup;
+ sy_name:'sys_sbrk'
+ ),
+ (//[70]
+ sy_narg:1;
+ sy_call:@nosup;
+ sy_name:'sys_sstk'
+ ),
+ (//[71]
+ sy_narg:0;
+ sy_call:@nosys;
+ sy_name:'nosys'
+ ),
+ (//[72]
+ sy_narg:0;
+ sy_call:@nosys;
+ sy_name:'nosys'
+ ),
+ (//[73]
+ sy_narg:2;
+ sy_call:nil;
+ sy_name:'sys_munmap'
+ ),
+ (//[74]
+ sy_narg:3;
+ sy_call:nil;
+ sy_name:'sys_mprotect'
+ ),
+ (//[75]
+ sy_narg:3;
+ sy_call:nil;
+ sy_name:'sys_madvise'
+ ),
+ (//[76]
+ sy_narg:0;
+ sy_call:@nosys;
+ sy_name:'nosys'
+ ),
+ (//[77]
+ sy_narg:0;
+ sy_call:@nosys;
+ sy_name:'nosys'
+ ),
+ (//[78]
+ sy_narg:3;
+ sy_call:nil;
+ sy_name:'sys_mincore'
+ ),
+ (//[79]
+ sy_narg:2;
+ sy_call:nil;
+ sy_name:'sys_getgroups'
+ ),
+ (//[80]
+ sy_narg:2;
+ sy_call:nil;
+ sy_name:'sys_setgroups'
+ ),
+ (//[81]
+ sy_narg:0;
+ sy_call:nil;
+ sy_name:'sys_getpgrp'
+ ),
+ (//[82]
+ sy_narg:2;
+ sy_call:nil;
+ sy_name:'sys_setpgid'
+ ),
+ (//[83]
+ sy_narg:3;
+ sy_call:nil;
+ sy_name:'sys_setitimer'
+ ),
+ (//[84]
+ sy_narg:0;
+ sy_call:@nosys;
+ sy_name:'nosys'
+ ),
+ (//[85]
+ sy_narg:1;
+ sy_call:nil;
+ sy_name:'sys_swapon'
+ ),
+ (//[86]
+ sy_narg:2;
+ sy_call:nil;
+ sy_name:'sys_getitimer'
+ ),
+ (//[87]
+ sy_narg:0;
+ sy_call:@nosys;
+ sy_name:'nosys'
+ ),
+ (//[88]
+ sy_narg:0;
+ sy_call:@nosys;
+ sy_name:'nosys'
+ ),
+ (//[89]
+ sy_narg:0;
+ sy_call:nil;
+ sy_name:'sys_getdtablesize'
+ ),
+ (//[90]
+ sy_narg:2;
+ sy_call:nil;
+ sy_name:'sys_dup2'
+ ),
+ (//[91]
+ sy_narg:0;
+ sy_call:@nosys;
+ sy_name:'nosys'
+ ),
+ (//[92]
+ sy_narg:3;
+ sy_call:nil;
+ sy_name:'sys_fcntl'
+ ),
+ (//[93]
+ sy_narg:5;
+ sy_call:nil;
+ sy_name:'sys_select'
+ ),
+ (//[94]
+ sy_narg:0;
+ sy_call:@nosys;
+ sy_name:'nosys'
+ ),
+ (//[95]
+ sy_narg:1;
+ sy_call:nil;
+ sy_name:'sys_fsync'
+ ),
+ (//[96]
+ sy_narg:3;
+ sy_call:nil;
+ sy_name:'sys_setpriority'
+ ),
+ (//[97]
+ sy_narg:3;
+ sy_call:nil;
+ sy_name:'sys_socket'
+ ),
+ (//[98]
+ sy_narg:3;
+ sy_call:nil;
+ sy_name:'sys_connect'
+ ),
+ (//[99]
+ sy_narg:4;
+ sy_call:nil;
+ sy_name:'sys_netcontrol'
+ ),
+ (//[100]
+ sy_narg:2;
+ sy_call:nil;
+ sy_name:'sys_getpriority'
+ ),
+ (//[101]
+ sy_narg:2;
+ sy_call:nil;
+ sy_name:'sys_netabort'
+ ),
+ (//[102]
+ sy_narg:4;
+ sy_call:nil;
+ sy_name:'sys_netgetsockinfo'
+ ),
+ (//[103]
+ sy_narg:0;
+ sy_call:@nosys;
+ sy_name:'nosys'
+ ),
+ (//[104]
+ sy_narg:3;
+ sy_call:nil;
+ sy_name:'sys_bind'
+ ),
+ (//[105]
+ sy_narg:5;
+ sy_call:nil;
+ sy_name:'sys_setsockopt'
+ ),
+ (//[106]
+ sy_narg:2;
+ sy_call:nil;
+ sy_name:'sys_listen'
+ ),
+ (//[107]
+ sy_narg:0;
+ sy_call:@nosys;
+ sy_name:'nosys'
+ ),
+ (//[108]
+ sy_narg:0;
+ sy_call:@nosys;
+ sy_name:'nosys'
+ ),
+ (//[109]
+ sy_narg:0;
+ sy_call:@nosys;
+ sy_name:'nosys'
+ ),
+ (//[110]
+ sy_narg:0;
+ sy_call:@nosys;
+ sy_name:'nosys'
+ ),
+ (//[111]
+ sy_narg:0;
+ sy_call:@nosys;
+ sy_name:'nosys'
+ ),
+ (//[112]
+ sy_narg:0;
+ sy_call:@nosys;
+ sy_name:'nosys'
+ ),
+ (//[113]
+ sy_narg:4;
+ sy_call:nil;
+ sy_name:'sys_socketex'
+ ),
+ (//[114]
+ sy_narg:1;
+ sy_call:nil;
+ sy_name:'sys_socketclose'
+ ),
+ (//[115]
+ sy_narg:0;
+ sy_call:@nosys;
+ sy_name:'nosys'
+ ),
+ (//[116]
+ sy_narg:2;
+ sy_call:nil;
+ sy_name:'sys_gettimeofday'
+ ),
+ (//[117]
+ sy_narg:2;
+ sy_call:nil;
+ sy_name:'sys_getrusage'
+ ),
+ (//[118]
+ sy_narg:5;
+ sy_call:nil;
+ sy_name:'sys_getsockopt'
+ ),
+ (//[119]
+ sy_narg:0;
+ sy_call:@nosys;
+ sy_name:'nosys'
+ ),
+ (//[120]
+ sy_narg:3;
+ sy_call:nil;
+ sy_name:'sys_readv'
+ ),
+ (//[121]
+ sy_narg:3;
+ sy_call:nil;
+ sy_name:'sys_writev'
+ ),
+ (//[122]
+ sy_narg:2;
+ sy_call:nil;
+ sy_name:'sys_settimeofday'
+ ),
+ (//[123]
+ sy_narg:3;
+ sy_call:nil;
+ sy_name:'sys_fchown'
+ ),
+ (//[124]
+ sy_narg:2;
+ sy_call:nil;
+ sy_name:'sys_fchmod'
+ ),
+ (//[125]
+ sy_narg:3;
+ sy_call:nil;
+ sy_name:'sys_netgetiflist'
+ ),
+ (//[126]
+ sy_narg:2;
+ sy_call:nil;
+ sy_name:'sys_setreuid'
+ ),
+ (//[127]
+ sy_narg:2;
+ sy_call:nil;
+ sy_name:'sys_setregid'
+ ),
+ (//[128]
+ sy_narg:2;
+ sy_call:nil;
+ sy_name:'sys_rename'
+ ),
+ (//[129]
+ sy_narg:0;
+ sy_call:@nosys;
+ sy_name:'nosys'
+ ),
+ (//[130]
+ sy_narg:0;
+ sy_call:@nosys;
+ sy_name:'nosys'
+ ),
+ (//[131]
+ sy_narg:2;
+ sy_call:nil;
+ sy_name:'sys_flock'
+ ),
+ (//[132]
+ sy_narg:2;
+ sy_call:nil;
+ sy_name:'sys_mkfifo'
+ ),
+ (//[133]
+ sy_narg:6;
+ sy_call:nil;
+ sy_name:'sys_sendto'
+ ),
+ (//[134]
+ sy_narg:2;
+ sy_call:nil;
+ sy_name:'sys_shutdown'
+ ),
+ (//[135]
+ sy_narg:4;
+ sy_call:nil;
+ sy_name:'sys_socketpair'
+ ),
+ (//[136]
+ sy_narg:2;
+ sy_call:nil;
+ sy_name:'sys_mkdir'
+ ),
+ (//[137]
+ sy_narg:1;
+ sy_call:nil;
+ sy_name:'sys_rmdir'
+ ),
+ (//[138]
+ sy_narg:2;
+ sy_call:nil;
+ sy_name:'sys_utimes'
+ ),
+ (//[139]
+ sy_narg:0;
+ sy_call:@nosys;
+ sy_name:'nosys'
+ ),
+ (//[140]
+ sy_narg:2;
+ sy_call:nil;
+ sy_name:'sys_adjtime'
+ ),
+ (//[141]
+ sy_narg:1;
+ sy_call:nil;
+ sy_name:'sys_kqueueex'
+ ),
+ (//[142]
+ sy_narg:0;
+ sy_call:@nosys;
+ sy_name:'nosys'
+ ),
+ (//[143]
+ sy_narg:0;
+ sy_call:@nosys;
+ sy_name:'nosys'
+ ),
+ (//[144]
+ sy_narg:0;
+ sy_call:@nosys;
+ sy_name:'nosys'
+ ),
+ (//[145]
+ sy_narg:0;
+ sy_call:@nosys;
+ sy_name:'nosys'
+ ),
+ (//[146]
+ sy_narg:0;
+ sy_call:@nosys;
+ sy_name:'nosys'
+ ),
+ (//[147]
+ sy_narg:0;
+ sy_call:nil;
+ sy_name:'sys_setsid'
+ ),
+ (//[148]
+ sy_narg:0;
+ sy_call:@nosys;
+ sy_name:'nosys'
+ ),
+ (//[149]
+ sy_narg:0;
+ sy_call:@nosys;
+ sy_name:'nosys'
+ ),
+ (//[150]
+ sy_narg:0;
+ sy_call:@nosys;
+ sy_name:'nosys'
+ ),
+ (//[151]
+ sy_narg:0;
+ sy_call:@nosys;
+ sy_name:'nosys'
+ ),
+ (//[152]
+ sy_narg:0;
+ sy_call:@nosys;
+ sy_name:'nosys'
+ ),
+ (//[153]
+ sy_narg:0;
+ sy_call:@nosys;
+ sy_name:'nosys'
+ ),
+ (//[154]
+ sy_narg:4;
+ sy_call:@nosys;
+ sy_name:'lkmressys'
+ ),
+ (//[155]
+ sy_narg:2;
+ sy_call:@nosys;
+ sy_name:'lkmressys'
+ ),
+ (//[156]
+ sy_narg:0;
+ sy_call:@nosys;
+ sy_name:'nosys'
+ ),
+ (//[157]
+ sy_narg:0;
+ sy_call:@nosys;
+ sy_name:'nosys'
+ ),
+ (//[158]
+ sy_narg:0;
+ sy_call:@nosys;
+ sy_name:'nosys'
+ ),
+ (//[159]
+ sy_narg:0;
+ sy_call:@nosys;
+ sy_name:'nosys'
+ ),
+ (//[160]
+ sy_narg:0;
+ sy_call:@nosys;
+ sy_name:'nosys'
+ ),
+ (//[161]
+ sy_narg:0;
+ sy_call:@nosys;
+ sy_name:'nosys'
+ ),
+ (//[162]
+ sy_narg:0;
+ sy_call:@nosys;
+ sy_name:'nosys'
+ ),
+ (//[163]
+ sy_narg:0;
+ sy_call:@nosys;
+ sy_name:'nosys'
+ ),
+ (//[164]
+ sy_narg:0;
+ sy_call:@nosys;
+ sy_name:'nosys'
+ ),
+ (//[165]
+ sy_narg:2;
+ sy_call:nil;
+ sy_name:'sys_sysarch'
+ ),
+ (//[166]
+ sy_narg:3;
+ sy_call:nil;
+ sy_name:'sys_rtprio'
+ ),
+ (//[167]
+ sy_narg:0;
+ sy_call:@nosys;
+ sy_name:'nosys'
+ ),
+ (//[168]
+ sy_narg:0;
+ sy_call:@nosys;
+ sy_name:'nosys'
+ ),
+ (//[169]
+ sy_narg:5;
+ sy_call:@nosys;
+ sy_name:'lkmressys'
+ ),
+ (//[170]
+ sy_narg:6;
+ sy_call:@nosys;
+ sy_name:'lkmressys'
+ ),
+ (//[171]
+ sy_narg:4;
+ sy_call:@nosys;
+ sy_name:'lkmressys'
+ ),
+ (//[172]
+ sy_narg:0;
+ sy_call:@nosys;
+ sy_name:'nosys'
+ ),
+ (//[173]
+ sy_narg:0;
+ sy_call:@nosys;
+ sy_name:'nosys'
+ ),
+ (//[174]
+ sy_narg:0;
+ sy_call:@nosys;
+ sy_name:'nosys'
+ ),
+ (//[175]
+ sy_narg:0;
+ sy_call:@nosys;
+ sy_name:'nosys'
+ ),
+ (//[176]
+ sy_narg:0;
+ sy_call:@nosys;
+ sy_name:'nosys'
+ ),
+ (//[177]
+ sy_narg:0;
+ sy_call:@nosys;
+ sy_name:'nosys'
+ ),
+ (//[178]
+ sy_narg:0;
+ sy_call:@nosys;
+ sy_name:'nosys'
+ ),
+ (//[179]
+ sy_narg:0;
+ sy_call:@nosys;
+ sy_name:'nosys'
+ ),
+ (//[180]
+ sy_narg:0;
+ sy_call:@nosys;
+ sy_name:'nosys'
+ ),
+ (//[181]
+ sy_narg:1;
+ sy_call:nil;
+ sy_name:'sys_setgid'
+ ),
+ (//[182]
+ sy_narg:1;
+ sy_call:nil;
+ sy_name:'sys_setegid'
+ ),
+ (//[183]
+ sy_narg:1;
+ sy_call:nil;
+ sy_name:'sys_seteuid'
+ ),
+ (//[184]
+ sy_narg:0;
+ sy_call:@nosys;
+ sy_name:'nosys'
+ ),
+ (//[185]
+ sy_narg:0;
+ sy_call:@nosys;
+ sy_name:'nosys'
+ ),
+ (//[186]
+ sy_narg:0;
+ sy_call:@nosys;
+ sy_name:'nosys'
+ ),
+ (//[187]
+ sy_narg:0;
+ sy_call:@nosys;
+ sy_name:'nosys'
+ ),
+ (//[188]
+ sy_narg:2;
+ sy_call:nil;
+ sy_name:'sys_stat'
+ ),
+ (//[189]
+ sy_narg:2;
+ sy_call:nil;
+ sy_name:'sys_fstat'
+ ),
+ (//[190]
+ sy_narg:2;
+ sy_call:nil;
+ sy_name:'sys_lstat'
+ ),
+ (//[191]
+ sy_narg:2;
+ sy_call:nil;
+ sy_name:'sys_pathconf'
+ ),
+ (//[192]
+ sy_narg:2;
+ sy_call:nil;
+ sy_name:'sys_fpathconf'
+ ),
+ (//[193]
+ sy_narg:0;
+ sy_call:@nosys;
+ sy_name:'nosys'
+ ),
+ (//[194]
+ sy_narg:2;
+ sy_call:nil;
+ sy_name:'sys_getrlimit'
+ ),
+ (//[195]
+ sy_narg:2;
+ sy_call:nil;
+ sy_name:'sys_setrlimit'
+ ),
+ (//[196]
+ sy_narg:4;
+ sy_call:nil;
+ sy_name:'sys_getdirentries'
+ ),
+ (//[197]
+ sy_narg:0;
+ sy_call:@nosys;
+ sy_name:'nosys'
+ ),
+ (//[198]
+ sy_narg:0;
+ sy_call:@nosys;
+ sy_name:'nosys'
+ ),
+ (//[199]
+ sy_narg:0;
+ sy_call:@nosys;
+ sy_name:'nosys'
+ ),
+ (//[200]
+ sy_narg:0;
+ sy_call:@nosys;
+ sy_name:'nosys'
+ ),
+ (//[201]
+ sy_narg:0;
+ sy_call:@nosys;
+ sy_name:'nosys'
+ ),
+ (//[202]
+ sy_narg:6;
+ sy_call:nil;
+ sy_name:'sys___sysctl'
+ ),
+ (//[203]
+ sy_narg:2;
+ sy_call:nil;
+ sy_name:'sys_mlock'
+ ),
+ (//[204]
+ sy_narg:2;
+ sy_call:nil;
+ sy_name:'sys_munlock'
+ ),
+ (//[205]
+ sy_narg:0;
+ sy_call:@nosys;
+ sy_name:'nosys'
+ ),
+ (//[206]
+ sy_narg:2;
+ sy_call:nil;
+ sy_name:'sys_futimes'
+ ),
+ (//[207]
+ sy_narg:1;
+ sy_call:nil;
+ sy_name:'sys_getpgid'
+ ),
+ (//[208]
+ sy_narg:0;
+ sy_call:@nosys;
+ sy_name:'nosys'
+ ),
+ (//[209]
+ sy_narg:3;
+ sy_call:nil;
+ sy_name:'sys_poll'
+ ),
+ (//[210]
+ sy_narg:1;
+ sy_call:@nosys;
+ sy_name:'lkmnosys'
+ ),
+ (//[211]
+ sy_narg:1;
+ sy_call:@nosys;
+ sy_name:'lkmnosys'
+ ),
+ (//[212]
+ sy_narg:1;
+ sy_call:@nosys;
+ sy_name:'lkmnosys'
+ ),
+ (//[213]
+ sy_narg:1;
+ sy_call:@nosys;
+ sy_name:'lkmnosys'
+ ),
+ (//[214]
+ sy_narg:1;
+ sy_call:@nosys;
+ sy_name:'lkmnosys'
+ ),
+ (//[215]
+ sy_narg:1;
+ sy_call:@nosys;
+ sy_name:'lkmnosys'
+ ),
+ (//[216]
+ sy_narg:1;
+ sy_call:@nosys;
+ sy_name:'lkmnosys'
+ ),
+ (//[217]
+ sy_narg:1;
+ sy_call:@nosys;
+ sy_name:'lkmnosys'
+ ),
+ (//[218]
+ sy_narg:1;
+ sy_call:@nosys;
+ sy_name:'lkmnosys'
+ ),
+ (//[219]
+ sy_narg:1;
+ sy_call:@nosys;
+ sy_name:'lkmnosys'
+ ),
+ (//[220]
+ sy_narg:0;
+ sy_call:@nosys;
+ sy_name:'lkmressys'
+ ),
+ (//[221]
+ sy_narg:3;
+ sy_call:@nosys;
+ sy_name:'lkmressys'
+ ),
+ (//[222]
+ sy_narg:3;
+ sy_call:@nosys;
+ sy_name:'lkmressys'
+ ),
+ (//[223]
+ sy_narg:0;
+ sy_call:@nosys;
+ sy_name:'nosys'
+ ),
+ (//[224]
+ sy_narg:0;
+ sy_call:@nosys;
+ sy_name:'lkmressys'
+ ),
+ (//[225]
+ sy_narg:2;
+ sy_call:@nosys;
+ sy_name:'lkmressys'
+ ),
+ (//[226]
+ sy_narg:4;
+ sy_call:@nosys;
+ sy_name:'lkmressys'
+ ),
+ (//[227]
+ sy_narg:5;
+ sy_call:@nosys;
+ sy_name:'lkmressys'
+ ),
+ (//[228]
+ sy_narg:3;
+ sy_call:@nosys;
+ sy_name:'lkmressys'
+ ),
+ (//[229]
+ sy_narg:0;
+ sy_call:@nosys;
+ sy_name:'lkmressys'
+ ),
+ (//[230]
+ sy_narg:1;
+ sy_call:@nosys;
+ sy_name:'lkmressys'
+ ),
+ (//[231]
+ sy_narg:3;
+ sy_call:@nosys;
+ sy_name:'lkmressys'
+ ),
+ (//[232]
+ sy_narg:2;
+ sy_call:nil;
+ sy_name:'sys_clock_gettime'
+ ),
+ (//[233]
+ sy_narg:2;
+ sy_call:nil;
+ sy_name:'sys_clock_settime'
+ ),
+ (//[234]
+ sy_narg:2;
+ sy_call:nil;
+ sy_name:'sys_clock_getres'
+ ),
+ (//[235]
+ sy_narg:3;
+ sy_call:nil;
+ sy_name:'sys_ktimer_create'
+ ),
+ (//[236]
+ sy_narg:1;
+ sy_call:nil;
+ sy_name:'sys_ktimer_delete'
+ ),
+ (//[237]
+ sy_narg:4;
+ sy_call:nil;
+ sy_name:'sys_ktimer_settime'
+ ),
+ (//[238]
+ sy_narg:2;
+ sy_call:nil;
+ sy_name:'sys_ktimer_gettime'
+ ),
+ (//[239]
+ sy_narg:1;
+ sy_call:nil;
+ sy_name:'sys_ktimer_getoverrun'
+ ),
+ (//[240]
+ sy_narg:2;
+ sy_call:nil;
+ sy_name:'sys_nanosleep'
+ ),
+ (//[241]
+ sy_narg:0;
+ sy_call:@nosys;
+ sy_name:'nosys'
+ ),
+ (//[242]
+ sy_narg:0;
+ sy_call:@nosys;
+ sy_name:'nosys'
+ ),
+ (//[243]
+ sy_narg:0;
+ sy_call:@nosys;
+ sy_name:'nosys'
+ ),
+ (//[244]
+ sy_narg:0;
+ sy_call:@nosys;
+ sy_name:'nosys'
+ ),
+ (//[245]
+ sy_narg:0;
+ sy_call:@nosys;
+ sy_name:'nosys'
+ ),
+ (//[246]
+ sy_narg:0;
+ sy_call:@nosys;
+ sy_name:'nosys'
+ ),
+ (//[247]
+ sy_narg:0;
+ sy_call:@nosys;
+ sy_name:'nosys'
+ ),
+ (//[248]
+ sy_narg:0;
+ sy_call:@nosys;
+ sy_name:'nosys'
+ ),
+ (//[249]
+ sy_narg:0;
+ sy_call:@nosys;
+ sy_name:'nosys'
+ ),
+ (//[250]
+ sy_narg:3;
+ sy_call:nil;
+ sy_name:'sys_minherit'
+ ),
+ (//[251]
+ sy_narg:1;
+ sy_call:nil;
+ sy_name:'sys_rfork'
+ ),
+ (//[252]
+ sy_narg:0;
+ sy_call:@nosys;
+ sy_name:'nosys'
+ ),
+ (//[253]
+ sy_narg:0;
+ sy_call:nil;
+ sy_name:'sys_issetugid'
+ ),
+ (//[254]
+ sy_narg:3;
+ sy_call:nil;
+ sy_name:'sys_lchown'
+ ),
+ (//[255]
+ sy_narg:1;
+ sy_call:nil;
+ sy_name:'sys_aio_read'
+ ),
+ (//[256]
+ sy_narg:1;
+ sy_call:nil;
+ sy_name:'sys_aio_write'
+ ),
+ (//[257]
+ sy_narg:0;
+ sy_call:@nosys;
+ sy_name:'nosys'
+ ),
+ (//[258]
+ sy_narg:0;
+ sy_call:@nosys;
+ sy_name:'nosys'
+ ),
+ (//[259]
+ sy_narg:0;
+ sy_call:@nosys;
+ sy_name:'nosys'
+ ),
+ (//[260]
+ sy_narg:0;
+ sy_call:@nosys;
+ sy_name:'nosys'
+ ),
+ (//[261]
+ sy_narg:0;
+ sy_call:@nosys;
+ sy_name:'nosys'
+ ),
+ (//[262]
+ sy_narg:0;
+ sy_call:@nosys;
+ sy_name:'nosys'
+ ),
+ (//[263]
+ sy_narg:0;
+ sy_call:@nosys;
+ sy_name:'nosys'
+ ),
+ (//[264]
+ sy_narg:0;
+ sy_call:@nosys;
+ sy_name:'nosys'
+ ),
+ (//[265]
+ sy_narg:0;
+ sy_call:@nosys;
+ sy_name:'nosys'
+ ),
+ (//[266]
+ sy_narg:0;
+ sy_call:@nosys;
+ sy_name:'nosys'
+ ),
+ (//[267]
+ sy_narg:0;
+ sy_call:@nosys;
+ sy_name:'nosys'
+ ),
+ (//[268]
+ sy_narg:0;
+ sy_call:@nosys;
+ sy_name:'nosys'
+ ),
+ (//[269]
+ sy_narg:0;
+ sy_call:@nosys;
+ sy_name:'nosys'
+ ),
+ (//[270]
+ sy_narg:0;
+ sy_call:@nosys;
+ sy_name:'nosys'
+ ),
+ (//[271]
+ sy_narg:0;
+ sy_call:@nosys;
+ sy_name:'nosys'
+ ),
+ (//[272]
+ sy_narg:3;
+ sy_call:nil;
+ sy_name:'sys_getdents'
+ ),
+ (//[273]
+ sy_narg:0;
+ sy_call:@nosys;
+ sy_name:'nosys'
+ ),
+ (//[274]
+ sy_narg:2;
+ sy_call:nil;
+ sy_name:'sys_lchmod'
+ ),
+ (//[275]
+ sy_narg:3;
+ sy_call:nil;
+ sy_name:'sys_lchown'
+ ),
+ (//[276]
+ sy_narg:2;
+ sy_call:nil;
+ sy_name:'sys_lutimes'
+ ),
+ (//[277]
+ sy_narg:3;
+ sy_call:nil;
+ sy_name:'sys_msync'
+ ),
+ (//[278]
+ sy_narg:0;
+ sy_call:@nosys;
+ sy_name:'nosys'
+ ),
+ (//[279]
+ sy_narg:0;
+ sy_call:@nosys;
+ sy_name:'nosys'
+ ),
+ (//[280]
+ sy_narg:0;
+ sy_call:@nosys;
+ sy_name:'nosys'
+ ),
+ (//[281]
+ sy_narg:0;
+ sy_call:@nosys;
+ sy_name:'nosys'
+ ),
+ (//[282]
+ sy_narg:0;
+ sy_call:@nosys;
+ sy_name:'nosys'
+ ),
+ (//[283]
+ sy_narg:0;
+ sy_call:@nosys;
+ sy_name:'nosys'
+ ),
+ (//[284]
+ sy_narg:0;
+ sy_call:@nosys;
+ sy_name:'nosys'
+ ),
+ (//[285]
+ sy_narg:0;
+ sy_call:@nosys;
+ sy_name:'nosys'
+ ),
+ (//[286]
+ sy_narg:0;
+ sy_call:@nosys;
+ sy_name:'nosys'
+ ),
+ (//[287]
+ sy_narg:0;
+ sy_call:@nosys;
+ sy_name:'nosys'
+ ),
+ (//[288]
+ sy_narg:0;
+ sy_call:@nosys;
+ sy_name:'nosys'
+ ),
+ (//[289]
+ sy_narg:4;
+ sy_call:nil;
+ sy_name:'sys_preadv'
+ ),
+ (//[290]
+ sy_narg:4;
+ sy_call:nil;
+ sy_name:'sys_pwritev'
+ ),
+ (//[291]
+ sy_narg:0;
+ sy_call:@nosys;
+ sy_name:'nosys'
+ ),
+ (//[292]
+ sy_narg:0;
+ sy_call:@nosys;
+ sy_name:'nosys'
+ ),
+ (//[293]
+ sy_narg:0;
+ sy_call:@nosys;
+ sy_name:'nosys'
+ ),
+ (//[294]
+ sy_narg:0;
+ sy_call:@nosys;
+ sy_name:'nosys'
+ ),
+ (//[295]
+ sy_narg:0;
+ sy_call:@nosys;
+ sy_name:'nosys'
+ ),
+ (//[296]
+ sy_narg:0;
+ sy_call:@nosys;
+ sy_name:'nosys'
+ ),
+ (//[297]
+ sy_narg:0;
+ sy_call:@nosys;
+ sy_name:'nosys'
+ ),
+ (//[298]
+ sy_narg:0;
+ sy_call:@nosys;
+ sy_name:'nosys'
+ ),
+ (//[299]
+ sy_narg:0;
+ sy_call:@nosys;
+ sy_name:'nosys'
+ ),
+ (//[300]
+ sy_narg:0;
+ sy_call:@nosys;
+ sy_name:'nosys'
+ ),
+ (//[301]
+ sy_narg:0;
+ sy_call:@nosys;
+ sy_name:'nosys'
+ ),
+ (//[302]
+ sy_narg:0;
+ sy_call:@nosys;
+ sy_name:'nosys'
+ ),
+ (//[303]
+ sy_narg:0;
+ sy_call:@nosys;
+ sy_name:'nosys'
+ ),
+ (//[304]
+ sy_narg:1;
+ sy_call:@nosys;
+ sy_name:'sys_kldload'
+ ),
+ (//[305]
+ sy_narg:1;
+ sy_call:@nosys;
+ sy_name:'sys_kldunload'
+ ),
+ (//[306]
+ sy_narg:1;
+ sy_call:@nosys;
+ sy_name:'sys_kldfind'
+ ),
+ (//[307]
+ sy_narg:1;
+ sy_call:@nosys;
+ sy_name:'sys_kldnext'
+ ),
+ (//[308]
+ sy_narg:2;
+ sy_call:@nosys;
+ sy_name:'sys_kldstat'
+ ),
+ (//[309]
+ sy_narg:1;
+ sy_call:@nosys;
+ sy_name:'sys_kldfirstmod'
+ ),
+ (//[310]
+ sy_narg:1;
+ sy_call:nil;
+ sy_name:'sys_getsid'
+ ),
+ (//[311]
+ sy_narg:3;
+ sy_call:nil;
+ sy_name:'sys_setresuid'
+ ),
+ (//[312]
+ sy_narg:3;
+ sy_call:nil;
+ sy_name:'sys_setresgid'
+ ),
+ (//[313]
+ sy_narg:0;
+ sy_call:@nosys;
+ sy_name:'nosys'
+ ),
+ (//[314]
+ sy_narg:1;
+ sy_call:nil;
+ sy_name:'sys_aio_return'
+ ),
+ (//[315]
+ sy_narg:3;
+ sy_call:nil;
+ sy_name:'sys_aio_suspend'
+ ),
+ (//[316]
+ sy_narg:2;
+ sy_call:nil;
+ sy_name:'sys_aio_cancel'
+ ),
+ (//[317]
+ sy_narg:1;
+ sy_call:nil;
+ sy_name:'sys_aio_error'
+ ),
+ (//[318]
+ sy_narg:0;
+ sy_call:@nosys;
+ sy_name:'nosys'
+ ),
+ (//[319]
+ sy_narg:0;
+ sy_call:@nosys;
+ sy_name:'nosys'
+ ),
+ (//[320]
+ sy_narg:0;
+ sy_call:@nosys;
+ sy_name:'nosys'
+ ),
+ (//[321]
+ sy_narg:0;
+ sy_call:nil;
+ sy_name:'sys_yield'
+ ),
+ (//[322]
+ sy_narg:0;
+ sy_call:@nosys;
+ sy_name:'nosys'
+ ),
+ (//[323]
+ sy_narg:0;
+ sy_call:@nosys;
+ sy_name:'nosys'
+ ),
+ (//[324]
+ sy_narg:1;
+ sy_call:nil;
+ sy_name:'sys_mlockall'
+ ),
+ (//[325]
+ sy_narg:0;
+ sy_call:nil;
+ sy_name:'sys_munlockall'
+ ),
+ (//[326]
+ sy_narg:2;
+ sy_call:nil;
+ sy_name:'sys___getcwd'
+ ),
+ (//[327]
+ sy_narg:2;
+ sy_call:nil;
+ sy_name:'sys_sched_setparam'
+ ),
+ (//[328]
+ sy_narg:2;
+ sy_call:nil;
+ sy_name:'sys_sched_getparam'
+ ),
+ (//[329]
+ sy_narg:3;
+ sy_call:nil;
+ sy_name:'sys_sched_setscheduler'
+ ),
+ (//[330]
+ sy_narg:1;
+ sy_call:nil;
+ sy_name:'sys_sched_getscheduler'
+ ),
+ (//[331]
+ sy_narg:0;
+ sy_call:nil;
+ sy_name:'sys_sched_yield'
+ ),
+ (//[332]
+ sy_narg:1;
+ sy_call:nil;
+ sy_name:'sys_sched_get_priority_max'
+ ),
+ (//[333]
+ sy_narg:1;
+ sy_call:nil;
+ sy_name:'sys_sched_get_priority_min'
+ ),
+ (//[334]
+ sy_narg:2;
+ sy_call:nil;
+ sy_name:'sys_sched_rr_get_interval'
+ ),
+ (//[335]
+ sy_narg:2;
+ sy_call:nil;
+ sy_name:'sys_utrace'
+ ),
+ (//[336]
+ sy_narg:0;
+ sy_call:@nosys;
+ sy_name:'nosys'
+ ),
+ (//[337]
+ sy_narg:3;
+ sy_call:@nosys;
+ sy_name:'sys_kldsym'
+ ),
+ (//[338]
+ sy_narg:0;
+ sy_call:@nosys;
+ sy_name:'nosys'
+ ),
+ (//[339]
+ sy_narg:5;
+ sy_call:@nosys;
+ sy_name:'lkmressys'
+ ),
+ (//[340]
+ sy_narg:3;
+ sy_call:nil;
+ sy_name:'sys_sigprocmask'
+ ),
+ (//[341]
+ sy_narg:1;
+ sy_call:nil;
+ sy_name:'sys_sigsuspend'
+ ),
+ (//[342]
+ sy_narg:0;
+ sy_call:@nosys;
+ sy_name:'nosys'
+ ),
+ (//[343]
+ sy_narg:1;
+ sy_call:nil;
+ sy_name:'sys_sigpending'
+ ),
+ (//[344]
+ sy_narg:0;
+ sy_call:@nosys;
+ sy_name:'nosys'
+ ),
+ (//[345]
+ sy_narg:3;
+ sy_call:nil;
+ sy_name:'sys_sigtimedwait'
+ ),
+ (//[346]
+ sy_narg:2;
+ sy_call:nil;
+ sy_name:'sys_sigwaitinfo'
+ ),
+ (//[347]
+ sy_narg:0;
+ sy_call:@nosys;
+ sy_name:'nosys'
+ ),
+ (//[348]
+ sy_narg:0;
+ sy_call:@nosys;
+ sy_name:'nosys'
+ ),
+ (//[349]
+ sy_narg:0;
+ sy_call:@nosys;
+ sy_name:'nosys'
+ ),
+ (//[350]
+ sy_narg:0;
+ sy_call:@nosys;
+ sy_name:'nosys'
+ ),
+ (//[351]
+ sy_narg:0;
+ sy_call:@nosys;
+ sy_name:'nosys'
+ ),
+ (//[352]
+ sy_narg:0;
+ sy_call:@nosys;
+ sy_name:'nosys'
+ ),
+ (//[353]
+ sy_narg:0;
+ sy_call:@nosys;
+ sy_name:'nosys'
+ ),
+ (//[354]
+ sy_narg:0;
+ sy_call:@nosys;
+ sy_name:'nosys'
+ ),
+ (//[355]
+ sy_narg:0;
+ sy_call:@nosys;
+ sy_name:'nosys'
+ ),
+ (//[356]
+ sy_narg:0;
+ sy_call:@nosys;
+ sy_name:'nosys'
+ ),
+ (//[357]
+ sy_narg:0;
+ sy_call:@nosys;
+ sy_name:'nosys'
+ ),
+ (//[358]
+ sy_narg:0;
+ sy_call:@nosys;
+ sy_name:'nosys'
+ ),
+ (//[359]
+ sy_narg:2;
+ sy_call:nil;
+ sy_name:'sys_aio_waitcomplete'
+ ),
+ (//[360]
+ sy_narg:3;
+ sy_call:nil;
+ sy_name:'sys_getresuid'
+ ),
+ (//[361]
+ sy_narg:3;
+ sy_call:nil;
+ sy_name:'sys_getresgid'
+ ),
+ (//[362]
+ sy_narg:0;
+ sy_call:nil;
+ sy_name:'sys_kqueue'
+ ),
+ (//[363]
+ sy_narg:6;
+ sy_call:nil;
+ sy_name:'sys_kevent'
+ ),
+ (//[364]
+ sy_narg:0;
+ sy_call:@nosys;
+ sy_name:'nosys'
+ ),
+ (//[365]
+ sy_narg:0;
+ sy_call:@nosys;
+ sy_name:'nosys'
+ ),
+ (//[366]
+ sy_narg:0;
+ sy_call:@nosys;
+ sy_name:'nosys'
+ ),
+ (//[367]
+ sy_narg:0;
+ sy_call:@nosys;
+ sy_name:'nosys'
+ ),
+ (//[368]
+ sy_narg:0;
+ sy_call:@nosys;
+ sy_name:'nosys'
+ ),
+ (//[369]
+ sy_narg:0;
+ sy_call:@nosys;
+ sy_name:'nosys'
+ ),
+ (//[370]
+ sy_narg:0;
+ sy_call:@nosys;
+ sy_name:'nosys'
+ ),
+ (//[371]
+ sy_narg:0;
+ sy_call:@nosys;
+ sy_name:'nosys'
+ ),
+ (//[372]
+ sy_narg:0;
+ sy_call:@nosys;
+ sy_name:'nosys'
+ ),
+ (//[373]
+ sy_narg:0;
+ sy_call:@nosys;
+ sy_name:'nosys'
+ ),
+ (//[374]
+ sy_narg:1;
+ sy_call:@nosys;
+ sy_name:'sys___setugid'
+ ),
+ (//[375]
+ sy_narg:0;
+ sy_call:@nosys;
+ sy_name:'nosys'
+ ),
+ (//[376]
+ sy_narg:0;
+ sy_call:@nosys;
+ sy_name:'nosys'
+ ),
+ (//[377]
+ sy_narg:7;
+ sy_call:@nosys;
+ sy_name:'lkmressys'
+ ),
+ (//[378]
+ sy_narg:3;
+ sy_call:nil;
+ sy_name:'sys_nmount'
+ ),
+ (//[379]
+ sy_narg:4;
+ sy_call:nil;
+ sy_name:'sys_mtypeprotect'
+ ),
+ (//[380]
+ sy_narg:0;
+ sy_call:@nosys;
+ sy_name:'nosys'
+ ),
+ (//[381]
+ sy_narg:0;
+ sy_call:@nosys;
+ sy_name:'nosys'
+ ),
+ (//[382]
+ sy_narg:0;
+ sy_call:@nosys;
+ sy_name:'nosys'
+ ),
+ (//[383]
+ sy_narg:0;
+ sy_call:@nosys;
+ sy_name:'nosys'
+ ),
+ (//[384]
+ sy_narg:1;
+ sy_call:@nosys;
+ sy_name:'sys___mac_get_proc'
+ ),
+ (//[385]
+ sy_narg:1;
+ sy_call:@nosys;
+ sy_name:'sys___mac_set_proc'
+ ),
+ (//[386]
+ sy_narg:2;
+ sy_call:@nosys;
+ sy_name:'sys___mac_get_fd'
+ ),
+ (//[387]
+ sy_narg:2;
+ sy_call:@nosys;
+ sy_name:'sys___mac_get_file'
+ ),
+ (//[388]
+ sy_narg:2;
+ sy_call:@nosys;
+ sy_name:'sys___mac_set_fd'
+ ),
+ (//[389]
+ sy_narg:2;
+ sy_call:@nosys;
+ sy_name:'sys___mac_set_file'
+ ),
+ (//[390]
+ sy_narg:4;
+ sy_call:nil;
+ sy_name:'sys_kenv'
+ ),
+ (//[391]
+ sy_narg:2;
+ sy_call:nil;
+ sy_name:'sys_lchflags'
+ ),
+ (//[392]
+ sy_narg:2;
+ sy_call:nil;
+ sy_name:'sys_uuidgen'
+ ),
+ (//[393]
+ sy_narg:7;
+ sy_call:nil;
+ sy_name:'sys_sendfile'
+ ),
+ (//[394]
+ sy_narg:3;
+ sy_call:@nosys;
+ sy_name:'sys_mac_syscall'
+ ),
+ (//[395]
+ sy_narg:3;
+ sy_call:nil;
+ sy_name:'sys_getfsstat'
+ ),
+ (//[396]
+ sy_narg:2;
+ sy_call:nil;
+ sy_name:'sys_statfs'
+ ),
+ (//[397]
+ sy_narg:2;
+ sy_call:nil;
+ sy_name:'sys_fstatfs'
+ ),
+ (//[398]
+ sy_narg:0;
+ sy_call:@nosys;
+ sy_name:'nosys'
+ ),
+ (//[399]
+ sy_narg:0;
+ sy_call:@nosys;
+ sy_name:'nosys'
+ ),
+ (//[400]
+ sy_narg:1;
+ sy_call:nil;
+ sy_name:'sys_ksem_close'
+ ),
+ (//[401]
+ sy_narg:1;
+ sy_call:nil;
+ sy_name:'sys_ksem_post'
+ ),
+ (//[402]
+ sy_narg:1;
+ sy_call:nil;
+ sy_name:'sys_ksem_wait'
+ ),
+ (//[403]
+ sy_narg:1;
+ sy_call:nil;
+ sy_name:'sys_ksem_trywait'
+ ),
+ (//[404]
+ sy_narg:2;
+ sy_call:nil;
+ sy_name:'sys_ksem_init'
+ ),
+ (//[405]
+ sy_narg:5;
+ sy_call:nil;
+ sy_name:'sys_ksem_open'
+ ),
+ (//[406]
+ sy_narg:1;
+ sy_call:nil;
+ sy_name:'sys_ksem_unlink'
+ ),
+ (//[407]
+ sy_narg:2;
+ sy_call:nil;
+ sy_name:'sys_ksem_getvalue'
+ ),
+ (//[408]
+ sy_narg:1;
+ sy_call:nil;
+ sy_name:'sys_ksem_destroy'
+ ),
+ (//[409]
+ sy_narg:2;
+ sy_call:@nosys;
+ sy_name:'sys___mac_get_pid'
+ ),
+ (//[410]
+ sy_narg:2;
+ sy_call:@nosys;
+ sy_name:'sys___mac_get_link'
+ ),
+ (//[411]
+ sy_narg:2;
+ sy_call:@nosys;
+ sy_name:'sys___mac_set_link'
+ ),
+ (//[412]
+ sy_narg:0;
+ sy_call:@nosys;
+ sy_name:'nosys'
+ ),
+ (//[413]
+ sy_narg:0;
+ sy_call:@nosys;
+ sy_name:'nosys'
+ ),
+ (//[414]
+ sy_narg:0;
+ sy_call:@nosys;
+ sy_name:'nosys'
+ ),
+ (//[415]
+ sy_narg:4;
+ sy_call:@nosys;
+ sy_name:'sys___mac_execve'
+ ),
+ (//[416]
+ sy_narg:3;
+ sy_call:nil;
+ sy_name:'sys_sigaction'
+ ),
+ (//[417]
+ sy_narg:1;
+ sy_call:nil;
+ sy_name:'sys_sigreturn'
+ ),
+ (//[418]
+ sy_narg:0;
+ sy_call:@nosys;
+ sy_name:'nosys'
+ ),
+ (//[419]
+ sy_narg:0;
+ sy_call:@nosys;
+ sy_name:'nosys'
+ ),
+ (//[420]
+ sy_narg:0;
+ sy_call:@nosys;
+ sy_name:'nosys'
+ ),
+ (//[421]
+ sy_narg:1;
+ sy_call:nil;
+ sy_name:'sys_getcontext'
+ ),
+ (//[422]
+ sy_narg:1;
+ sy_call:nil;
+ sy_name:'sys_setcontext'
+ ),
+ (//[423]
+ sy_narg:2;
+ sy_call:nil;
+ sy_name:'sys_swapcontext'
+ ),
+ (//[424]
+ sy_narg:0;
+ sy_call:@nosys;
+ sy_name:'nosys'
+ ),
+ (//[425]
+ sy_narg:0;
+ sy_call:@nosys;
+ sy_name:'nosys'
+ ),
+ (//[426]
+ sy_narg:0;
+ sy_call:@nosys;
+ sy_name:'nosys'
+ ),
+ (//[427]
+ sy_narg:0;
+ sy_call:@nosys;
+ sy_name:'nosys'
+ ),
+ (//[428]
+ sy_narg:0;
+ sy_call:@nosys;
+ sy_name:'nosys'
+ ),
+ (//[429]
+ sy_narg:2;
+ sy_call:nil;
+ sy_name:'sys_sigwait'
+ ),
+ (//[430]
+ sy_narg:3;
+ sy_call:nil;
+ sy_name:'sys_thr_create'
+ ),
+ (//[431]
+ sy_narg:1;
+ sy_call:nil;
+ sy_name:'sys_thr_exit'
+ ),
+ (//[432]
+ sy_narg:1;
+ sy_call:nil;
+ sy_name:'sys_thr_self'
+ ),
+ (//[433]
+ sy_narg:2;
+ sy_call:nil;
+ sy_name:'sys_thr_kill'
+ ),
+ (//[434]
+ sy_narg:1;
+ sy_call:nil;
+ sy_name:'sys__umtx_lock'
+ ),
+ (//[435]
+ sy_narg:1;
+ sy_call:nil;
+ sy_name:'sys__umtx_unlock'
+ ),
+ (//[436]
+ sy_narg:0;
+ sy_call:@nosys;
+ sy_name:'nosys'
+ ),
+ (//[437]
+ sy_narg:0;
+ sy_call:@nosys;
+ sy_name:'nosys'
+ ),
+ (//[438]
+ sy_narg:0;
+ sy_call:@nosys;
+ sy_name:'nosys'
+ ),
+ (//[439]
+ sy_narg:0;
+ sy_call:@nosys;
+ sy_name:'nosys'
+ ),
+ (//[440]
+ sy_narg:0;
+ sy_call:@nosys;
+ sy_name:'nosys'
+ ),
+ (//[441]
+ sy_narg:2;
+ sy_call:nil;
+ sy_name:'sys_ksem_timedwait'
+ ),
+ (//[442]
+ sy_narg:1;
+ sy_call:nil;
+ sy_name:'sys_thr_suspend'
+ ),
+ (//[443]
+ sy_narg:1;
+ sy_call:nil;
+ sy_name:'sys_thr_wake'
+ ),
+ (//[444]
+ sy_narg:2;
+ sy_call:@nosys;
+ sy_name:'sys_kldunloadf'
+ ),
+ (//[445]
+ sy_narg:0;
+ sy_call:@nosys;
+ sy_name:'nosys'
+ ),
+ (//[446]
+ sy_narg:0;
+ sy_call:@nosys;
+ sy_name:'nosys'
+ ),
+ (//[447]
+ sy_narg:0;
+ sy_call:@nosys;
+ sy_name:'nosys'
+ ),
+ (//[448]
+ sy_narg:0;
+ sy_call:@nosys;
+ sy_name:'nosys'
+ ),
+ (//[449]
+ sy_narg:0;
+ sy_call:@nosys;
+ sy_name:'nosys'
+ ),
+ (//[450]
+ sy_narg:0;
+ sy_call:@nosys;
+ sy_name:'nosys'
+ ),
+ (//[451]
+ sy_narg:0;
+ sy_call:@nosys;
+ sy_name:'nosys'
+ ),
+ (//[452]
+ sy_narg:0;
+ sy_call:@nosys;
+ sy_name:'nosys'
+ ),
+ (//[453]
+ sy_narg:0;
+ sy_call:@nosys;
+ sy_name:'nosys'
+ ),
+ (//[454]
+ sy_narg:5;
+ sy_call:nil;
+ sy_name:'sys__umtx_op'
+ ),
+ (//[455]
+ sy_narg:2;
+ sy_call:nil;
+ sy_name:'sys_thr_new'
+ ),
+ (//[456]
+ sy_narg:3;
+ sy_call:nil;
+ sy_name:'sys_sigqueue'
+ ),
+ (//[457]
+ sy_narg:4;
+ sy_call:@nosys;
+ sy_name:'lkmressys'
+ ),
+ (//[458]
+ sy_narg:3;
+ sy_call:@nosys;
+ sy_name:'lkmressys'
+ ),
+ (//[459]
+ sy_narg:5;
+ sy_call:@nosys;
+ sy_name:'lkmressys'
+ ),
+ (//[460]
+ sy_narg:5;
+ sy_call:@nosys;
+ sy_name:'lkmressys'
+ ),
+ (//[461]
+ sy_narg:2;
+ sy_call:@nosys;
+ sy_name:'lkmressys'
+ ),
+ (//[462]
+ sy_narg:1;
+ sy_call:@nosys;
+ sy_name:'lkmressys'
+ ),
+ (//[463]
+ sy_narg:0;
+ sy_call:@nosys;
+ sy_name:'nosys'
+ ),
+ (//[464]
+ sy_narg:2;
+ sy_call:nil;
+ sy_name:'sys_thr_set_name'
+ ),
+ (//[465]
+ sy_narg:2;
+ sy_call:nil;
+ sy_name:'sys_aio_fsync'
+ ),
+ (//[466]
+ sy_narg:3;
+ sy_call:nil;
+ sy_name:'sys_rtprio_thread'
+ ),
+ (//[467]
+ sy_narg:0;
+ sy_call:@nosys;
+ sy_name:'nosys'
+ ),
+ (//[468]
+ sy_narg:0;
+ sy_call:@nosys;
+ sy_name:'nosys'
+ ),
+ (//[469]
+ sy_narg:0;
+ sy_call:@nosys;
+ sy_name:'nosys'
+ ),
+ (//[470]
+ sy_narg:0;
+ sy_call:@nosys;
+ sy_name:'nosys'
+ ),
+ (//[471]
+ sy_narg:0;
+ sy_call:@nosys;
+ sy_name:'nosys'
+ ),
+ (//[472]
+ sy_narg:0;
+ sy_call:@nosys;
+ sy_name:'nosys'
+ ),
+ (//[473]
+ sy_narg:0;
+ sy_call:@nosys;
+ sy_name:'nosys'
+ ),
+ (//[474]
+ sy_narg:0;
+ sy_call:@nosys;
+ sy_name:'nosys'
+ ),
+ (//[475]
+ sy_narg:4;
+ sy_call:nil;
+ sy_name:'sys_pread'
+ ),
+ (//[476]
+ sy_narg:4;
+ sy_call:nil;
+ sy_name:'sys_pwrite'
+ ),
+ (//[477]
+ sy_narg:6;
+ sy_call:nil;
+ sy_name:'sys_mmap'
+ ),
+ (//[478]
+ sy_narg:3;
+ sy_call:nil;
+ sy_name:'sys_lseek'
+ ),
+ (//[479]
+ sy_narg:2;
+ sy_call:nil;
+ sy_name:'sys_truncate'
+ ),
+ (//[480]
+ sy_narg:2;
+ sy_call:nil;
+ sy_name:'sys_ftruncate'
+ ),
+ (//[481]
+ sy_narg:3;
+ sy_call:nil;
+ sy_name:'sys_thr_kill2'
+ ),
+ (//[482]
+ sy_narg:3;
+ sy_call:nil;
+ sy_name:'sys_shm_open'
+ ),
+ (//[483]
+ sy_narg:1;
+ sy_call:nil;
+ sy_name:'sys_shm_unlink'
+ ),
+ (//[484]
+ sy_narg:1;
+ sy_call:nil;
+ sy_name:'sys_cpuset'
+ ),
+ (//[485]
+ sy_narg:3;
+ sy_call:nil;
+ sy_name:'sys_cpuset_setid'
+ ),
+ (//[486]
+ sy_narg:4;
+ sy_call:nil;
+ sy_name:'sys_cpuset_getid'
+ ),
+ (//[487]
+ sy_narg:5;
+ sy_call:nil;
+ sy_name:'sys_cpuset_getaffinity'
+ ),
+ (//[488]
+ sy_narg:5;
+ sy_call:nil;
+ sy_name:'sys_cpuset_setaffinity'
+ ),
+ (//[489]
+ sy_narg:0;
+ sy_call:@nosys;
+ sy_name:'nosys'
+ ),
+ (//[490]
+ sy_narg:4;
+ sy_call:nil;
+ sy_name:'sys_fchmodat'
+ ),
+ (//[491]
+ sy_narg:5;
+ sy_call:nil;
+ sy_name:'sys_fchownat'
+ ),
+ (//[492]
+ sy_narg:0;
+ sy_call:@nosys;
+ sy_name:'nosys'
+ ),
+ (//[493]
+ sy_narg:4;
+ sy_call:nil;
+ sy_name:'sys_fstatat'
+ ),
+ (//[494]
+ sy_narg:3;
+ sy_call:nil;
+ sy_name:'sys_futimesat'
+ ),
+ (//[495]
+ sy_narg:5;
+ sy_call:nil;
+ sy_name:'sys_linkat'
+ ),
+ (//[496]
+ sy_narg:3;
+ sy_call:nil;
+ sy_name:'sys_mkdirat'
+ ),
+ (//[497]
+ sy_narg:3;
+ sy_call:nil;
+ sy_name:'sys_mkfifoat'
+ ),
+ (//[498]
+ sy_narg:4;
+ sy_call:nil;
+ sy_name:'sys_mknodat'
+ ),
+ (//[499]
+ sy_narg:4;
+ sy_call:nil;
+ sy_name:'sys_openat'
+ ),
+ (//[500]
+ sy_narg:0;
+ sy_call:@nosys;
+ sy_name:'nosys'
+ ),
+ (//[501]
+ sy_narg:4;
+ sy_call:nil;
+ sy_name:'sys_renameat'
+ ),
+ (//[502]
+ sy_narg:3;
+ sy_call:nil;
+ sy_name:'sys_symlinkat'
+ ),
+ (//[503]
+ sy_narg:3;
+ sy_call:nil;
+ sy_name:'sys_unlinkat'
+ ),
+ (//[504]
+ sy_narg:0;
+ sy_call:@nosys;
+ sy_name:'nosys'
+ ),
+ (//[505]
+ sy_narg:1;
+ sy_call:@nosys;
+ sy_name:'lkmressys'
+ ),
+ (//[506]
+ sy_narg:0;
+ sy_call:@nosys;
+ sy_name:'nosys'
+ ),
+ (//[507]
+ sy_narg:0;
+ sy_call:@nosys;
+ sy_name:'nosys'
+ ),
+ (//[508]
+ sy_narg:0;
+ sy_call:@nosys;
+ sy_name:'nosys'
+ ),
+ (//[509]
+ sy_narg:0;
+ sy_call:@nosys;
+ sy_name:'nosys'
+ ),
+ (//[510]
+ sy_narg:4;
+ sy_call:@nosys;
+ sy_name:'lkmressys'
+ ),
+ (//[511]
+ sy_narg:3;
+ sy_call:@nosys;
+ sy_name:'lkmressys'
+ ),
+ (//[512]
+ sy_narg:3;
+ sy_call:@nosys;
+ sy_name:'lkmressys'
+ ),
+ (//[513]
+ sy_narg:0;
+ sy_call:@nosys;
+ sy_name:'nosys'
+ ),
+ (//[514]
+ sy_narg:2;
+ sy_call:@nosys;
+ sy_name:'sys_cap_new'
+ ),
+ (//[515]
+ sy_narg:2;
+ sy_call:@nosys;
+ sy_name:'sys_cap_getrights'
+ ),
+ (//[516]
+ sy_narg:0;
+ sy_call:@nosys;
+ sy_name:'sys_cap_enter'
+ ),
+ (//[517]
+ sy_narg:1;
+ sy_call:@nosys;
+ sy_name:'sys_cap_getmode'
+ ),
+ (//[518]
+ sy_narg:2;
+ sy_call:@nosys;
+ sy_name:'sys_pdfork'
+ ),
+ (//[519]
+ sy_narg:2;
+ sy_call:@nosys;
+ sy_name:'sys_pdkill'
+ ),
+ (//[520]
+ sy_narg:2;
+ sy_call:@nosys;
+ sy_name:'sys_pdgetpid'
+ ),
+ (//[521]
+ sy_narg:0;
+ sy_call:@nosys;
+ sy_name:'nosys'
+ ),
+ (//[522]
+ sy_narg:6;
+ sy_call:nil;
+ sy_name:'sys_pselect'
+ ),
+ (//[523]
+ sy_narg:0;
+ sy_call:@nosys;
+ sy_name:'nosys'
+ ),
+ (//[524]
+ sy_narg:0;
+ sy_call:@nosys;
+ sy_name:'nosys'
+ ),
+ (//[525]
+ sy_narg:4;
+ sy_call:@nosys;
+ sy_name:'sys_rctl_get_racct'
+ ),
+ (//[526]
+ sy_narg:4;
+ sy_call:@nosys;
+ sy_name:'sys_rctl_get_rules'
+ ),
+ (//[527]
+ sy_narg:4;
+ sy_call:@nosys;
+ sy_name:'sys_rctl_get_limits'
+ ),
+ (//[528]
+ sy_narg:4;
+ sy_call:@nosys;
+ sy_name:'sys_rctl_add_rule'
+ ),
+ (//[529]
+ sy_narg:4;
+ sy_call:@nosys;
+ sy_name:'sys_rctl_remove_rule'
+ ),
+ (//[530]
+ sy_narg:0;
+ sy_call:@nosys;
+ sy_name:'nosys'
+ ),
+ (//[531]
+ sy_narg:0;
+ sy_call:@nosys;
+ sy_name:'nosys'
+ ),
+ (//[532]
+ sy_narg:5;
+ sy_call:nil;
+ sy_name:'sys_regmgr_call'
+ ),
+ (//[533]
+ sy_narg:3;
+ sy_call:nil;
+ sy_name:'sys_jitshm_create'
+ ),
+ (//[534]
+ sy_narg:2;
+ sy_call:nil;
+ sy_name:'sys_jitshm_alias'
+ ),
+ (//[535]
+ sy_narg:4;
+ sy_call:nil;
+ sy_name:'sys_dl_get_list'
+ ),
+ (//[536]
+ sy_narg:3;
+ sy_call:nil;
+ sy_name:'sys_dl_get_info'
+ ),
+ (//[537]
+ sy_narg:1;
+ sy_call:@nosys;
+ sy_name:'sys_dl_notify_event'
+ ),
+ (//[538]
+ sy_narg:3;
+ sy_call:nil;
+ sy_name:'sys_evf_create'
+ ),
+ (//[539]
+ sy_narg:1;
+ sy_call:nil;
+ sy_name:'sys_evf_delete'
+ ),
+ (//[540]
+ sy_narg:1;
+ sy_call:nil;
+ sy_name:'sys_evf_open'
+ ),
+ (//[541]
+ sy_narg:1;
+ sy_call:nil;
+ sy_name:'sys_evf_close'
+ ),
+ (//[542]
+ sy_narg:5;
+ sy_call:nil;
+ sy_name:'sys_evf_wait'
+ ),
+ (//[543]
+ sy_narg:4;
+ sy_call:nil;
+ sy_name:'sys_evf_trywait'
+ ),
+ (//[544]
+ sy_narg:2;
+ sy_call:nil;
+ sy_name:'sys_evf_set'
+ ),
+ (//[545]
+ sy_narg:2;
+ sy_call:nil;
+ sy_name:'sys_evf_clear'
+ ),
+ (//[546]
+ sy_narg:3;
+ sy_call:nil;
+ sy_name:'sys_evf_cancel'
+ ),
+ (//[547]
+ sy_narg:2;
+ sy_call:nil;
+ sy_name:'sys_query_memory_protection'
+ ),
+ (//[548]
+ sy_narg:5;
+ sy_call:nil;
+ sy_name:'sys_batch_map'
+ ),
+ (//[549]
+ sy_narg:4;
+ sy_call:nil;
+ sy_name:'sys_osem_create'
+ ),
+ (//[550]
+ sy_narg:1;
+ sy_call:nil;
+ sy_name:'sys_osem_delete'
+ ),
+ (//[551]
+ sy_narg:1;
+ sy_call:nil;
+ sy_name:'sys_osem_open'
+ ),
+ (//[552]
+ sy_narg:1;
+ sy_call:nil;
+ sy_name:'sys_osem_close'
+ ),
+ (//[553]
+ sy_narg:3;
+ sy_call:nil;
+ sy_name:'sys_osem_wait'
+ ),
+ (//[554]
+ sy_narg:2;
+ sy_call:nil;
+ sy_name:'sys_osem_trywait'
+ ),
+ (//[555]
+ sy_narg:2;
+ sy_call:nil;
+ sy_name:'sys_osem_post'
+ ),
+ (//[556]
+ sy_narg:3;
+ sy_call:nil;
+ sy_name:'sys_osem_cancel'
+ ),
+ (//[557]
+ sy_narg:3;
+ sy_call:nil;
+ sy_name:'sys_namedobj_create'
+ ),
+ (//[558]
+ sy_narg:2;
+ sy_call:nil;
+ sy_name:'sys_namedobj_delete'
+ ),
+ (//[559]
+ sy_narg:1;
+ sy_call:nil;
+ sy_name:'sys_set_vm_container'
+ ),
+ (//[560]
+ sy_narg:1;
+ sy_call:nil;
+ sy_name:'sys_debug_init'
+ ),
+ (//[561]
+ sy_narg:1;
+ sy_call:nil;
+ sy_name:'sys_suspend_process'
+ ),
+ (//[562]
+ sy_narg:1;
+ sy_call:nil;
+ sy_name:'sys_resume_process'
+ ),
+ (//[563]
+ sy_narg:1;
+ sy_call:nil;
+ sy_name:'sys_opmc_enable'
+ ),
+ (//[564]
+ sy_narg:1;
+ sy_call:nil;
+ sy_name:'sys_opmc_disable'
+ ),
+ (//[565]
+ sy_narg:3;
+ sy_call:nil;
+ sy_name:'sys_opmc_set_ctl'
+ ),
+ (//[566]
+ sy_narg:3;
+ sy_call:nil;
+ sy_name:'sys_opmc_set_ctr'
+ ),
+ (//[567]
+ sy_narg:3;
+ sy_call:nil;
+ sy_name:'sys_opmc_get_ctr'
+ ),
+ (//[568]
+ sy_narg:5;
+ sy_call:nil;
+ sy_name:'sys_budget_create'
+ ),
+ (//[569]
+ sy_narg:1;
+ sy_call:nil;
+ sy_name:'sys_budget_delete'
+ ),
+ (//[570]
+ sy_narg:3;
+ sy_call:nil;
+ sy_name:'sys_budget_get'
+ ),
+ (//[571]
+ sy_narg:1;
+ sy_call:nil;
+ sy_name:'sys_budget_set'
+ ),
+ (//[572]
+ sy_narg:4;
+ sy_call:nil;
+ sy_name:'sys_virtual_query'
+ ),
+ (//[573]
+ sy_narg:3;
+ sy_call:nil;
+ sy_name:'sys_mdbg_call'
+ ),
+ (//[574]
+ sy_narg:2;
+ sy_call:@nosys;
+ sy_name:'sys_sblock_create'
+ ),
+ (//[575]
+ sy_narg:1;
+ sy_call:@nosys;
+ sy_name:'sys_sblock_delete'
+ ),
+ (//[576]
+ sy_narg:1;
+ sy_call:@nosys;
+ sy_name:'sys_sblock_enter'
+ ),
+ (//[577]
+ sy_narg:1;
+ sy_call:@nosys;
+ sy_name:'sys_sblock_exit'
+ ),
+ (//[578]
+ sy_narg:1;
+ sy_call:@nosys;
+ sy_name:'sys_sblock_xenter'
+ ),
+ (//[579]
+ sy_narg:1;
+ sy_call:@nosys;
+ sy_name:'sys_sblock_xexit'
+ ),
+ (//[580]
+ sy_narg:2;
+ sy_call:@nosys;
+ sy_name:'sys_eport_create'
+ ),
+ (//[581]
+ sy_narg:1;
+ sy_call:@nosys;
+ sy_name:'sys_eport_delete'
+ ),
+ (//[582]
+ sy_narg:2;
+ sy_call:@nosys;
+ sy_name:'sys_eport_trigger'
+ ),
+ (//[583]
+ sy_narg:1;
+ sy_call:@nosys;
+ sy_name:'sys_eport_open'
+ ),
+ (//[584]
+ sy_narg:1;
+ sy_call:@nosys;
+ sy_name:'sys_eport_close'
+ ),
+ (//[585]
+ sy_narg:0;
+ sy_call:nil;
+ sy_name:'sys_is_in_sandbox'
+ ),
+ (//[586]
+ sy_narg:1;
+ sy_call:nil;
+ sy_name:'sys_dmem_container'
+ ),
+ (//[587]
+ sy_narg:2;
+ sy_call:nil;
+ sy_name:'sys_get_authinfo'
+ ),
+ (//[588]
+ sy_narg:3;
+ sy_call:nil;
+ sy_name:'sys_mname'
+ ),
+ (//[589]
+ sy_narg:6;
+ sy_call:@nosys;
+ sy_name:'sys_dynlib_dlopen'
+ ),
+ (//[590]
+ sy_narg:1;
+ sy_call:@nosys;
+ sy_name:'sys_dynlib_dlclose'
+ ),
+ (//[591]
+ sy_narg:3;
+ sy_call:nil;
+ sy_name:'sys_dynlib_dlsym'
+ ),
+ (//[592]
+ sy_narg:3;
+ sy_call:nil;
+ sy_name:'sys_dynlib_get_list'
+ ),
+ (//[593]
+ sy_narg:2;
+ sy_call:nil;
+ sy_name:'sys_dynlib_get_info'
+ ),
+ (//[594]
+ sy_narg:4;
+ sy_call:nil;
+ sy_name:'sys_dynlib_load_prx'
+ ),
+ (//[595]
+ sy_narg:3;
+ sy_call:nil;
+ sy_name:'sys_dynlib_unload_prx'
+ ),
+ (//[596]
+ sy_narg:0;
+ sy_call:nil;
+ sy_name:'sys_dynlib_do_copy_relocations'
+ ),
+ (//[597]
+ sy_narg:3;
+ sy_call:@nosys;
+ sy_name:'sys_dynlib_prepare_dlclose'
+ ),
+ (//[598]
+ sy_narg:2;
+ sy_call:nil;
+ sy_name:'sys_dynlib_get_proc_param'
+ ),
+ (//[599]
+ sy_narg:0;
+ sy_call:nil;
+ sy_name:'sys_dynlib_process_needed_and_relocate'
+ ),
+ (//[600]
+ sy_narg:1;
+ sy_call:nil;
+ sy_name:'sys_sandbox_path'
+ ),
+ (//[601]
+ sy_narg:3;
+ sy_call:nil;
+ sy_name:'sys_mdbg_service'
+ ),
+ (//[602]
+ sy_narg:3;
+ sy_call:nil;
+ sy_name:'sys_randomized_path'
+ ),
+ (//[603]
+ sy_narg:2;
+ sy_call:nil;
+ sy_name:'sys_rdup'
+ ),
+ (//[604]
+ sy_narg:5;
+ sy_call:nil;
+ sy_name:'sys_dl_get_metadata'
+ ),
+ (//[605]
+ sy_narg:1;
+ sy_call:nil;
+ sy_name:'sys_workaround8849'
+ ),
+ (//[606]
+ sy_narg:0;
+ sy_call:nil;
+ sy_name:'sys_is_development_mode'
+ ),
+ (//[607]
+ sy_narg:2;
+ sy_call:nil;
+ sy_name:'sys_get_self_auth_info'
+ ),
+ (//[608]
+ sy_narg:3;
+ sy_call:nil;
+ sy_name:'sys_dynlib_get_info_ex'
+ ),
+ (//[609]
+ sy_narg:0;
+ sy_call:nil;
+ sy_name:'sys_budget_getid'
+ ),
+ (//[610]
+ sy_narg:1;
+ sy_call:nil;
+ sy_name:'sys_budget_get_ptype'
+ ),
+ (//[611]
+ sy_narg:3;
+ sy_call:nil;
+ sy_name:'sys_get_paging_stats_of_all_threads'
+ ),
+ (//[612]
+ sy_narg:1;
+ sy_call:nil;
+ sy_name:'sys_get_proc_type_info'
+ ),
+ (//[613]
+ sy_narg:3;
+ sy_call:nil;
+ sy_name:'sys_get_resident_count'
+ ),
+ (//[614]
+ sy_narg:1;
+ sy_call:nil;
+ sy_name:'sys_prepare_to_suspend_process'
+ ),
+ (//[615]
+ sy_narg:3;
+ sy_call:nil;
+ sy_name:'sys_get_resident_fmem_count'
+ ),
+ (//[616]
+ sy_narg:2;
+ sy_call:nil;
+ sy_name:'sys_thr_get_name'
+ ),
+ (//[617]
+ sy_narg:1;
+ sy_call:nil;
+ sy_name:'sys_set_gpo'
+ ),
+ (//[618]
+ sy_narg:3;
+ sy_call:nil;
+ sy_name:'sys_get_paging_stats_of_all_objects'
+ ),
+ (//[619]
+ sy_narg:5;
+ sy_call:@nosys;
+ sy_name:'sys_test_debug_rwmem'
+ ),
+ (//[620]
+ sy_narg:0;
+ sy_call:nil;
+ sy_name:'sys_free_stack'
+ ),
+ (//[621]
+ sy_narg:1;
+ sy_call:nil;
+ sy_name:'sys_suspend_system'
+ ),
+ (//[622]
+ sy_narg:6;
+ sy_call:nil;
+ sy_name:'sys_ipmimgr_call'
+ ),
+ (//[623]
+ sy_narg:1;
+ sy_call:nil;
+ sy_name:'sys_get_gpo'
+ ),
+ (//[624]
+ sy_narg:0;
+ sy_call:nil;
+ sy_name:'sys_get_vm_map_timestamp'
+ ),
+ (//[625]
+ sy_narg:4;
+ sy_call:nil;
+ sy_name:'sys_opmc_set_hw'
+ ),
+ (//[626]
+ sy_narg:5;
+ sy_call:nil;
+ sy_name:'sys_opmc_get_hw'
+ ),
+ (//[627]
+ sy_narg:2;
+ sy_call:nil;
+ sy_name:'sys_get_cpu_usage_all'
+ ),
+ (//[628]
+ sy_narg:6;
+ sy_call:nil;
+ sy_name:'sys_mmap_dmem'
+ ),
+ (//[629]
+ sy_narg:4;
+ sy_call:nil;
+ sy_name:'sys_physhm_open'
+ ),
+ (//[630]
+ sy_narg:1;
+ sy_call:nil;
+ sy_name:'sys_physhm_unlink'
+ ),
+ (//[631]
+ sy_narg:0;
+ sy_call:nil;
+ sy_name:'sys_resume_internal_hdd'
+ ),
+ (//[632]
+ sy_narg:1;
+ sy_call:nil;
+ sy_name:'sys_thr_suspend_ucontext'
+ ),
+ (//[633]
+ sy_narg:1;
+ sy_call:nil;
+ sy_name:'sys_thr_resume_ucontext'
+ ),
+ (//[634]
+ sy_narg:2;
+ sy_call:nil;
+ sy_name:'sys_thr_get_ucontext'
+ ),
+ (//[635]
+ sy_narg:2;
+ sy_call:@nosys;
+ sy_name:'sys_thr_set_ucontext'
+ ),
+ (//[636]
+ sy_narg:2;
+ sy_call:nil;
+ sy_name:'sys_set_timezone_info'
+ ),
+ (//[637]
+ sy_narg:2;
+ sy_call:nil;
+ sy_name:'sys_set_phys_fmem_limit'
+ ),
+ (//[638]
+ sy_narg:4;
+ sy_call:nil;
+ sy_name:'sys_utc_to_localtime'
+ ),
+ (//[639]
+ sy_narg:5;
+ sy_call:nil;
+ sy_name:'sys_localtime_to_utc'
+ ),
+ (//[640]
+ sy_narg:8;
+ sy_call:@nzero;
+ sy_name:'sys_set_uevt'
+ ),
+ (//[641]
+ sy_narg:2;
+ sy_call:nil;
+ sy_name:'sys_get_cpu_usage_proc'
+ ),
+ (//[642]
+ sy_narg:4;
+ sy_call:nil;
+ sy_name:'sys_get_map_statistics'
+ ),
+ (//[643]
+ sy_narg:1;
+ sy_call:nil;
+ sy_name:'sys_set_chicken_switches'
+ ),
+ (//[644]
+ sy_narg:0;
+ sy_call:@nosys;
+ sy_name:'sys_extend_page_table_pool'
+ ),
+ (//[645]
+ sy_narg:0;
+ sy_call:@nosys;
+ sy_name:'sys_extend_page_table_pool2'
+ ),
+ (//[646]
+ sy_narg:1;
+ sy_call:nil;
+ sy_name:'sys_get_kernel_mem_statistics'
+ ),
+ (//[647]
+ sy_narg:1;
+ sy_call:nil;
+ sy_name:'sys_get_sdk_compiled_version'
+ ),
+ (//[648]
+ sy_narg:1;
+ sy_call:nil;
+ sy_name:'sys_app_state_change'
+ ),
+ (//[649]
+ sy_narg:3;
+ sy_call:nil;
+ sy_name:'sys_dynlib_get_obj_member'
+ ),
+ (//[650]
+ sy_narg:1;
+ sy_call:nil;
+ sy_name:'sys_budget_get_ptype_of_budget'
+ ),
+ (//[651]
+ sy_narg:1;
+ sy_call:nil;
+ sy_name:'sys_prepare_to_resume_process'
+ ),
+ (//[652]
+ sy_narg:2;
+ sy_call:nil;
+ sy_name:'sys_process_terminate'
+ ),
+ (//[653]
+ sy_narg:1;
+ sy_call:nil;
+ sy_name:'sys_blockpool_open'
+ ),
+ (//[654]
+ sy_narg:5;
+ sy_call:nil;
+ sy_name:'sys_blockpool_map'
+ ),
+ (//[655]
+ sy_narg:3;
+ sy_call:nil;
+ sy_name:'sys_blockpool_unmap'
+ ),
+ (//[656]
+ sy_narg:2;
+ sy_call:nil;
+ sy_name:'sys_dynlib_get_info_for_libdbg'
+ ),
+ (//[657]
+ sy_narg:4;
+ sy_call:nil;
+ sy_name:'sys_blockpool_batch'
+ ),
+ (//[658]
+ sy_narg:1;
+ sy_call:nil;
+ sy_name:'sys_fdatasync'
+ ),
+ (//[659]
+ sy_narg:3;
+ sy_call:nil;
+ sy_name:'sys_dynlib_get_list2'
+ ),
+ (//[660]
+ sy_narg:2;
+ sy_call:nil;
+ sy_name:'sys_dynlib_get_info2'
+ ),
+ (//[661]
+ sy_narg:4;
+ sy_call:@nosys;
+ sy_name:'sys_aio_submit'
+ ),
+ (//[662]
+ sy_narg:3;
+ sy_call:nil;
+ sy_name:'sys_aio_multi_delete'
+ ),
+ (//[663]
+ sy_narg:5;
+ sy_call:nil;
+ sy_name:'sys_aio_multi_wait'
+ ),
+ (//[664]
+ sy_narg:3;
+ sy_call:nil;
+ sy_name:'sys_aio_multi_poll'
+ ),
+ (//[665]
+ sy_narg:2;
+ sy_call:@nosys;
+ sy_name:'sys_aio_get_data'
+ ),
+ (//[666]
+ sy_narg:3;
+ sy_call:nil;
+ sy_name:'sys_aio_multi_cancel'
+ ),
+ (//[667]
+ sy_narg:2;
+ sy_call:nil;
+ sy_name:'sys_get_bio_usage_all'
+ ),
+ (//[668]
+ sy_narg:2;
+ sy_call:@nosys;
+ sy_name:'sys_aio_create'
+ ),
+ (//[669]
+ sy_narg:5;
+ sy_call:nil;
+ sy_name:'sys_aio_submit_cmd'
+ ),
+ (//[670]
+ sy_narg:4;
+ sy_call:nil;
+ sy_name:'sys_aio_init'
+ ),
+ (//[671]
+ sy_narg:4;
+ sy_call:nil;
+ sy_name:'sys_get_page_table_stats'
+ ),
+ (//[672]
+ sy_narg:3;
+ sy_call:nil;
+ sy_name:'sys_dynlib_get_list_for_libdbg'
+ ),
+ (//[673]
+ sy_narg:4;
+ sy_call:nil;
+ sy_name:'sys_blockpool_move'
+ ),
+ (//[674]
+ sy_narg:5;
+ sy_call:nil;
+ sy_name:'sys_virtual_query_all'
+ ),
+ (//[675]
+ sy_narg:2;
+ sy_call:nil;
+ sy_name:'sys_reserve_2mb_page'
+ ),
+ (//[676]
+ sy_narg:0;
+ sy_call:nil;
+ sy_name:'sys_cpumode_yield'
+ ),
+ (//[677]
+ sy_narg:2;
+ sy_call:nil;
+ sy_name:'sys_get_phys_page_size'
+ )
+ );
+
+implementation
+
+const
+ ENOSYS =78;
+ ENOTSUP=45;
+
+function nosys:Integer;
+begin
+ Result:=ENOSYS;
+end;
+
+function nosup:Integer;
+begin
+ Result:=ENOTSUP;
+end;
+
+function nzero:Integer;
+begin
+ Result:=0;
+end;
+
+end.
+
diff --git a/tools/syscalls_gen/syscalls_gen.lpi b/tools/syscalls_gen/syscalls_gen.lpi
new file mode 100644
index 00000000..53d0e7a9
--- /dev/null
+++ b/tools/syscalls_gen/syscalls_gen.lpi
@@ -0,0 +1,64 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ -
+
+
+ -
+
+
+ -
+
+
+
+
+
diff --git a/tools/syscalls_gen/syscalls_gen.lpr b/tools/syscalls_gen/syscalls_gen.lpr
new file mode 100644
index 00000000..b61694f1
--- /dev/null
+++ b/tools/syscalls_gen/syscalls_gen.lpr
@@ -0,0 +1,398 @@
+
+
+uses
+ Classes,
+ SysUtils,
+ gset,
+ mpaslex,
+ _sysent;
+
+type
+ TRawStrCompare=class
+ class function c(var a,b:RawByteString):boolean; static;
+ end;
+ TRawStrSet=specialize TSet;
+
+class function TRawStrCompare.c(var a,b:RawByteString):boolean;
+var
+ count1,count2:SizeInt;
+begin
+ Count1:=Length(a);
+ Count2:=Length(b);
+ Result:=(Count1nil);
+end;
+
+type
+ TState=(sNone,sNameFunc,sBeforeParam,sParamName,sParamType,sAfterParam,sReturn,sEndFunc,sError);
+
+type
+ TFuncDecl=class(TStringList)
+ public
+ funit:RawByteString;
+ fhead:RawByteString;
+ fname:RawByteString;
+ fretv:RawByteString;
+ end;
+
+var
+ sysent_maxlen:Integer=0;
+ sysent_func:array[0..high(sysent_table)] of TFuncDecl;
+
+procedure AddSysFunc(f:TFuncDecl);
+var
+ i:Integer;
+ s:Boolean;
+begin
+ s:=False;
+ For i:=0 to high(sysent_table) do
+ begin
+ if (lowercase(sysent_table[i].sy_name)=lowercase(f.fname)) then
+ begin
+ if (sysent_func[i]<>nil) then
+ begin
+ Writeln('Collision[',i:3,']:',f.fname,' prev unit:',sysent_func[i].funit,' new unit:',f.funit);
+ end else
+ begin
+ Writeln('Found[',i:3,']:',f.fname:sysent_maxlen,' in unit:',f.funit);
+ sysent_func[i]:=f;
+ s:=True;
+ end;
+ end;
+ end;
+ if not s then
+ begin
+ FreeAndNil(f);
+ end;
+end;
+
+Procedure load_pas(const fname:RawByteString);
+var
+ F:THandle;
+ size:Int64;
+ buf:PChar;
+
+ state:TState;
+
+ i:Integer;
+
+ token:RawByteString;
+
+ FuncDecl:TFuncDecl;
+
+ procedure add_to_param(S:RawByteString);
+ begin
+ S:=Trim(S);
+ if (S='') then S:=' ';
+ token:=Trim(token)+S;
+ end;
+
+begin
+ if (fname='') then Exit;
+
+ F:=FileOpen(fname,fmOpenRead or fmShareDenyNone);
+ if (F=feInvalidHandle) then
+ begin
+ Writeln('Error open file:',fname);
+ Exit;
+ end;
+
+ size:=FileSeek(F,0,fsFromEnd);
+ FileSeek(F,0,fsFromBeginning);
+
+ buf:=AllocMem(size+1);
+
+ FileRead(F,buf^,size);
+
+ mwPasLex.Origin:=buf;
+
+ FuncDecl:=nil;
+ state:=sNone;
+
+ while (mwPasLex.RunPosnil) then
+ begin
+ AddSysFunc(FuncDecl);
+ FuncDecl:=nil;
+ {
+ Write(FuncDecl.fhead,' ',FuncDecl.fname,'(');
+ if (FuncDecl.Count<>0) then
+ For i:=0 to FuncDecl.Count-1 do
+ begin
+ Write(FuncDecl.Strings[i]);
+ if (i<>FuncDecl.Count-1) then
+ begin
+ Write(';');
+ end;
+ end;
+ Write(')');
+
+ if (FuncDecl.fretv<>'') then
+ begin
+ Write(':',FuncDecl.fretv);
+ end;
+ Writeln(';');
+ }
+ end;
+
+ end;
+ else;
+ end;
+
+ end;
+
+ FreeMem(buf);
+ FileClose(F);
+end;
+
+procedure LoadRecrusive(const basep,reltv:RawByteString);
+Var
+ Info:TSearchRec;
+ f:RawByteString;
+begin
+ f:=IncludeTrailingPathDelimiter(IncludeTrailingPathDelimiter(basep)+reltv);
+ If FindFirst(f+'*',faDirectory,Info)=0 then
+ begin
+ Repeat
+ Case Info.Name of
+ '.','..':;
+ else
+ if not IsExclude(Info.Name) then
+ begin
+ If ((Info.Attr and faDirectory)<>0) then
+ begin
+ LoadRecrusive(basep,IncludeTrailingPathDelimiter(reltv)+Info.Name);
+ end else
+ if (lowercase(ExtractFileExt(Info.Name))='.pas') then
+ begin
+ FileList.Add(IncludeTrailingPathDelimiter(reltv)+Info.Name);
+ //Writeln(IncludeTrailingPathDelimiter(reltv)+Info.Name);
+ load_pas(basep+IncludeTrailingPathDelimiter(reltv)+Info.Name);
+ end;
+ end;
+ end;
+ Until FindNext(info)<>0;
+ FindClose(Info);
+ end;
+end;
+
+procedure LoadSysent;
+var
+ i:Integer;
+begin
+ For i:=0 to high(sysent_table) do
+ begin
+ if (sysent_table[i].sy_call=nil) then
+ begin
+ if Length(sysent_table[i].sy_name)>sysent_maxlen then sysent_maxlen:=Length(sysent_table[i].sy_name);
+ Sysentu.Insert(lowercase(sysent_table[i].sy_name));
+ end;
+ end;
+end;
+
+procedure LoadStats;
+var
+ i:Integer;
+ f,n:Integer;
+begin
+ f:=0;
+ n:=0;
+ For i:=0 to high(sysent_table) do
+ begin
+ if (sysent_table[i].sy_call=nil) then
+ begin
+ if (sysent_func[i]<>nil) then
+ begin
+ Inc(f);
+ end else
+ begin
+ Writeln('Not found[',i:3,']:',sysent_table[i].sy_name:sysent_maxlen);
+ Inc(n);
+ end;
+ end;
+ end;
+ Writeln('syscalls status:',f,'/',f+n,':%',(f/(f+n))*100:0:2);
+end;
+
+begin
+ mwPasLex:=TmwPasLex.Create;
+ Exclude:=TRawStrSet.Create;
+ Sysentu:=TRawStrSet.Create;
+ FileList:=TStringList.Create;
+
+ AddExclude('backup');
+
+ LoadSysent;
+ LoadRecrusive('..\..\sys','');
+
+ LoadStats;
+
+ readln;
+end.
+