Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 20 May 2004 11:17:21 +0100
From:      Bruce M Simpson <bms@spc.org>
To:        Steve Watt <steve@Watt.COM>
Cc:        pjd@freebsd.org
Subject:   Re: api for sharing memory from kernel to userspace?
Message-ID:  <20040520101721.GB30196@empiric.dek.spc.org>
In-Reply-To: <200405192229.i4JMT95J087312@wattres.Watt.COM>
References:  <20040519122907.GO81341@elvis.mu.org> <200405192229.i4JMT95J087312@wattres.Watt.COM>

next in thread | previous in thread | raw e-mail | index | archive | help
On Wed, May 19, 2004 at 03:29:09PM -0700, Steve Watt wrote:
> >On Wed, May 19, 2004 at 05:29:07AM -0700, Alfred Perlstein wrote:
> >+> I need to share about 100megs of memory between kernel and userspace.
> >+>
> >+> The memory can not be paged and should appear contig in the process's
> >+> address space.  Any suggestions?
> >+>
> 
> The way we accomplished this in some other operating system was to
> create a shared memory segment with an implementation-reserved
> name, and then have the application shm_open the name and mmap it in.
> 
> Shouldn't be hard with a device driver.

This sounds like the way to go.

The way I achieved this with a PCMCIA memory card was to kmem_alloc_nofault()
a range and then pmap_map() it, then handle mmap() as per the regular
character device case.

Do bear in mind that 100 megs is quite large in relative terms, so it's
possible that kmem_alloc_nofault() would fail.

Regards,
BMS



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20040520101721.GB30196>