I have been using the Linux port with some success: while the multitasking environment has been performing well, I am having troubles with the AsyncIO interface.
I am using the AsyncIO to communicate with other applications running on a Linux machine, via pseudo terminals. The use of a pseudo terminal is dictated by third party applications that require serial access. I created an interface similar to the serial interface William Davy provided, which creates pseudo terminals.
Using the Linux port, I can receive data from the socket/serial/pseudo terminal file descriptors, using FreeRTOS. The ISR-like interface provided by the Linux port works very well for receiving.
However one issue I am seeing (which I believe is common to all sockets/serial interfaces) is that sending to the file descriptor used for receiving data is also intercepted by the signals used by the ISR (to detect incoming data). The signals hooked up to the file descriptors do not seem to differentiate between data coming from a different process (an external application writing to the socket/serial port), and data written by the freeRTOS port. I poked around with the Linux signal and I can’t seem to find a different type of signal to filter out activity on the file descriptors (so the ISR is only called when data is received from a different process).
Does this mean the AsyncIO interface is limited to receiving data only? Is there a workaround to allow sending and receiving data at the same time, on the same file descriptor?