Thread
-
Re: [HACKERS] mmap and MAP_ANON
Goran Thyni <goran@bildbasen.se> — 1998-05-12T06:22:23Z
Göran Thyni wrote: > > Bruce Momjian wrote: > > > > Would people tell me what platforms do NOT support the MAP_ANON flag to > > the mmap() system call? You should find it in the mmap() manual page. > > > > *BSD has it, but I am not sure of the others. I am researching cache > > size issues and the use of mmap vs. SYSV shared memory. > > SVR4 (at least older ones) does not support MMAP_ANON, > but the recommended in W. Richards Stevens' > "Advanced programming in the Unix environment" (aka the Bible part 2) > is to use /dev/zero. > > This should be configurable with autoconf: > > <PSEUDO CODE> > > if (exists MAP_ANON) use it; else use /dev/zero > > ------------ > > flags = MAP_SHARED; > #ifdef HAS_MMAP_ANON > fd = -1; > flags |= MAP_ANON; > #else > fd = open('/dev/zero, O_RDWR); > #endif > area = mmap(0, size, PROT_READ|PROT_WRITE, flags, fd, 0); > > </PSEUDO CODE> Ouch, hate to say this but: I played around with this last night and I can't get either of the above technics to work with Linux 2.0.33 I will try it with the upcoming 2.2, but for now, we can't loose shmem without loosing a large part of the users (including some developers). flags = MAP_SHARED; <PSEUDO CODE> #ifdef HAS_WORKING_MMAP #ifdef HAS_MMAP_ANON fd = -1; flags |= MAP_ANON; #else fd = open('/dev/zero, O_RDWR); #endif area = mmap(0, size, PROT_READ|PROT_WRITE, flags, fd, 0); #else id = shget(...); area = shmat(...); #endif </PSEUDO CODE> not happy, -- --------------------------------------------- Göran Thyni, sysadm, JMS Bildbasen, Kiruna