NASM - The Netwide Assembler

NASM Forum => Example Code => Topic started by: brethren on April 12, 2011, 05:12:34 PM

Title: up to date list of linux syscall
Post by: brethren on April 12, 2011, 05:12:34 PM
heres the list of syscalls from the latest linux stable
341 syscalls
Code: [Select]
;----------------------------------------------------
; equates for linux syscalls
; created:11th April 2011 using information from
; linux-2.6.38.2/arch/x86/kernel/syscall_table_32.S
;----------------------------------------------------
sys_restart_syscall     equ     0               ;old setup() system call
sys_exit                equ     1
sys_fork                equ     2
sys_read                equ     3
sys_write               equ     4
sys_open                equ     5
sys_close               equ     6
sys_waitpid             equ     7
sys_creat               equ     8
sys_link                equ     9
sys_unlink              equ     10
sys_execve              equ     11
sys_chdir               equ     12
sys_time                equ     13
sys_mknod               equ     14
sys_chmod               equ     15
sys_lchown16            equ     16
;sys_ni_syscall         equ     17              ;old break syscall holder
sys_stat                equ     18
sys_lseek               equ     19
sys_getpid              equ     20
sys_mount               equ     21
sys_oldumount           equ     22
sys_setuid16            equ     23
sys_getuid16            equ     24
sys_stime               equ     25
sys_ptrace              equ     26
sys_alarm               equ     27
sys_fstat               equ     28
sys_pause               equ     29
sys_utime               equ     30
;sys_ni_syscall         equ     31              ;old stty syscall holder
;sys_ni_syscall         equ     32              ;old gtty syscall holder
sys_access              equ     33
sys_nice                equ     34
;sys_ni_syscall         equ     35              ;old ftime syscall holder
sys_sync                equ     36
sys_kill                equ     37
sys_rename              equ     38
sys_mkdir               equ     39
sys_rmdir               equ     40
sys_dup                 equ     41
sys_pipe                equ     42
sys_times               equ     43
;sys_ni_syscall         equ     44              ;old prof syscall holder
sys_brk                 equ     45
sys_setgid16            equ     46
sys_getgid16            equ     47
sys_signal              equ     48
sys_geteuid16           equ     49
sys_getegid16           equ     50
sys_acct                equ     51
sys_umount              equ     52              ;recycled never used phys()
;sys_ni_syscall         equ     53              ;old lock syscall holder
sys_ioctl               equ     54
sys_fcntl               equ     55
;sys_ni_syscall         equ     56              ;old mpx syscall holder
sys_setpgid             equ     57
;sys_ni_syscall         equ     58              ;old ulimit syscall holder
sys_olduname            equ     59
sys_umask               equ     60
sys_chroot              equ     61
sys_ustat               equ     62
sys_dup2                equ     63
sys_getppid             equ     64
sys_getpgrp             equ     65
sys_setsid              equ     66
sys_sigaction           equ     67
sys_sgetmask            equ     68
sys_ssetmask            equ     69
sys_setreuid16          equ     70
sys_setregid16          equ     71
sys_sigsuspend          equ     72
sys_sigpending          equ     73
sys_sethostname         equ     74
sys_setrlimit           equ     75
sys_old_getrlimit       equ     76
sys_getrusage           equ     77
sys_gettimeofday        equ     78
sys_settimeofday        equ     79
sys_getgroups16         equ     80
sys_setgroups16         equ     81
sys_old_select          equ     82
sys_symlink             equ     83
sys_lstat               equ     84
sys_readlink            equ     85
sys_uselib              equ     86
sys_swapon              equ     87
sys_reboot              equ     88
sys_old_readdir         equ     89
sys_old_mmap            equ     90
sys_munmap              equ     91
sys_truncate            equ     92
sys_ftruncate           equ     93
sys_fchmod              equ     94
sys_fchown16            equ     95
sys_getpriority         equ     96
sys_setpriority         equ     97
;sys_ni_syscall         equ     98              ;old profil syscall holder
sys_statfs              equ     99
sys_fstatfs             equ     100
sys_ioperm              equ     101
sys_socketcall          equ     102
sys_syslog              equ     103
sys_setitimer           equ     104
sys_getitimer           equ     105
sys_newstat             equ     106
sys_newlstat            equ     107
sys_newfstat            equ     108
sys_uname               equ     109
sys_iopl                equ     110
sys_vhangup             equ     111
;sys_ni_syscall         equ     112             ;old idle syscall
sys_vm86old             equ     113
sys_wait4               equ     114
sys_swapoff             equ     115
sys_sysinfo             equ     116
sys_ipc                 equ     117
sys_fsync               equ     118
sys_sigreturn           equ     119
sys_clone               equ     120
sys_setdomainname       equ     121
sys_newuname            equ     122
sys_modify_ldt          equ     123
sys_adjtimex            equ     124
sys_mprotect            equ     125
sys_sigprocmask         equ     126
;sys_ni_syscall         equ     127             ;old create_module syscall
sys_init_module         equ     128
sys_delete_module       equ     129
;sys_ni_syscall         equ     130             ;old get_kernel_syms
sys_quotactl            equ     131
sys_getpgid             equ     132
sys_fchdir              equ     133
sys_bdflush             equ     134
sys_sysfs               equ     135
sys_personality         equ     136
;sys_ni_syscall         equ     137             ;reserved for andrew file system syscall
sys_setfsuid16          equ     138
sys_setfsgid16          equ     139
sys_llseek              equ     140
sys_getdents            equ     141
sys_select              equ     142
sys_flock               equ     143
sys_msync               equ     144
sys_readv               equ     145
sys_writev              equ     146
sys_getsid              equ     147
sys_fdatasync           equ     148
sys_sysctl              equ     149
sys_mlock               equ     150
sys_munlock             equ     151
sys_mlockall            equ     152
sys_munlockall          equ     153
sys_sched_setparam      equ     154
sys_sched_getparam      equ     155
sys_sched_setscheduler  equ     156
sys_sched_getscheduler  equ     157
sys_sched_yield         equ     158
sys_sched_get_priority_max      equ     159
sys_sched_get_priority_min      equ     160
sys_sched_rr_get_interval       equ     161
sys_nanosleep           equ     162
sys_mremap              equ     163
sys_setresuid16         equ     164
sys_getresuid16         equ     165
sys_vm86                equ     166
;sys_ni_syscall         equ     167             ;old sys_query_module
sys_poll                equ     168
sys_nfsservctl          equ     169
sys_setresgid16         equ     170
sys_getresgid16         equ     171
sys_prctl               equ     172
sys_rt_sigreturn        equ     173
sys_rt_sigaction        equ     174
sys_rt_sigprocmask      equ     175
sys_rt_sigpending       equ     176
sys_rt_sigtimedwait     equ     177
sys_rt_sigqueueinfo     equ     178
sys_rt_sigsuspend       equ     179
sys_pread64             equ     180
sys_pwrite64            equ     181
sys_chown16             equ     182
sys_getcwd              equ     183
sys_capget              equ     184
sys_capset              equ     185
sys_sigalstack          equ     186
sys_sendfile            equ     187
;sys_ni_syscall         equ     188             ;reserved for streams1
;sys_ni_syscall         equ     189             ;reserved for streams2
sys_vfork               equ     190
sys_getrlimit           equ     191
sys_mmap_pgoff          equ     192
sys_truncate64          equ     193
sys_ftruncate64         equ     194
sys_stat64              equ     195
sys_lstat64             equ     196
sys_fstat64             equ     197
sys_lchown              equ     198
sys_getuid              equ     199
sys_getgid              equ     200
sys_geteuid             equ     201
sys_getegid             equ     202
sys_setreuid            equ     203
sys_setregid            equ     204
sys_getgroups           equ     205
sys_setgroups           equ     206
sys_fchown              equ     207
sys_setresuid           equ     208
sys_getresuid           equ     209
sys_setresgid           equ     210
sys_getresgid           equ     211
sys_chown               equ     212
sys_setuid              equ     213
sys_setgid              equ     214
sys_setfsuid            equ     215
sys_setfsgid            equ     216
sys_pivot_root          equ     217
sys_mincore             equ     218
sys_madvise             equ     219
sys_getdents64          equ     220
sys_fcntl64             equ     221
;sys_ni_syscall         equ     222             ;reserved for TUX
;sys_ni_syscall         equ     223
sys_gettid              equ     224
sys_readahead           equ     225
sys_setxattr            equ     226
sys_lsetxattr           equ     227
sys_fsetxattr           equ     228
sys_getxattr            equ     229
sys_lgetxattr           equ     230
sys_fgetxattr           equ     231
sys_listxattr           equ     232
sys_llistxattr          equ     233
sys_flistxattr          equ     234
sys_removexattr         equ     235
sys_lremovexattr        equ     236
sys_fremovexattr        equ     237
sys_tkill               equ     238
sys_sendfile64          equ     239
sys_futex               equ     240
sys_sched_set_affinity  equ     241
sys_sched_get_affinity  equ     242
sys_set_thread_area     equ     243
sys_get_thread_area     equ     244
sys_io_setup            equ     245
sys_io_destroy          equ     246
sys_io_getevents        equ     247
sys_io_submit           equ     248
sys_io_cancel           equ     249
sys_fadvise64           equ     250
;sys_ni_syscall         equ     251
sys_exit_group          equ     252
sys_lookup_dcookie      equ     253
sys_epoll_create        equ     254
sys_epoll_ctl           equ     255
sys_epoll_wait          equ     256
sys_remap_file_pages    equ     257
sys_set_tid_address     equ     258
sys_timer_create        equ     259
sys_timer_settime       equ     260
sys_timer_gettime       equ     261
sys_timer_getoverrun    equ     262
sys_timer_delete        equ     263
sys_clock_settime       equ     264
sys_clock_gettime       equ     265
sys_clock_getres        equ     266
sys_clock_nanosleep     equ     267
sys_statfs64            equ     268
sys_fstatfs64           equ     269
sys_tgkill              equ     270
sys_utimes              equ     271
sys_fadvise64_64        equ     272
;sys_ni_syscall         equ     273             ;sys_vserver
sys_mbind               equ     274
sys_get_mempolicy       equ     275
sys_set_mempolicy       equ     276
sys_mq_open             equ     277
sys_mq_unlink           equ     278
sys_mq_timedsend        equ     279
sys_mq_timedreceive     equ     280
sys_mq_notify           equ     281
sys_mq_getsetattr       equ     282
sys_kexec_load          equ     283
sys_waitid              equ     284
;sys_ni_syscall         equ     285             ;available
sys_add_key             equ     286
sys_request_key         equ     287
sys_keyctl              equ     288
sys_ioprio_set          equ     289
sys_ioprio_get          equ     290
sys_inotify_init        equ     291
sys_inotify_add_watch   equ     292
sys_inotify_rm_watch    equ     293
sys_migrate_pages       equ     294
sys_openat              equ     295
sys_mkdirat             equ     296
sys_mknodat             equ     297
sys_fchownat            equ     298
sys_futimesat           equ     299
sys_fstatat64           equ     300
sys_unlinkat            equ     301
sys_renameat            equ     302
sys_linkat              equ     303
sys_symlinkat           equ     304
sys_readlinkat          equ     305
sys_fchmodat            equ     306
sys_faccessat           equ     307
sys_pselect6            equ     308
sys_ppoll               equ     309
sys_unshare             equ     310
sys_set_robust_list     equ     311
sys_get_robust_list     equ     312
sys_splice              equ     313
sys_sync_file_range     equ     314
sys_tee                 equ     315
sys_vmsplice            equ     316
sys_move_pages          equ     317
sys_getcpu              equ     318
sys_epoll_pwait         equ     319
sys_utimensat           equ     320
sys_signalfd            equ     321
sys_timerfd_create      equ     322
sys_eventfd             equ     323
sys_fallocate           equ     324
sys_timerfd_settime     equ     325
sys_timerfd_gettime     equ     326
sys_signalfd4           equ     327
sys_eventfd2            equ     328
sys_epoll_create1       equ     329
sys_dup3                equ     330
sys_pipe2               equ     331
sys_inotify_init1       equ     332
sys_preadv              equ     333
sys_pwritev             equ     334
sys_rt_tgsigqueueinfo   equ     335
sys_perf_event_open     equ     336
sys_recvmmsg            equ     337
sys_fanotify_event      equ     338
sys_fanotify_mark       equ     339
sys_prlimit64           equ     340
Title: Re: up to date list of linux syscall
Post by: Frank Kotler on April 12, 2011, 06:34:45 PM
341! Whew! Thanks Brethren!

Best,
Frank

Title: Re: up to date list of linux syscall
Post by: brethren on April 27, 2011, 09:38:31 PM
error equates
Code: [Select]
;-----------------------------------------------------------------------------------------------
; Error numbers from linux-2.6.38.2/include/asm-generic/errno-base.h
; 18th April 2011
; note: raw syscalls (as opposed to the libc wrappers which return -1 and set errno)
;       generate negative return values in EAX for errors, so you should check if a syscalls
;       return value is signed, if it is use neg eax and then check the value against this list.
;------------------------------------------------------------------------------------------------
EPERM           equ 1                   ;operation not permitted
ENOENT          equ 2                   ;no such file or directory
ESRCH           equ 3                   ;no such process
EINTR           equ 4                   ;interrupted system call
EIO             equ 5                   ;I/O error
ENXIO           equ 6                   ;no such device or address
E2BIG           equ 7                   ;argument list to long
ENOEXEC         equ 8                   ;exec format error
EBADF           equ 9                   ;bad file number
ECHILD          equ 10                  ;no child processes
EAGAIN          equ 11                  ;try again
ENOMEM          equ 12                  ;out of memory
EACCES          equ 13                  ;permission denied
EFAULT          equ 14                  ;bad address
ENOTBLK         equ 15                  ;block device required
EBUSY           equ 16                  ;device or resource busy
EEXIST          equ 17                  ;file exists
EXDEV           equ 18                  ;cross-device link
ENODEV          equ 19                  ;no such device
ENOTDIR         equ 20                  ;no such directory
EISDIR          equ 21                  ;is a directory
EINVAL          equ 22                  ;invalid argument
ENFILE          equ 23                  ;file table overflow
EMFILE          equ 24                  ;too many open files
ENOTTY          equ 25                  ;not a typewriter
ETXTBSY         equ 26                  ;text file busy
EFBIG           equ 27                  ;file too large
ENOSPC          equ 28                  ;no space left on device
ESPIPE          equ 29                  ;illegal seek
EROFS           equ 30                  ;read-only file system
EMLINK          equ 31                  ;too many links
EPIPE           equ 32                  ;broken pipe
EDOM            equ 33                  ;math arg out of domain of func
ERANGE          equ 34                  ;math result not representable
;--------------------------------------------------------------------------
; more error numbers from linux-2.6.38.2/include/asm-generic/errno.h
; 21st April 2011
;--------------------------------------------------------------------------
EDEADLCK        equ 35                  ;resource deadlock would occur
ENAMETOOLONG    equ 36                  ;file name too long
ENOLCK          equ 37                  ;no record locks available
ENOSYS          equ 38                  ;function not implemented
ENOTEMPTY       equ 39                  ;directory not empty
ELOOP           equ 40                  ;too many symbolic links encountered
EWOULDBLOCK     equ EAGAIN              ;operation would block
ENOMSG          equ 42                  ;no message of desired type
EIDRM           equ 43                  ;identifier removed
ECHRNG          equ 44                  ;channel number out of range
EL2NSYNC        equ 45                  ;level 2 not synchronized
EL3HLT          equ 46                  ;level 3 halted
EL3RST          equ 47                  ;level 3 reset
ELNRNG          equ 48                  ;link number out of range
EUNATCH         equ 49                  ;protocol driver not attached
ENOCSI          equ 50                  ;no CSI structure available
EL2HLT          equ 51                  ;level 2 halted
EBADE           equ 52                  ;invalid exchange
EBADR           equ 53                  ;invalid request descriptor
EXFULL          equ 54                  ;exchange full
ENOANO          equ 55                  ;no anode
EBADROC         equ 56                  ;invalid request code
EBADSLT         equ 57                  ;invalid slot
EDEADLOCK       equ EDEADLCK
EBFONT          equ 59                  ;bad font file format
ENOSTR          equ 60                  ;device not a stream
ENODATA         equ 61                  ;no data available
ETIME           equ 62                  ;timer expired
ENOSR           equ 63                  ;out of streams resources
ENONET          equ 64                  ;machine is not on the network
ENOPKG          equ 65                  ;package not installed
EREMOTE         equ 66                  ;object is remote
ENOLINK         equ 67                  ;link has been severed
EADV            equ 68                  ;advertise error
ESRMNT          equ 69                  ;srmount error
ECOMM           equ 70                  ;communication error on send
EPROTO          equ 71                  ;protocol error
EMULTIHOP       equ 72                  ;multihop attempted
EDOTDOT         equ 73                  ;RFS specific error
EBADMSG         equ 74                  ;not a data message
EOVERFLOW       equ 75                  ;value too large for defined data
                                        ;type
ENOTUNIQ        equ 76                  ;name not unique on network
EBADFD          equ 77                  ;file descriptor in bad state
EREMCHG         equ 78                  ;remote address changed
ELIBACC         equ 79                  ;cannot access a needed shared lib
ELIBBAD         equ 80                  ;accessing a corrupted shared lib
ELIBSCN         equ 81                  ;.lib section in a.out corrupted
ELIBMAX         equ 82                  ;attempting to link in too many shared
                                        ;libraries
ELIBEXEC        equ 83                  ;cannot exec a shared lib directly
EILSEQ          equ 84                  ;illegal byte sequence
ERESTART        equ 85                  ;interrupted system call should be
                                        ;restarted
ESTRPIPE        equ 86                  ;streams pipe error
EUSERS          equ 87                  ;too many users
ENOTSOCK        equ 88                  ;socket operation on non-socket
EDESTADDRREQ    equ 89                  ;destination address required
EMSGSIZE        equ 90                  ;message too long
EPROTOTYPE      equ 91                  ;protocol wrong type for socket
ENOPROTOOPT     equ 92                  ;protocol not available
EPROTONOSUPPORT equ 93                  ;protocol not supported
ESOCKTNOSUPPORT equ 94                  ;socket type not supported
EOPNOTSUPP      equ 95                  ;operation not supported on transport
                                        ;endpoint
EPFNOSUPPORT    equ 96                  ;protocol family not supported
EAFNOSUPPORT    equ 97                  ;address family not supported by protocol
EADDRINUSE      equ 98                  ;address already in use
EADDRNOTAVAIL   equ 99                  ;cannot assign requested address
ENETDOWN        equ 100                 ;network is down
ENETUNREACH     equ 101                 ;network is unreachable
ENETRESET       equ 102                 ;network dropped connection because of
                                        ;reset
ECONNABORTED    equ 103                 ;software caused connection abort
ECONNRESET      equ 104                 ;connection reset by peer
ENOBUFS         equ 105                 ;no buffer space available
EISCONN         equ 106                 ;transport endpoint is already connected
ENOTCONN        equ 107                 ;transport endpoint is not connected
ESHUTDOWN       equ 108                 ;cannot send after transport endpoint
                                        ;shutdown
ETOOMANYREFS    equ 109                 ;too many references : cannot splice
ETIMEDOUT       equ 110                 ;connection timed out
ECONNREFUSED    equ 111                 ;connection refused
EHOSTDOWN       equ 112                 ;host is down
EHOSTUNREACH    equ 113                 ;no route to host
EALREADY        equ 114                 ;operation already in progress
EINPROGRESS     equ 115                 ;operation now in progress
ESTALE          equ 116                 ;stale NFS file handle
EUCLEAN         equ 117                 ;structure needs cleaning
ENOTNAM         equ 118                 ;not a XENIX named type file
ENAVAIL         equ 119                 ;no XENIX semaphores available
EISNAM          equ 120                 ;is a named file type
EREMOTEIO       equ 121                 ;remote I/O error
EDQUOT          equ 122                 ;quota exceeded
ENOMEDIUM       equ 123                 ;no medium found
EMEDIUMTYPE     equ 124                 ;wrong medium type
ECANCELED       equ 125                 ;operation canceled
ENOKEY          equ 126                 ;required key not available
EKEYEXPIRED     equ 127                 ;key has expired
EKEYREVOKED     equ 128                 ;key has been revoked
EKEYREJECTED    equ 129                 ;key was rejected by service
;for robust mutexes
EOWNERDEAD      equ 130                 ;owner died
ENOTRECOVERABLE equ 131                 ;state not recoverable
ERFKILL         equ 132                 ;operation not possible due to RF-kill
;---------------------------------------------------------------------------------
Title: Re: up to date list of linux syscall
Post by: Rob Neff on April 28, 2011, 12:44:19 AM
Brethren,
Would you mind if I integrate this work into NASMX?
It would make for a nice addition indeed!  :)
Title: Re: up to date list of linux syscall
Post by: brethren on April 28, 2011, 02:43:15 PM
Brethren,
Would you mind if I integrate this work into NASMX?
It would make for a nice addition indeed!  :)


of course, feel free to use anything that i post:) i've been setting up a dev enviroment for linux and i'm pretty interested in using sys_socketcall. when i've finished converting the structures, address families etc i'll post them too
Title: Re: up to date list of linux syscall
Post by: JoeCoder on June 09, 2011, 07:47:15 AM
Isn't there a way to automate this? I wrote a script to generate equates for all the syscalls. It took me about 5 minutes. I will write another one for the error codes. But that won't be useful to other people because it is done in a non-standard language just happens to be what I know. I guess one of you guys who is already good on x86 assembly could write a tool for contrib that generates this for each site depending on the environment.
Title: Re: up to date list of linux syscall
Post by: Bryant Keller on June 09, 2011, 10:23:50 AM
Quote from: Synfire link="http://www.asmcommunity.net/board/index.php?topic=30567.msg214447#msg214447"
Code: [Select]
grep __NR /usr/include/asm/unistd_64.h | grep define | sed -e 's/\#/\%/' -e 's/__NR_/SYS_/' > unistd_64.inc
Title: Re: up to date list of linux syscall
Post by: JoeCoder on June 09, 2011, 11:56:21 AM
hehe even better  ;D

But the question was sortof would it be a good idea to add a script to contrib to create the syscall and error includes based on the user's environment (linux 32/64 multilib, Win32/64 etc.)

Because not everybody is a awk/sed expert like Bryant  :P
Title: Re: up to date list of linux syscall
Post by: Rob Neff on June 09, 2011, 12:14:32 PM
Partially agree - not everyone will have the required headers installed to build the list in the first place or they may have them in non-standard locations.
Fully agree that not everyone is an awk/sed expert like Bryant  ;)
Title: Re: up to date list of linux syscall
Post by: JoeCoder on June 09, 2011, 12:37:45 PM
Yeah your first comment is why I was thinking contrib rather than part of the build. Later anybody who need system calls could run the script on his own.