From owner-freebsd-drivers@FreeBSD.ORG Tue Mar 27 02:01:33 2012 Return-Path: Delivered-To: drivers@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 10BC1106564A; Tue, 27 Mar 2012 02:01:33 +0000 (UTC) (envelope-from yong.fan@exar.com) Received: from smtp1.exar.com (webmail.exar.com [204.154.183.83]) by mx1.freebsd.org (Postfix) with ESMTP id E517A8FC0A; Tue, 27 Mar 2012 02:01:32 +0000 (UTC) Received: from HZU1EXCH02.hq.exar.com (172.18.10.52) by FRE1-CAS.hq.exar.com (10.127.1.162) with Microsoft SMTP Server (TLS) id 8.1.436.0; Mon, 26 Mar 2012 19:01:32 -0700 Received: from HZU1EXCH02.hq.exar.com ([fe80::5528:f080:2385:1c90]) by HZU1EXCH02.hq.exar.com ([fe80::5528:f080:2385:1c90%13]) with mapi; Tue, 27 Mar 2012 10:01:28 +0800 From: Yong Fan To: John Baldwin , "freebsd-drivers@freebsd.org" Date: Tue, 27 Mar 2012 10:01:27 +0800 Thread-Topic: operate file in kernel space Thread-Index: Ac0LX3jHaefjAwZ+TeOKy2arMzJcxwAXdtzg Message-ID: <88AB8EB2D3F1D249AE07FAFFF17A396F0384CEFCAA@HZU1EXCH02.hq.exar.com> References: <88AB8EB2D3F1D249AE07FAFFF17A396F0384CEFB5B@HZU1EXCH02.hq.exar.com> <201203261014.30542.jhb@freebsd.org> In-Reply-To: <201203261014.30542.jhb@freebsd.org> Accept-Language: en-US, zh-CN Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: acceptlanguage: en-US, zh-CN Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Cc: "drivers@FreeBSD.org" Subject: RE: operate file in kernel space X-BeenThere: freebsd-drivers@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Writing device drivers for FreeBSD List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 27 Mar 2012 02:01:33 -0000 Thanks your warm reply. I will have a try. Yongfan Thanks -----Original Message----- From: John Baldwin [mailto:jhb@freebsd.org] Sent: Monday, March 26, 2012 8:15 AM To: freebsd-drivers@freebsd.org Cc: Yong Fan; drivers@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 fil= e: > 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()(Linu= x) 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 t= hat 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.