I’m developing a program that opens up a file descriptor of a resource manager and then attaches a function to it using select_attach() to process data once it becomes available.
I have two QNX machines. One running 6.3.0 (A) and the other is running 6.2.1 (B). I have a resource manager running on B.
When I execute my program on B it connects to the resource manager and reads data in when it becomes available without any problem.
The problem starts when I run the program on A opening with “/net/b/dev/handle/data/”. It connects fine, but will only reads in the data once. If new data becomes available, the handler function isn’t called.
Qnet is working fine, I can “ls /net/b/home/” without any problems. Both machines are using npm-qnet-compat.so
When I do a pidin, the process blocks in RECEIVE on both machines. The only difference is that priority on A is: 10r and B is: 10o. But that shouldn’t make a difference as “o” (other) is implemented as “r” (round robin) in QNX.
It seems to me that the process gets stuck in a RECEIVE state and doesn’t hear any notification signals to “wake up”. On way around it is to put while(1) loop inside the handler function to keep reading the data. Its not ideal, but it works!!!
If anyone has any suggestions on this issue, I’d really be grateful.