From owner-freebsd-hackers Mon Dec 1 13:32:44 1997 Return-Path: Received: (from root@localhost) by hub.freebsd.org (8.8.7/8.8.7) id NAA21058 for hackers-outgoing; Mon, 1 Dec 1997 13:32:44 -0800 (PST) (envelope-from owner-freebsd-hackers) Received: from alpo.whistle.com (alpo.whistle.com [207.76.204.38]) by hub.freebsd.org (8.8.7/8.8.7) with ESMTP id NAA21050 for ; Mon, 1 Dec 1997 13:32:41 -0800 (PST) (envelope-from julian@whistle.com) Received: (from daemon@localhost) by alpo.whistle.com (8.8.5/8.8.5) id NAA14573; Mon, 1 Dec 1997 13:28:51 -0800 (PST) Received: from UNKNOWN(), claiming to be "current1.whistle.com" via SMTP by alpo.whistle.com, id smtpd014567; Mon Dec 1 13:28:47 1997 Message-ID: <34832B83.15FB7483@whistle.com> Date: Mon, 01 Dec 1997 13:26:28 -0800 From: Julian Elischer Organization: Whistle Communications X-Mailer: Mozilla 3.0Gold (X11; I; FreeBSD 2.2-CURRENT i386) MIME-Version: 1.0 To: "Fred L. Templin" CC: freebsd-hackers@freebsd.org Subject: Re: copyout()/copyin() References: <199712011952.LAA10723@grayling.erg.sri.com> Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit Sender: owner-freebsd-hackers@freebsd.org X-Loop: FreeBSD.org Precedence: bulk Fred L. Templin wrote: > > Hi, > > I'm designing an interface in which I need to move data directly between > user and kernel buffers using copyout() and copyin(). The interface works > fine when called synchronously within process context (e.g. the user process > calls ioctl(), giving the address of a buffer, and the kernel calls copyout() > or copyin() to move the data). But, what I really want is an *asynchronous* > interface in which the kernel can move data to/from the user buffers from > within an interrupt service routine - and it's my understanding that copyout() > and copyin() aren't suited for this. Am I wrong about this? If not, are there > alternatives to copyout()/copyin() which can be used to implement such an > interface? > > Fred > templin@erg.sri.com look at how the physio() routine maps in pages from the user's address space. (or in fact. USE physio() to do yur work?)