discuss-gnuradio
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Discuss-gnuradio] GNU Radio CVS-current vmcirbuf problems


From: Eric Blossom
Subject: Re: [Discuss-gnuradio] GNU Radio CVS-current vmcirbuf problems
Date: Tue, 11 Oct 2005 19:18:41 -0700
User-agent: Mutt/1.5.6i

On Wed, Oct 12, 2005 at 10:52:41AM +0930, Berndt Josef Wulf wrote:
> G'day,
> 
> with CVS-current I'm getting the following message:
> 
> barossa: {2} ./dial_tone.py
> gr_vmcircbuf_createfilemapping: createfilemapping is not available
> gr_vmcircbuf_sysv_shm: shmat (1): Too many open files
> gr_vmcircbuf_sysv_shm: shmat (1): Too many open files
> gr_vmcircbuf_sysv_shm: shmat (1): Too many open files
> gr_vmcircbuf_mmap_mkstemp: mmap or shm_open is not available
                    ^^^^^^
Incorrect error message.  Fixed in CVS.  Should read:

gr_vmcircbuf_mmap_shm_open: mmap or shm_open is not available

> gr_vmcircbuf_sysconfig: unable to find a working factory!
> 
> There was a lot of activity around the gr_vmcircbuf* code as of late that 
> appears to have affected the current build on NetBSD.
>
> Any ideas?

I deleted the quite buggy (and oftentimes slow) gr_vmcircbuf_mmap_tmpfile class.
I didn't think anyone was using it.  I'm reluctant to add it back as is,
given how hideous and hard to fix it was.

Here are some options:

(1) Re sysv_shm, increase the system limits using sysctl:

  http://mail-index.netbsd.org/tech-kern/2002/07/07/0003.html

(2) gr_vmcircbuf_mmap_shm_open might work.

It requires mmap and shm_open.  mmap has been around forever, and
shm_open is defined in POSIX 1003.1 (2001).  Does NetBSD implement
both of these calls?  If so, our configure tests need some tweaking.
Can you confirm or deny the availability of shm_open on NetBSD, and if
it exits, which library it's contained in?

(3) Fix gr_vmcircbuf_mmap_tmpfile so that it works reliably, and doesn't
unmap pieces of the address space that it didn't map in.

(4) Come up with some other way to get a single piece of physical
memory mapped into two adjacent virtual addresses.  You may be able to
use mmap with MAP_ANON and/or /dev/zero and then remap it using some
kind of /proc/self/mem trick (didn't work on GNU/Linux).

Eric




reply via email to

[Prev in Thread] Current Thread [Next in Thread]