operate file in kernel space

Yong Fan yong.fan at exar.com
Tue Mar 27 02:01:33 UTC 2012


Thanks your warm reply.
I will have a try.

Yongfan
Thanks

-----Original Message-----
From: John Baldwin [mailto:jhb at freebsd.org]
Sent: Monday, March 26, 2012 8:15 AM
To: freebsd-drivers at freebsd.org
Cc: Yong Fan; drivers at FreeBSD.org
Subject: Re: operate file in kernel space

On Sunday, March 25, 2012 10:41:09 pm Yong Fan wrote:
> Hi all,
>
> I want to operate file in kernel space.
> At present, I have found the following kernel routines, which operate file:
> Kern_open(), kern_close(), kern_readv() and kern_writev().
> Now, I have some doubt about these routines?
> 1 kern_open() doesn't return a file handle or file pointer?
> As we know, filp_open(), which is a Linux kernel routine, returns a file
pointer.
> ZwCreateFile(), which is a Windows kernel routine, returns a file handle.
>
> 2 how can I "seek" a file in kernel space?
> The function of "seek" routine is similar with generic_file_llseek()(Linux)
or ZwSetInformationFile()(windows).

file descriptors in FreeBSD are generally tied to a file descriptor table (so
a process).  What you can do is locate a vnode directly (e.g. using namei() to
do a pathname lookup) and then use vn_rdwr() to access the data in the file.
vn_rdwr() accepts a uio and you would manage your own "seek" location and that
gets set in the uio_offset of the uio you pass to vn_rdwr().

--
John Baldwin

The information and any attached documents contained in this message
may be confidential and/or legally privileged.  The message is
intended solely for the addressee(s).  If you are not the intended
recipient, you are hereby notified that any use, dissemination, or
reproduction is strictly prohibited and may be unlawful.  If you are
not the intended recipient, please contact the sender immediately by
return e-mail and destroy all copies of the original message.


More information about the freebsd-drivers mailing list