From owner-freebsd-hackers@freebsd.org Fri Mar 20 16:11:36 2020 Return-Path: Delivered-To: freebsd-hackers@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id F24F126B19C for ; Fri, 20 Mar 2020 16:11:36 +0000 (UTC) (envelope-from eugen@grosbein.net) Received: from hz.grosbein.net (hz.grosbein.net [IPv6:2a01:4f8:c2c:26d8::2]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client CN "hz.grosbein.net", Issuer "hz.grosbein.net" (not verified)) by mx1.freebsd.org (Postfix) with ESMTPS id 48kTKy5ylxz4fY0 for ; Fri, 20 Mar 2020 16:11:33 +0000 (UTC) (envelope-from eugen@grosbein.net) Received: from eg.sd.rdtc.ru (eg.sd.rdtc.ru [IPv6:2a03:3100:c:13:0:0:0:5]) by hz.grosbein.net (8.15.2/8.15.2) with ESMTPS id 02KGBN54081886 (version=TLSv1.2 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT) for ; Fri, 20 Mar 2020 16:11:24 GMT (envelope-from eugen@grosbein.net) X-Envelope-From: eugen@grosbein.net X-Envelope-To: Received: from [10.58.0.10] (dadvw [10.58.0.10]) by eg.sd.rdtc.ru (8.15.2/8.15.2) with ESMTPS id 02KGBLUb041730 (version=TLSv1.2 cipher=DHE-RSA-AES128-SHA bits=128 verify=NOT) for ; Fri, 20 Mar 2020 23:11:21 +0700 (+07) (envelope-from eugen@grosbein.net) Subject: Re: How to access a user space file from kernel space in FreeBSD. To: freebsd-hackers@freebsd.org References: From: Eugene Grosbein Message-ID: Date: Fri, 20 Mar 2020 23:11:12 +0700 User-Agent: Mozilla/5.0 (Windows NT 6.3; WOW64; rv:45.0) Gecko/20100101 Thunderbird/45.8.0 MIME-Version: 1.0 In-Reply-To: Content-Type: text/plain; charset=windows-1252 Content-Transfer-Encoding: 8bit X-Spam-Status: No, score=0.3 required=5.0 tests=BAYES_00,LOCAL_FROM, SPF_HELO_NONE,SPF_PASS autolearn=no autolearn_force=no version=3.4.2 X-Spam-Report: * -2.3 BAYES_00 BODY: Bayes spam probability is 0 to 1% * [score: 0.0000] * -0.0 SPF_PASS SPF: sender matches SPF record * 0.0 SPF_HELO_NONE SPF: HELO does not publish an SPF Record * 2.6 LOCAL_FROM From my domains X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on hz.grosbein.net X-Rspamd-Queue-Id: 48kTKy5ylxz4fY0 X-Spamd-Bar: --- Authentication-Results: mx1.freebsd.org; dkim=none; dmarc=none; spf=permerror (mx1.freebsd.org: domain of eugen@grosbein.net uses mechanism not recognized by this client) smtp.mailfrom=eugen@grosbein.net X-Spamd-Result: default: False [-3.77 / 15.00]; ARC_NA(0.00)[]; NEURAL_HAM_MEDIUM(-0.88)[-0.880,0]; FROM_HAS_DN(0.00)[]; TO_MATCH_ENVRCPT_ALL(0.00)[]; NEURAL_HAM_LONG(-0.93)[-0.929,0]; MIME_GOOD(-0.10)[text/plain]; TO_DN_NONE(0.00)[]; PREVIOUSLY_DELIVERED(0.00)[freebsd-hackers@freebsd.org]; RCPT_COUNT_ONE(0.00)[1]; RCVD_COUNT_THREE(0.00)[3]; DMARC_NA(0.00)[grosbein.net]; R_SPF_PERMFAIL(0.00)[]; IP_SCORE(-1.86)[ip: (-5.14), ipnet: 2a01:4f8::/29(-2.57), asn: 24940(-1.56), country: DE(-0.02)]; FROM_EQ_ENVFROM(0.00)[]; R_DKIM_NA(0.00)[]; MIME_TRACE(0.00)[0:+]; ASN(0.00)[asn:24940, ipnet:2a01:4f8::/29, country:DE]; MID_RHS_MATCH_FROM(0.00)[]; RCVD_TLS_ALL(0.00)[] X-BeenThere: freebsd-hackers@freebsd.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Technical Discussions relating to FreeBSD List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 20 Mar 2020 16:11:37 -0000 20.03.2020 21:40, Arpan Palit wrote: > I am working on (kernel)driver ioctl implementation for file read/write, > where I need to know what are API's which can expose to read,write and > close user space file from kernel space. In general I need to know the > answer for the below questions. > > i). How to open a user space file from driver(kernel space) ? > ii). How to create a new user space file from driver(kernel space) ? > iii). How to get file parameters like size of the file ? > iv). How to read/write the files from the driver(kernel space) ? It is not common behaviour for FreeBSD kernel land code to create/write files. Generally there is some userland daemon doing this for some kernel subsystem. However, there are cases when kernel does it by itself, f.e. writing coredump file, creating new accounting file etc. You may find some examples useful: https://svnweb.freebsd.org/base/head/sys/kern/kern_sig.c?view=markup#l3623 https://svnweb.freebsd.org/base/head/sys/kern/kern_acct.c?view=markup#l223 https://svnweb.freebsd.org/base/head/sys/kern/kern_alq.c?view=markup#l448 I'm afraid this is basically undocumented and not encouraged and you should consider adding some userland process for file manupilations.