📄 syscall.hhf
字号:
#if( !@defined( syscall_hhf ))?syscall_hhf := true;#includeonce( "os/dirent.hhf" )#includeonce( "os/sysctl.hhf" )#includeonce( "os/sched.hhf" )#includeonce( "os/utsname.hhf" )#includeonce( "os/kernel.hhf" )#includeonce( "os/poll.hhf" )#includeonce( "os/msg.hhf" )#includeonce( "os/shm.hhf" )#includeonce( "os/socket.hhf" )namespace linux; @fast;const // Constants for the nfsctl calls: nfsctl_svc := 0; nfsctl_addclient := 1; nfsctl_delclient := 2; nfsctl_export := 3; nfsctl_unexport := 4; nfsctl_ugidupdate := 5; nfsctl_getfh := 6; // Linux system call opcodes: sys_exit := 1; sys_fork := 2; sys_read := 3; sys_write := 4; sys_open := 5; sys_close := 6; sys_waitpid := 7; sys_creat := 8; sys_link := 9; sys_unlink := 10; sys_execve := 11; sys_chdir := 12; sys_time := 13; sys_mknod := 14; sys_chmod := 15; sys_lchown := 16; old_stat := 18; sys_lseek := 19; sys_getpid := 20; sys_mount := 21; sys_oldmount := 22; sys_setuid := 23; sys_getuid := 24; sys_stime := 25; sys_ptrace := 26; sys_alarm := 27; old_fstat := 28; sys_pause := 29; sys_utime := 30; sys_access := 33; sys_nice := 34; sys_sync := 36; sys_kill := 37; sys_rename := 38; sys_mkdir := 39; sys_rmdir := 40; sys_dup := 41; sys_pipe := 42; sys_times := 43; sys_brk := 45; sys_setgid := 46; sys_getgid := 47; sys_signal := 48; sys_geteuid := 49; sys_getegid := 50; sys_acct := 51; sys_umount := 52; sys_ioctl := 54; sys_fcntl := 55; sys_setpgid := 57; sys_olduname := 59; sys_umask := 60; sys_chroot := 61; sys_ustat := 62; sys_dup2 := 63; sys_getppid := 64; sys_getpgrp := 65; sys_setsid := 66; sys_sigaction := 67; sys_sgetmask := 68; sys_ssetmask := 69; sys_setreuid := 70; sys_setregid := 71; sys_sigsuspend := 72; sys_sigpending := 73; sys_sethostname := 74; sys_setrlimit := 75; sys_getrlimit := 76; sys_getrusage := 77; sys_gettimeofday:= 78; sys_settimeofday:= 79; sys_getgroups := 80; sys_setgroups := 81; sys_old_select := 82; sys_symlink := 83; old_lstat := 84; sys_readlink := 85; sys_uselib := 86; sys_swapon := 87; sys_reboot := 88; old_readdir := 89; sys_mmap := 90; sys_munmap := 91; sys_truncate := 92; sys_ftruncate := 93; sys_fchmod := 94; sys_fchown := 95; sys_getpriority := 96; sys_setpriority := 97; sys_statfs := 98; sys_fstatfs := 100; sys_ioperm := 101; sys_socketcall := 102; sys_syslog := 103; sys_setitimer := 104; sys_getitimer := 105; sys_stat := 106; sys_lstat := 107; sys_fstat := 108; old_uname := 109; sys_iopl := 110; sys_vhangup := 111; sys_idle := 112; sys_vm86old := 113; sys_wait4 := 114; sys_swapoff := 115; sys_sysinfo := 116; sys_ipc := 117; sys_fsync := 118; sys_sigreturn := 119; sys_clone := 120; sys_setdomainname := 121; sys_uname := 122; sys_modify_ldt := 123; sys_adjtimex := 124; sys_mprotect := 125; sys_sigprocmask := 126; sys_create_module := 127; sys_init_module := 128; sys_delete_module := 129; sys_get_kernel_syms := 130; sys_quotactl := 131; sys_getpgid := 132; sys_fchdir := 133; sys_bdflush := 134; sys_sysfs := 135; sys_personality := 136; sys_setfsuid := 138; sys_setfsgid := 139; sys_llseek := 140; sys_getdents := 141; sys_select := 142; sys_flock := 143; sys_msync := 144; sys_readv := 145; sys_writev := 146; sys_getsid := 147; sys_fdatasync := 148; sys_sysctl := 149; sys_mlock := 150; sys_munlock := 151; sys_mlockall := 152; sys_munlockall := 153; sys_sched_setparam := 154; sys_sched_getparam := 155; sys_sched_setscheduler := 156; sys_sched_getscheduler := 157; sys_sched_yield := 158; sys_sched_get_priority_max := 159; sys_sched_get_priority_min := 160; sys_sched_rr_get_interval := 161; sys_nanosleep := 162; sys_mremap := 163; sys_setresuid := 164; sys_getresuid := 165; sys_vm86 := 166; sys_query_module:= 167; sys_poll := 168; sys_nfsservctl := 169; sys_setresgid := 170; sys_getresgid := 171; sys_prctl := 172; sys_rt_sigreturn:= 173; sys_rt_sigaction:= 174; sys_rt_sigprocmask := 175; sys_rt_sigpending := 176; sys_rt_sigtimedwait:= 177; sys_rt_sigqueueinfo:= 178; sys_rt_sigsuspend := 179; sys_pread := 180; sys_pwrite := 181; sys_chown := 182; sys_getcwd := 183; sys_capget := 184; sys_capset := 185; sys_sigaltstack := 186; sys_sendfile := 187; sys_vfork := 190; // Prototypes for various Linux calls. // Note that we don't allow kernel modules (those // that have defined "__kernel__" access to these symbols. procedure _exit( status:int32 ); @external( "linux_status" ); procedure fork; @returns( "eax" ); @external( "linux_fork" ); procedure read( fd:dword; var buf:var; count:size_t ); @use eax; @returns( "eax" ); @external( "linux_read" ); procedure write( fd:dword; var buf:var; count:size_t ); @use eax; @returns( "eax" ); @external( "linux_write" ); procedure open( filename:string; flags:dword; mode:mode_t ); @returns( "eax" ); @external( "linux_open" ); procedure close( fd:dword ); @returns( "eax" ); @external( "linux_close" ); procedure waitpid( pid:pid_t; var stat_addr:dword; options:dword ); @use eax; @returns( "eax" ); @external( "linux_waitpid" ); procedure creat( pathname:string; mode:mode_t ); @returns( "eax" ); @external( "linux_creat" ); procedure link( oldname:string; newname:string ); @returns( "eax" ); @external( "linux_link" ); procedure unlink( pathname:string ); @returns( "eax" ); @external( "linux_unlink" ); procedure execve( filename:string; var argv:var; var envp:var ); @use eax; @returns( "eax" ); @external( "linux_execve" ); procedure chdir( filename:string ); @returns( "eax" ); @external( "linux_chdir" ); procedure time( var tloc:dword ); @use eax; @returns( "eax" ); @external( "linux_time" ); procedure mknod( filename:string; mode:dword; dev:dev_t ); @returns( "eax" ); @external( "linux_mknod" ); procedure chmod( filename:string; mode:mode_t ); @returns( "eax" ); @external( "linux_chmod" ); procedure lchown( filename:string; user:uid_t; group:gid_t ); @returns( "eax" ); @external( "linux_lchown" ); procedure _break; @returns( "eax" ); @external( "linux_break" ); procedure lseek( fd:dword; offset:off_t; origin:dword ); @returns( "eax" ); @external( "linux_lseek" ); procedure getpid; @returns( "eax" ); @external( "linux_getpid" ); procedure mount ( dev_name :string; dir_name :string; theType :string; new_flags :dword; var data :var ); @use eax; @returns( "eax" ); @external( "linux_mount" ); procedure setuid( uid:uid_t ); @returns( "eax" ); @external( "linux_setuid" ); procedure getuid; @returns( "eax" ); @external( "linux_getuid" ); procedure stime( var tptr:int32 ); @use eax; @returns( "eax" ); @external( "linux_stime" ); procedure ptrace( request:dword; pid:dword; addr:dword; data:dword ); @returns( "eax" ); @external( "linux_ptrace" ); procedure alarm( seconds:uns32 ); @returns( "eax" ); @external( "linux_alarm" ); procedure pause; @returns( "eax" ); @external( "linux_pause" ); procedure utime( filename:string; var times: utimbuf ); @use eax; @returns( "eax" ); @external( "linux_utime" ); procedure access( pathname:string; mode:int32 ); @returns( "eax" ); @external( "linux_access" ); procedure nice( increment: int32 ); @returns( "eax" ); @external( "linux_nice" ); procedure sync; @returns( "eax" ); @external( "linux_sync" ); procedure kill( pid:pid_t; sig:int32 ); @returns( "eax" ); @external( "linux_kill" ); procedure rename( oldpath:string; newpath:string ); @returns( "eax" ); @external( "linux_rename" ); procedure mkdir( pathname:string; mode:int32 ); @returns( "eax" ); @external( "linux_mkdir" ); procedure rmdir( pathname:string ); @returns( "eax" ); @external( "linux_rmdir" ); procedure dupfd( oldfd:dword ); @returns( "eax" ); @external( "linux_dup" ); procedure pipe( fd:dword ); @returns( "eax" ); @external( "linux_pipe" ); procedure times( var buf:tms ); @use eax; @returns( "eax" ); @external( "linux_times" ); procedure brk( end_data_segment:dword ); @returns( "eax" ); @external( "linux_brk" ); procedure setgid( gid:gid_t ); @returns( "eax" ); @external( "linux_setgid" ); procedure getgid; @returns( "eax" ); @external( "linux_getgid" ); procedure signal( signum:int32; sighandler:procedure( signum:int32) ); @returns( "eax" ); @external( "linux_signal" ); procedure geteuid; @returns( "eax" ); @external( "linux_geteuid" ); procedure getegid; @returns( "eax" ); @external( "linux_getegid" ); procedure acct( filename: string ); @returns( "eax" ); @external( "linux_acct" ); procedure umount ( specialfile :string; dir :string; filesystemtype :string; mountflags :dword; var data :var ); @use eax; @returns( "eax" ); @external( "linux_umount" ); procedure ioctl2( d:int32; request:int32 ); @returns( "eax" ); @external( "linux_ioctl2" ); procedure ioctl3( d:int32; request:int32; argp:string ); @returns( "eax" ); @external( "linux_ioctl3" ); #macro ioctl( d, request, argp[] ); #if( @elements( argp ) = 0 ) linux.ioctl2( d, request ) #else linux.ioctl3( d, request, @text( argp[0] )) #endif #endmacro; procedure fcntl2( fd:dword; cmd:dword ); @returns( "eax" ); @external( "linux_fcntl2" ); procedure fcntl3( fd:dword; cmd:dword; arg:dword ); @returns( "eax" ); @external( "linux_fcntl3" ); #macro fcntl( fd, cmd, arg[] ); #if( @elements( arg ) = 0 ) fcntl2( fd, cmd ) #else fcntl3( fd, cmd, @text( arg[0] )) #endif #endmacro; procedure setpgid( pid:pid_t; pgid:pid_t ); @returns( "eax" ); @external( "linux_setpgid" ); procedure umask( mask:mode_t ); @returns( "eax" ); @external( "linux_umask" ); procedure chroot( path:string ); @returns( "eax" ); @external( "linux_chroot" ); procedure dup2( oldfd:dword; newfd:dword ); @returns( "eax" ); @external( "linux_dup2" ); procedure getppid; @returns( "eax" ); @external( "linux_getppid" ); procedure getpgrp; @returns( "eax" ); @external( "linux_getpgrp" ); procedure setsid; @returns( "eax" ); @external( "linux_setsid" ); procedure sigaction ( signum :int32; var act :sigaction_t; var oldaction :sigaction_t ); @use eax; @returns( "eax" ); @external( "linux_" ); procedure sgetmask; @returns( "eax" ); @external( "linux_sgetmask" ); procedure ssetmask( mask:dword ); @returns( "eax" ); @external( "linux_ssetmask" ); procedure setreuid( ruid:uid_t; euid:uid_t ); @returns( "eax" ); @external( "linux_setreuid" ); procedure setregid( rgid:gid_t; egid:gid_t ); @returns( "eax" ); @external( "linux_setregid" ); procedure sigsuspend( var mask:sigset_t ); @use eax; @returns( "eax" ); @external( "linux_sigsuspend" ); procedure sigpending( var set:sigset_t ); @use eax; @returns( "eax" ); @external( "linux_sigpending" ); procedure sethostname( theName:string; len:size_t ); @returns( "eax" ); @external( "linux_sethostname" ); procedure setrlimit( resource:dword; var rlim:rlimit ); @use eax; @returns( "eax" ); @external( "linux_setrlimit" ); procedure getrlimit( resource:dword; var rlim:rlimit ); @use eax; @returns( "eax" ); @external( "linux_getrlimit" ); procedure getrusage( who:dword; var usage:rusage_t ); @use eax; @returns( "eax" ); @external( "linux_getrusage" ); procedure gettimeofday( var tv:timeval; var tz:timezone ); @use eax; @returns( "eax" ); @external( "linux_gettimeofday" ); procedure settimeofday( var tv:timeval; var tz:timezone ); @use eax; @returns( "eax" ); @external( "linux_settimeofday" ); procedure getgroups( size:dword; var list:var ); @use eax; @returns( "eax" ); @external( "linux_getgroups" ); procedure setgroups( size:size_t; var list:var ); @use eax; @returns( "eax" ); @external( "linux_setgroups" ); procedure symlink( oldpath:string; newpath:string ); @returns( "eax" ); @external( "linux_symlink" ); procedure readlink( path:string; var buf:var; bufsize:size_t ); @use eax; @returns( "eax" ); @external( "linux_readlink" ); procedure uselib( library:string ); @returns( "eax" ); @external( "linux_uselib" ); procedure swapon( path:string; swapflags:dword ); @returns( "eax" ); @external( "linux_swapon" ); procedure reboot( magic:dword; magic2:dword; flag:dword; var arg:var ); @use eax; @returns( "eax" ); @external( "linux_reboot" ); procedure mmap ( start:dword; length:size_t; prot:int32; flags:dword; fd:dword; offset:off_t ); @stdcall; // Must be stdcall (6 parameters)! @returns( "eax" ); @external( "linux_mmap" ); procedure munmap( start:dword; length:size_t ); @returns( "eax" ); @external( "linux_munmap" ); procedure truncate( path:string; length:off_t ); @returns( "eax" ); @external( "linux_truncate" ); procedure ftruncate( fd:dword; length:off_t ); @returns( "eax" ); @external( "linux_ftruncate" ); procedure fchmod( fd:dword; mode:mode_t ); @returns( "eax" ); @external( "linux_fchmod" ); procedure fchown( fd:dword; owner:uid_t; group:gid_t ); @returns( "eax" ); @external( "linux_fchown" ); procedure getpriority( which:dword; who:dword ); @returns( "eax" ); @external( "linux_getpriority" ); procedure setpriority( which:dword; who:dword ); @returns( "eax" ); @external( "linux_setpriority" ); procedure ioperm( from:dword; num:dword; turn_on:int32 ); @returns( "eax" ); @external( "linux_ioperm" ); procedure socketcall( callop:dword; var args:var ); @use eax; @returns( "eax" ); @external( "linux_socketcall" ); procedure syslog( theType:dword; var bufp:var; len:dword ); @use eax; @returns( "eax" ); @external( "linux_syslog" ); procedure setitimer ( which:dword; var ivalue:itimerval; var ovalue:itimerval ); @use eax; @returns( "eax" ); @external( "linux_setitimer" ); procedure getitimer( which:dword; var theValue:itimerval ); @use eax; @returns( "eax" ); @external( "linux_getitimer" ); procedure stat( filename:string; var buf:stat_t ); @use eax; @returns( "eax" ); @external( "linux_stat" ); procedure fstat( fd:dword; var buf:stat_t ); @use eax; @returns( "eax" ); @external( "linux_fstat" ); procedure lstat( filename:string; var buf:stat_t ); @use eax; @returns( "eax" ); @external( "linux_lstat" ); procedure uname( var buf:utsname ); @use eax; @returns( "eax" ); @external( "linux_uname" ); procedure iopl( level:dword ); @returns( "eax" ); @external( "linux_iopl" ); procedure vhangup; @returns( "eax" ); @external( "linux_vhangup" ); procedure idle; @returns( "eax" ); @external( "linux_idle" ); procedure wait4 ( pid :pid_t; status :dword; options :dword; var rusage :rusage_t ); @use eax; @returns( "eax" ); @external( "linux_wait4" ); procedure swapoff( path:string ); @returns( "eax" ); @external( "linux_swapoff" ); procedure sysinfo( var info:sysinfo_t ); @use eax; @returns( "eax" ); @external( "linux_sysinfo" ); procedure ipc ( theCall :dword; first :dword; second :dword; third :dword; var ptr :var; fifth :dword ); @use eax; @returns( "eax" ); @external( "linux_ipc" ); procedure fsync( fd:dword ); @returns( "eax" ); @external( "linux_fsync" ); procedure sigreturn( unused:dword ); @returns( "eax" ); @external( "linux_sigreturn" ); type clonefn_t:procedure(var p:var ); procedure clone ( fn :clonefn_t;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -