Programming This forum is for all programming questions.
The question does not have to be directly related to Linux and any language is fair game. |
Notices |
Welcome to LinuxQuestions.org, a friendly and active Linux Community.
You are currently viewing LQ as a guest. By joining our community you will have the ability to post topics, receive our newsletter, use the advanced search, subscribe to threads and access many other special features. Registration is quick, simple and absolutely free. Join our community today!
Note that registered members see fewer ads, and ContentLink is completely disabled once you log in.
Are you new to LinuxQuestions.org? Visit the following links:
Site Howto |
Site FAQ |
Sitemap |
Register Now
If you have any problems with the registration process or your account login, please contact us. If you need to reset your password, click here.
Having a problem logging in? Please visit this page to clear all LQ-related cookies.
Get a virtual cloud desktop with the Linux distro that you want in less than five minutes with Shells! With over 10 pre-installed distros to choose from, the worry-free installation life is here! Whether you are a digital nomad or just looking for flexibility, Shells can put your Linux machine on the device that you want to use.
Exclusive for LQ members, get up to 45% off per month. Click here for more info.
|
|
09-03-2005, 06:35 AM
|
#1
|
Member
Registered: May 2004
Posts: 75
Rep:
|
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.
|
|
|
09-04-2005, 11:58 AM
|
#2
|
Moderator
Registered: Feb 2002
Location: Grenoble
Distribution: Debian
Posts: 9,696
|
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?
|
|
|
09-05-2005, 12:07 AM
|
#3
|
Member
Registered: May 2004
Posts: 75
Original Poster
Rep:
|
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.
Last edited by yhus; 09-05-2005 at 06:00 PM.
|
|
|
09-06-2005, 04:36 PM
|
#4
|
Moderator
Registered: Feb 2002
Location: Grenoble
Distribution: Debian
Posts: 9,696
|
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).
|
|
|
09-06-2005, 06:02 PM
|
#5
|
Member
Registered: May 2004
Posts: 75
Original Poster
Rep:
|
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.
Last edited by yhus; 09-07-2005 at 06:38 AM.
|
|
|
09-18-2005, 09:41 PM
|
#6
|
LQ Newbie
Registered: Sep 2005
Posts: 2
Rep:
|
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 09:39 AM.
|
LinuxQuestions.org is looking for people interested in writing
Editorials, Articles, Reviews, and more. If you'd like to contribute
content, let us know.
|
Latest Threads
LQ News
|
|