Hi guys, I'm new to programming in kernel space. Can anyone help me about this issue ?

I' running a .ko under Linux 2.6.31 with kernel built with CONFIG_PREEMPT_VOLUNTARY.

I have two processes named "A" (SCHED_FIFO 95) and "B" (SCHED_OTHER).

Please consider the following example:

A process named "A" calls wait_event_interruptible(readq, process_A_condition()).
A process named "B", awakes the process "A" with the calls preempt_disable(); wake_up_interruptible_sync(readq); preempt_enable(); schedule(); I expect that upon schedule() the proess "A" starts running (process_A_condition is now true) but I note that this does not happen !!! Process "A" will start running only later when process "B" will suspend itself by wait_event_interruptible(readq);

Why process "A" does not awakes upon schedule() ???

Thanks a lot


Roberto (Software Engineer) ... new to linux programming ...