Coder Social home page Coder Social logo

hrw / syscalls-table Goto Github PK

View Code? Open in Web Editor NEW
131.0 131.0 30.0 629 KB

Information about Linux system calls on different architectures

Home Page: https://marcin.juszkiewicz.com.pl/download/tables/syscalls.html

License: MIT License

Makefile 0.04% Python 96.54% Shell 1.33% Jinja 2.10%

syscalls-table's Introduction

Who am I?

Some boring GitHub stuff:

I have set of repositories here. Some were even forked by other users (most of time without contributing back).

Touched countless repos. I often contribute to projects just to vanish once it gets merged (so called drive-by coding).

My GitHub stats

syscalls-table's People

Contributors

arndb avatar fededp avatar github-actions[bot] avatar hrw avatar sunhaiyong1978 avatar xen0n avatar xiaoyinl avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

syscalls-table's Issues

RISC-V support

RISC-V is not yet in mainline kernel so tables for it are not generated.

There is 32 and 64-bit version of this architecture. Fedora port is 64-bit only.

When it comes to system calls architecture follows standard generic ones (like arc, aarch64, c6x, h8300, hexagon and few others).

Make table header sticky

With so many entries table is hard to navigate. Solution could be sticky table header.

But I am not a web developer so my solutions are ugly.

DEAD_SYSCALLS unintentionally includes clock_* syscalls

Since DEAD_SYSCALLS includes "lock", the regular expression also matches all clock_* syscall.
This is probably usually unnoticed, because missing syscalls are not removed from the syscall-names.text. However, for newly introduced syscalls that only partially match the DEAD_SYSCALLS, this might result in problems.

I only noticed that because for my special purpose I need a syscall-names.text that ONLY covers the syscalls for a specific version, so I cleared that file and ran the scripts.

Kernel version where the syscall appeared

Seeing the minimum required kernel version right in the table would make the table especially useful for people writing libraries for kernel functionality. Or for the "I'll do it manually, all libraries s*ck" kind of folk ;)

Make sure we do not add already removed entries

There are 515 implemented system calls now in Linux kernel. And 89 additional entries which are there but are not implemented.

There is a need for code to check that update process is not adding them back.

How to generate the syscall table

Hi, I wonder how to generate tables like you offer.
I find that there are no standard format for different arch, like arm32 and x86 use *.tbl, while riscv use systable.c. Is there any general method to get the syscall table of each arch ?

No x32 architecture

do_all_tables.sh has a code needed to generate x32 tables but compilation fails:

In file included from /usr/include/features.h:392:0,
from /usr/include/stdio.h:27,
from list-syscalls.c:41:
/usr/include/gnu/stubs.h:13:28: fatal error: gnu/stubs-x32.h: No such file or directory

include <gnu/stubs-x32.h>

                        ^

compilation terminated.

Does riscv32 have ppoll?

I am not familiar with the arch, but recently we receive the following comment systemd/systemd#19858 (comment).

syscalls-riscv32 says ppoll is defined, and ppoll_time64 (and *_time64) is not. But if I understand code correctly, it seems that *_time64 are defined in include/uapi/asm-generic/unistd.h.

Make first column sticky

With so many architectures column with system call names dissapears quickly. Would be nice to have it sticky.

List of projects which system calls table helped

I know that my system calls table helped some projects. Know few names but would love to see is it still in use (no worry, will maintain it).

So if table helped you in some project then please comment with it's name.

LoongArch support

Hi,

We (the open-source Loongson ecosystem volunteers and the Loongson Corporation) are trying to port Linux to the LoongArch architecture, and we've seen that systemd depends on this project for its syscall data. The LoongArch Linux port is not upstream yet, but is already submitted for review, and it uses fully asm-generic syscall numbering (the syscalls should be the same as RISC-V).

How do we go forward to add support for this architecture?

P.S. Useful links:

Add table for x86

It would be useful to see a table / column for x86 (32-bit).

Here's a list I ended up using that could be reformatted somewhat easily.

00 restart_syscall
01 exit
02 fork
03 read
04 write
05 open
06 close
07 waitpid
08 creat
09 link
10 unlink
11 execve
12 chdir
13 time
14 mknod
15 chmod
16 lchown
17 break
18 oldstat
19 lseek
20 getpid
21 mount
22 umount
23 setuid
24 getuid
25 stime
26 ptrace
27 alarm
28 oldfstat
29 pause
30 utime
31 stty
32 gtty
33 access
34 nice
35 ftime
36 sync
37 kill
38 rename
39 mkdir
40 rmdir
41 dup
42 pipe
43 times
44 prof
45 brk
46 setgid
47 getgid
48 signal
49 geteuid
50 getegid
51 acct
52 umount2
53 lock
54 ioctl
55 fcntl
56 mpx
57 setpgid
58 ulimit
59 oldolduname
60 umask
61 chroot
62 ustat
63 dup2
64 getppid
65 getpgrp
66 setsid
67 sigaction
68 sgetmask
69 ssetmask
70 setreuid
71 setregid
72 sigsuspend
73 sigpending
74 sethostname
75 setrlimit
76 getrlimit
77 getrusage
78 gettimeofday
79 settimeofday
80 getgroups
81 setgroups
82 select
83 symlink
84 oldlstat
85 readlink
86 uselib
87 swapon
88 reboot
89 readdir
90 mmap
91 munmap
92 truncate
93 ftruncate
94 fchmod
95 fchown
96 getpriority
97 setpriority
98 profil
99 statfs
100 fstatfs
101 ioperm
102 socketcall
103 syslog
104 setitimer
105 getitimer
106 stat
107 lstat
108 fstat
109 olduname
110 iopl
111 vhangup
112 idle
113 vm86old
114 wait4
115 swapoff
116 sysinfo
117 ipc
118 fsync
119 sigreturn
120 clone
121 setdomainname
122 uname
123 modify_ldt
124 adjtimex
125 mprotect
126 sigprocmask
127 create_module
128 init_module
129 delete_module
130 get_kernel_syms
131 quotactl
132 getpgid
133 fchdir
134 bdflush
135 sysfs
136 personality
137 afs_syscall
138 setfsuid
139 setfsgid
140 _llseek
141 getdents
142 _newselect
143 flock
144 msync
145 readv
146 writev
147 getsid
148 fdatasync
149 _sysctl
150 mlock
151 munlock
152 mlockall
153 munlockall
154 sched_setparam
155 sched_getparam
156 sched_setscheduler
157 sched_getscheduler
158 sched_yield
159 sched_get_priority_max
160 sched_get_priority_min
161 sched_rr_get_interval
162 nanosleep
163 mremap
164 setresuid
165 getresuid
166 vm86
167 query_module
168 poll
169 nfsservctl
170 setresgid
171 getresgid
172 prctl
173 rt_sigreturn
174 rt_sigaction
175 rt_sigprocmask
176 rt_sigpending
177 rt_sigtimedwait
178 rt_sigqueueinfo
179 rt_sigsuspend
180 pread64
181 pwrite64
182 chown
183 getcwd
184 capget
185 capset
186 sigaltstack
187 sendfile
188 getpmsg
189 putpmsg
190 vfork
191 ugetrlimit
192 mmap2
193 truncate64
194 ftruncate64
195 stat64
196 lstat64
197 fstat64
198 lchown32
199 getuid32
200 getgid32
201 geteuid32
202 getegid32
203 setreuid32
204 setregid32
205 getgroups32
206 setgroups32
207 fchown32
208 setresuid32
209 getresuid32
210 setresgid32
211 getresgid32
212 chown32
213 setuid32
214 setgid32
215 setfsuid32
216 setfsgid32
217 pivot_root
218 mincore
219 madvise
220 getdents64
221 fcntl64
224 gettid
225 readahead
226 setxattr
227 lsetxattr
228 fsetxattr
229 getxattr
230 lgetxattr
231 fgetxattr
232 listxattr
233 llistxattr
234 flistxattr
235 removexattr
236 lremovexattr
237 fremovexattr
238 tkill
239 sendfile64
240 futex
241 sched_setaffinity
242 sched_getaffinity
243 set_thread_area
244 get_thread_area
245 io_setup
246 io_destroy
247 io_getevents
248 io_submit
249 io_cancel
250 fadvise64
252 exit_group
253 lookup_dcookie
254 epoll_create
255 epoll_ctl
256 epoll_wait
257 remap_file_pages
258 set_tid_address
259 timer_create
260 timer_settime
261 timer_gettime
262 timer_getoverrun
263 timer_delete
264 clock_settime
265 clock_gettime
266 clock_getres
267 clock_nanosleep
268 statfs64
269 fstatfs64
270 tgkill
271 utimes
272 fadvise64_64
273 vserver
274 mbind
275 get_mempolicy
276 set_mempolicy
277 mq_open
278 mq_unlink
279 mq_timedsend
280 mq_timedreceive
281 mq_notify
282 mq_getsetattr
283 kexec_load
284 waitid
286 add_key
287 request_key
288 keyctl
289 ioprio_set
290 ioprio_get
291 inotify_init
292 inotify_add_watch
293 inotify_rm_watch
294 migrate_pages
295 openat
296 mkdirat
297 mknodat
298 fchownat
299 futimesat
300 fstatat64
301 unlinkat
302 renameat
303 linkat
304 symlinkat
305 readlinkat
306 fchmodat
307 faccessat
308 pselect6
309 ppoll
310 unshare
311 set_robust_list
312 get_robust_list
313 splice
314 sync_file_range
315 tee
316 vmsplice
317 move_pages
318 getcpu
319 epoll_pwait
320 utimensat
321 signalfd
322 timerfd_create
323 eventfd
324 fallocate
325 timerfd_settime
326 timerfd_gettime
327 signalfd4
328 eventfd2
329 epoll_create1
330 dup3
331 pipe2
332 inotify_init1
333 preadv
334 pwritev
335 rt_tgsigqueueinfo
336 perf_event_open
337 recvmmsg
338 fanotify_init
339 fanotify_mark
340 prlimit64
341 name_to_handle_at
342 open_by_handle_at
343 clock_adjtime
344 syncfs
345 sendmmsg
346 setns
347 process_vm_readv
348 process_vm_writev
349 kcmp
350 finit_module
351 sched_setattr
352 sched_getattr
353 renameat2
354 seccomp
355 getrandom
356 memfd_create
357 bpf
358 execveat
359 socket
360 socketpair
361 bind
362 connect
363 listen
364 accept4
365 getsockopt
366 setsockopt
367 getsockname
368 getpeername
369 sendto
370 sendmsg
371 recvfrom
372 recvmsg
373 shutdown
374 userfaultfd
375 membarrier
376 mlock2
377 copy_file_range
378 preadv2
379 pwritev2
380 pkey_mprotect
381 pkey_alloc
382 pkey_free
383 statx
384 arch_prctl

RFE: is it possible to start making github releases?๐Ÿค”

On create github release entry is created email notification to those whom have set in your repo the web UI Watch->Releases.
gh release can contain additional comments (li changelog) or additional assets like release tar balls (by default it contains only assets from git tag) however all those part are not obligatory.
In simplest variant gh release can be empty because subiekt of the sent email contains git tag name.

I'm asking because my automation process uses those email notifications by trying to make preliminary automated upgrades of building packages, which allows saving some time on maintaining packaging procedures.
Probably other people may be interested to be instantly informed about release new version as well.

Documentation and examples of generate gh releases:
https://docs.github.com/en/repositories/releasing-projects-on-github/managing-releases-in-a-repository
https://cli.github.com/manual/gh_release_upload/
https://github.com/marketplace/actions/github-release
https://pgjones.dev/blog/trusted-plublishing-2023/
jbms/sphinx-immaterial#281 (comment)
tox target to publish on pypi and make gh release https://github.com/jaraco/skeleton/blob/928e9a86d61d3a660948bcba7689f90216cc8243/tox.ini#L42-L58

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.