i.MX28 single core - multi-threaded - Modbus slave implementation

Hello, hope you can help me.
I am developing the Modbus slave application. The problem I experience is execution being switched away from the Modbus control thread for about 30-50 milliseconds, while I am expected to monitor serial bus in real-time for t1.5 and t3.5 periods per spec, and this is not possible to achieve in this environment.
How Modbus slave compliant to the Modbus spec (see page 13) can be properly implemented?

My thoughts are having interrupts every t1.5 and t3.5 switching to my Modbus thread checking if there's incoming byte or timeout period has elapsed, but I am not sure how to implement this (and ensure that after interrupt occurs, CPU does not switch away in the process of serving it).

Update: I have found this as possible solution for the receiving data.

Questions: will SIGIO signal be raised immediately (or at least with predefined small delay) as soon as UART gets character into its buffer, or its activation will wait until driver/kernel gets its execution time or it will wait until process which configured this signal to get execution?

I found that timing can be performed using timer_create() with monotonic type of clock. Same questions - is this timer always running, even if another process is executing, and is its signal generation fully asynchronous and is being performed with predefined delay after timer expires?

Next question, but related to sending data through the serial line: how in OpenWrt I ensure that write() performs write of message, let's say 256 bytes long, in one burst, without being interrupted somewhere in the middle by switching to another process causing delay in transmission and therefore violating Modbus-RTU protocol?

Update: I made several tests and report SIGIO is not a solution. I expected signal handler being called for every character arrived, therefore I can get only one character at a time using read(), but it appeared that as soon as SIGIO handler is called, I can get 256 characters from the driver (I guess full size of the driver's buffer - note there're + 16 bytes for physical FIFO of UART).

I do not see any possible way to make Modbus-RTU compliant communication application in system based on OpenWrt. Have seen several implementations, they use timer_create(), but funny enough then in main loop using while() wait for the event which may be late because of CPU switching to other threads. In most of the cases it works, but I have one environment where it does not work because other device works very tightly and complies to Modbus RTU throwing partial messages away.