Re: accessing file operations directly in the kernel

From: Robert Hancock
Date: Thu Nov 06 2008 - 20:21:07 EST


andy wrote:
Hi,

I am dealing with an interesting situation, which I have to access a
serial device driver
from the kernel space. I tried to use sys_open, sys_ioctl ... but
there is a problem
with the file descriptors. Now, I started using direct calls to the
drivers functions
driver_open, driver_ioctl... passing the *inode from user_path_walk(),
but it doesn't
seem that works right. This serial device is going to be used only
from the other
module that runs in the kernel.

For some reason this kind of question (using file operations inside the kernel) gets asked a lot. The short answer is that if you're asking it, you likely have a wrong design. It's just not the right thing to do. For one thing, file descriptors belong to a process, so just stealing the FD space from some random process is unlikely to do the right thing.

If you really need to do this, adding hooks to the serial device driver would seem a more logical thing to do.. but even that seems a suspicious design. It would be best if you explained what it is you're actually trying to accomplish.
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/