NASM - The Netwide Assembler
NASM Forum => Example Code => Topic started by: brethren on April 12, 2011, 05:12:34 PM
-
heres the list of syscalls from the latest linux stable
341 syscalls
;----------------------------------------------------
; 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
-
341! Whew! Thanks Brethren!
Best,
Frank
-
error equates
;-----------------------------------------------------------------------------------------------
; 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
;---------------------------------------------------------------------------------
-
Brethren,
Would you mind if I integrate this work into NASMX?
It would make for a nice addition indeed! :)
-
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
-
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.
-
grep __NR /usr/include/asm/unistd_64.h | grep define | sed -e 's/\#/\%/' -e 's/__NR_/SYS_/' > unistd_64.inc
-
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
-
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 ;)
-
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.