On Fri, Oct 12, 2018 at 6:12 PM Luck, Tony tony.luck@intel.com wrote:
I suspect the offset logic in the system call generation script had a bug. That I fixed it in this patch series.
Arnd and Eugene had shared few comments on adding new system call entry in the table and some other things. Appreciate if you can review this patch series so I can finalize system call table implementation for ia64 architecture.
The net effect of these is just to make it easier to add new system calls. Just edit the table, instead of editing entry.S and unistd.h picking the next number (and remembering to increase the NR_syscalls). Right?
The driving factor here is the addition of the new y2038 syscalls for 32-bit architectures that we want to add everywhere at the same time. ia64 and alpha are obviously not affected by this as they are 64-bit only, but to do it right, we should do all architectures together.
Another point is overall maintainability: it is very time-consuming and error-prone to find out which architectures in which kernel version support a specific system call or don't support it. Having a consistent way to work on the tables should make this is a simple 'git grep'.
I'm currently baffled at which linker magic makes the unsupported system calls alias to sys_ni_syscall.
This is the same method that x86, arm, and s390 have been using for a while, by sorting the numbers and filling in the missing ones in the script.
I'm also uncertain whether allocating system call numbers and creating entry points for all the unsupported syscalls is the right thing to do. Might that puzzle and frustrate folks whose applications build, but then fail at run-time with -ENOSYS.
Again, we want this to be handled consistently across architectures more than anything. At the moment, we have some architectures that simply assign a number for each syscall added to x86, while others don't. Similarly, some architectures drop the entries from unistd.h if a syscall gets removed from the kernel, and others keep them.
I care less about which way we decide to go here, but I want it to be done the same way for all architectures.
Arnd