Comment 1 for bug 319729

Revision history for this message
Michael Casadevall (mcasadevall) wrote :

Taking a look at the kernel source, the syscall id numbers for both ppoll and pselect are properly reserved for ARM. The pselect function (sys_pselect7) is defined in fs/select.c; it is a C function with no specific arch dependent bits, but does require the sigmask_set_restore function to be available (threading is partially arch specific). This is a simple stub which sets the necessary flag (it lives in arch/*arch*/include/thread_info.h on architectures where it is defined, and sets the necessary flag in that architectures flag control block).

A couple greps of the source say that this flag is only used in a small bit of the thread block control code, used to push or pop the saved sigmask from the control block; implementing it shouldn't been too difficult, although it is possible that there is more to implementation than my greps can pick up.

glibc does not autodetect the presence of this call (possibly because depending on the architecture, the number of arguments change (since some arches can't hand 7 argument syscalls), so it will also have be modified to use the kernel's ppoll/psystem mechanisms once they are implemented in the kernel.