Hi,

I'm making a UML driver to adapt a real driver to UML and hardware
emulation.

In this case I have a kernel thread trying to read a register, which is now
done through a netlink channel to a userspace application (asynchronous
response) but inside a synchronous function (the function that I'm
implementing returns the register value). The first attempt was done doing:

*Kernel thread*

sleeping_task = current;
set_current_state(TASK_INTERRUPTIBLE);
schedule();

*Netlink new message callback*

wake_up_process(sleeping_task);

But the kernel thread never runs again, unless I call schedule() in
netlink callback function after wake_up_process, which will make that
callback being blocked. I also tried using wait_queue but after the
same result I saw the functions and realised that they also use
schedule for putting the process to sleep.

This worked in a "real" linux module (not with netlink callback, but
between 2 kernel threads), I don't understand why shouldn't in UML.
Any reason you might remember?

I'm using 4.2.1 Kernel with a Debian Jessie distro.
------------------------------------------------------------------------------
_______________________________________________
User-mode-linux-user mailing list
User-mode-linux-user@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/user-mode-linux-user

Reply via email to