Hello,
While writing C programs using sockets, and crosscompiling them for OpenWrt, I noticed that, in OpenWrt, all the systems calls seems to be uninterruptable, while in standard Linux (for instance in Ubuntu 18.06) they are normally interruptable when a signal is received.
For instance, I have a thread which is waiting for data with a blocking recvfrom()
. In standard Linux, when a signal is received, the recvfrom()
exists with return value -1
and errno
set to EINTR
(interrupted system call), which is the expected behaviour.
In OpenWrt instead, this calls seems to wait indefinitely until some data is received (or a timeout occurs), no matter how many signals are received by the process in between.
Do you know why is this happening? Is there a specific kernel configuration or compilation flag related to this?
Thank you very much in advance!