Very Large Framestores on Sun: addr
Root Boy Jim
rbj at icst-cmr.arpa
Wed Mar 11 01:17:08 AEST 1987
Sun tech support can't help me, maybe someone on the net can!
Guy, what do you have to say about this and my answer?
I want to map a very large chunk of physical memory (32 Meg of video
frame-store) into my user process's virtual address space.
We wanted to map about 12-16 Meg of dual ported memory. Sunix (what didn't
you call it that instead of the boring SunOS?) doesn't know about it, but
our data gathering program does.
We have a Sun 3/75 connected to an external VME chassis with a bus
repeater capable of repeating a full A32 / D32 bus to the external
VME chassis.
We have a 3/160 with the same.
In this chassis we have a very large frame store that takes up 32 Meg
of physical memory.
We have been told that the only way to map the physical memory of the
frame-store into a user program is to first do a valloc which I
presume reserves pages in the MMU for a chunk of memory, and then an
mmap which maps the physical memory into the reserved virtual memory
chunk. This is how frame-store's are usually mapped in on the sun.
This is what we did as well.
The problem is that the valloc actually allocates the amount of
memory you are requesting. If you don't have enough swap space free,
the valloc fails. Thus not allowing you to get a chance to map the
physical to virtual address.
Hmmm. I see several problems here. First, after mmap'ing valloc'ed memory
the Sunix must reclaim the memory it originally allocated. Second, if
you *could* get past that stage, you might wind up arguing with the
hardware. The machine either wouldn't boot or the console had numerous
streaks when we attempted to use certain physical (vme32d32) addresses.
See below for details.
They say that this will be changed in version 4.0 of Sun OS....
Good. I see no reason to ?alloc memory in order to remap it.
There must be a more sane way to tell the operating system / MMU
hardware to do an explicit mapping today! What good is having A32
VME bus addressing if you can't talk to large chunks of physical
memory? I consider this a major failing if its true that a Sun can
not do this.
You could try allocating it
More information about the Comp.unix.wizards
mailing list