Hi,
working with nimBLE I found that I had an issue when scheduling a callback to 
be made from within the signal handler for a timer, which was set with 
SIGEV_THREAD. The issue was that I was pushing to a POSIX queue from within the 
handler, and it was failing with BADFD. From debugging I realized that when 
trying to obtain the inode for the queue it was looking up at the open file 
descriptors from the lpwork thread, which of course would not share open file 
descriptors with main task.

Since this is working for Linux (I had copied this part of the porting layer 
from Linux) my reasoning is that SIGEV_THREAD is there implemented as a thread 
that is a child of the process which registered the signal handler and thus 
shares the open file descriptors. In NuttX this is implemented via a work queue 
so this is not the case.

Is my reading correct? If so, it may be worth adding this limitation to 
https://github.com/apache/incubator-nuttx/issues/1352

Best,
Matias

Reply via email to