LinuxQuestions.org

LinuxQuestions.org (/questions/)
-   Programming (https://www.linuxquestions.org/questions/programming-9/)
-   -   callback or notification from kernel to user space (https://www.linuxquestions.org/questions/programming-9/callback-or-notification-from-kernel-to-user-space-359789/)

yhus 09-03-2005 06:35 AM

callback or notification from kernel to user space
 
Hello,

I am working on a device driver. It is no problem to access driver from user space to call ioctl, read and write. But how can I issue a callback from kernel to user application? For example, my driver in kernel space receives some packets from hardware and need to pass the data to the application in user space, is it possible to pass a callback function from user space to kernel, so that the kernel can call the callback function in user space? Or using other mechanism to let kernel notifies user applicaitons asynchronously?

Thank you.

Mara 09-04-2005 11:58 AM

It is doable, but would make a big mess. Especially when the code crashes. It's much better idea to pass it to user space program to process. You can send a signal. It's a quite good solution if the signals are rather rare. How often you need to pass the packets?

yhus 09-05-2005 12:07 AM

Thanks for your response. Signal is one of options, but the callback would be more appropriate for my driver. Could you please give more details for callback mechanism, or point me a resource for further reading?

Thank you.

Kind regards.

Mara 09-06-2005 04:36 PM

Callback is done by just passing (as parameter, you can use casting if you don't have a good place for it) a function pointer (known propotype). Note that it's a great security risk (the function may do really nasty things).

yhus 09-06-2005 06:02 PM

Thanks for your explanation. You are right, it is not safe. I am just thinking about to use IPC to send a message from the kernel space to the applications. Can the sys_msgsnd() be used in kernel space?

Thank you.

Kind Regards.

sbharsha 09-18-2005 09:41 PM

how to send signal from kernel
 
Hi,

I am also stuck here.

i don't know how send the signal from kernel space to user.

Please can u explain. or just give sample code if u have i will check it out..


Thanks
Please help me

harsha


All times are GMT -5. The time now is 10:42 PM.