You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@apr.apache.org by "MATHIHALLI,MADHUSUDAN (HP-Cupertino,ex1)" <ma...@hp.com> on 2002/02/07 19:30:15 UTC

RE: configure option to specify mmap/shm

[I'm moving it from dev@httpd.. Pl. let me know if I need to give details].

-----Original Message-----
From: Aaron Bannert [mailto:aaron@clove.org]
[...]
>Is there anything else we could test to see if it's not working? Is it
>possible that MMAP_ZERO's implementation is simple broken? Send me
>the error you are seeing, and optionally a truss output also.

I'm not sure if that's the case (will check it out).. It so happens that on
my HPUX 11.0 system, there's no /dev/zero, and hence the configure does not
detect it.. But on the 11i system, we do have a /dev/zero, but mmap does not
support it :-(..

As regards the truss output for the simple program that I posted on
dev@httpd, here's the output :

----------------------------------------------------------------------------
---

execve("./xx", 0x7f7f0698, 0x7f7f06a0)                     = 0 [32-bit]
open("/usr/lib/dld.sl", O_RDONLY, 03224)                   = 3
read(3, "02\v010e0512@ \0\0\0\0\0\0\0\0\0".., 128)         = 128
lseek(3, 128, SEEK_SET)                                    = 128
read(3, "10\0\004\0\0\0( \002\0ac\0\0\0\0".., 48)          = 48
mmap(NULL, 131244, PROT_READ|PROT_EXEC, MAP_SHARED|MAP_SHLIB, 3, 0x9000) =
0xc0010000
mmap(NULL, 14696, PROT_READ|PROT_WRITE|PROT_EXEC, MAP_PRIVATE|MAP_SHLIB, 3,
0x2a$ ./truss ./xx
execve("./xx", 0x7f7f0698, 0x7f7f06a0)                     = 0 [32-bit]
open("/usr/lib/dld.sl", O_RDONLY, 03224)                   = 3
read(3, "02\v010e0512@ \0\0\0\0\0\0\0\0\0".., 128)         = 128
lseek(3, 128, SEEK_SET)                                    = 128
read(3, "10\0\004\0\0\0( \002\0ac\0\0\0\0".., 48)          = 48
mmap(NULL, 131244, PROT_READ|PROT_EXEC, MAP_SHARED|MAP_SHLIB, 3, 0x9000) =
0xc0010000
mmap(NULL, 14696, PROT_READ|PROT_WRITE|PROT_EXEC, MAP_PRIVATE|MAP_SHLIB, 3,
0x2a000) = 0x7b050000
close(3)                                                   = 0
getuid()                                                   = 2854 (2854)
getuid()                                                   = 2854 (2854)
getgid()                                                   = 191 (191)
getgid()                                                   = 191 (191)
mmap(NULL, 8192, PROT_READ|PROT_WRITE|PROT_EXEC, MAP_PRIVATE|MAP_ANONYMOUS,
-1, NULL) = 0x7b04e000
sysconf(_SC_CPU_VERSION)                                   = 0x214
open("/opt/graphics/OpenGL/lib/libogltls.sl", O_RDONLY, 0) ERR#2 ENOENT
open("/usr/lib/libc.2", O_RDONLY, 0)                       = 3
fstat(3, 0x7f7f3048)                                       = 0
read(3, "0210010e0512@ \0\0\0\0\0\0\0\0\0".., 128)         = 128
lseek(3, 128, SEEK_SET)                                    = 128
read(3, "10\0\004\0\0\0( \014dff4\0\010\0".., 48)          = 48
read(3, "80\0\0\v\0\0\004\0\0\0\0", 12)                    = 12
lseek(3, 442368, SEEK_SET)                                 = 442368
read(3, "058cy 10\0\0\a90\0\0M ec\0\0\002".., 112)         = 112
mmap(NULL, 1368064, PROT_READ|PROT_EXEC, MAP_SHARED|MAP_SHLIB, 3, 0x6c000) =
0xc0100000
mmap(NULL, 45056, PROT_READ|PROT_WRITE|PROT_EXEC,
MAP_PRIVATE|MAP_ANONYMOUS|MAP_SHLIB, -1, NULL) = 0x7b043000
mmap(0x7b03b000, 32768, PROT_READ|PROT_WRITE|PROT_EXEC,
MAP_PRIVATE|MAP_FIXED|MAP_SHLIB, 3, 0x1ba000) = 0x7b03b000
mmap(NULL, 16384, PROT_READ|PROT_WRITE|PROT_EXEC, MAP_PRIVATE|MAP_ANONYMOUS,
-1, NULL) = 0x7b037000
close(3)                                                   = 0
open("/usr/lib/libdld.2", O_RDONLY, 0)                     = 3
fstat(3, 0x7f7f3148)                                       = 0
read(3, "02\v010e0512@ \0\0\0\0\0\0\0\0\0".., 128)         = 128
lseek(3, 128, SEEK_SET)                                    = 128
read(3, "10\0\004\0\0\0( \0\0$ e4\0\010\0".., 48)          = 48
read(3, "80\0\0\v\0\0\004\0\0\0\0", 12)                    = 12
lseek(3, 8192, SEEK_SET)                                   = 8192
read(3, "058cy 10\0\0\0\f\0\001ac\0\0\001".., 112)         = 112
mmap(NULL, 12288, PROT_READ|PROT_EXEC, MAP_SHARED|MAP_SHLIB, 3, 0x2000) =
0xc0004000
mmap(NULL, 4096, PROT_READ|PROT_WRITE|PROT_EXEC, MAP_PRIVATE|MAP_SHLIB, 3,
0x5000) = 0x7b036000
close(3)                                                   = 0
open("/usr/lib/libc.2", O_RDONLY, 0)                       = 3
fstat(3, 0x7f7f3248)                                       = 0
read(3, "0210010e0512@ \0\0\0\0\0\0\0\0\0".., 128)         = 128
lseek(3, 128, SEEK_SET)                                    = 128
read(3, "10\0\004\0\0\0( \014dff4\0\010\0".., 48)          = 48
read(3, "80\0\0\v\0\0\004\0\0\0\0", 12)                    = 12
lseek(3, 442368, SEEK_SET)                                 = 442368
read(3, "058cy 10\0\0\a90\0\0M ec\0\0\002".., 112)         = 112
mmap(NULL, 1368064, PROT_READ|PROT_EXEC, MAP_SHARED|MAP_SHLIB, 3, 0x6c000)
ERR#12 ENOMEM
close(3)                                                   = 0
mmap(NULL, 40, PROT_READ|PROT_WRITE|PROT_EXEC, MAP_PRIVATE|MAP_ANONYMOUS,
-1, NULL) = 0x7b035000
sigsetreturn(0x7b038fce, 0x6211988, 1392)                  = 0
open("/dev/zero", O_RDWR, 0666)                            = 3
mmap(NULL, 256000, PROT_READ|PROT_WRITE, MAP_SHARED, 3, NULL) ERR#19 ENODEV
open("/usr/lib/nls/msg/C/strerror.cat", O_RDONLY, 0177777) = 4
fstat(4, 0x7f7f1ce0)                                       = 0
fcntl(4, F_SETFD, 1)                                       = 0
lseek(4, 0, SEEK_SET)                                      = 0
read(4, "m s g c a t 0 1 \0\0\0f9\001\001".., 1212)        = 1212
lseek(4, 3316, SEEK_SET)                                   = 3316
read(4, "N o   s u c h   d e v i c e ", 14)                = 14
close(4)                                                   = 0
mmap: No such device
write(2, "m m a p :   N o   s u c h   d e ".., 21)         = 21
exit(255)                                                  WIFEXITED(255)




Re: configure option to specify mmap/shm

Posted by Aaron Bannert <aa...@clove.org>.
On Thu, Feb 07, 2002 at 01:30:15PM -0500, MATHIHALLI,MADHUSUDAN (HP-Cupertino,ex1) wrote:
> From: Aaron Bannert [mailto:aaron@clove.org]
> >Is there anything else we could test to see if it's not working? Is it
> >possible that MMAP_ZERO's implementation is simple broken? Send me
> >the error you are seeing, and optionally a truss output also.
> 
> I'm not sure if that's the case (will check it out).. It so happens that on
> my HPUX 11.0 system, there's no /dev/zero, and hence the configure does not
> detect it.. But on the 11i system, we do have a /dev/zero, but mmap does not
> support it :-(..

> open("/dev/zero", O_RDWR, 0666)                            = 3
> mmap(NULL, 256000, PROT_READ|PROT_WRITE, MAP_SHARED, 3, NULL) ERR#19 ENODEV

Yup, I'll agree that it's probably not supported by the OS. I'm thinking
we're going to have to make an exception for this platform the same way
we do it for linux 2.3 and earlier.

Try this and let me know (untested):

Index: configure.in
===================================================================
RCS file: /home/cvs/apr/configure.in,v
retrieving revision 1.404
diff -u -u -r1.404 configure.in
--- configure.in	5 Feb 2002 14:39:45 -0000	1.404
+++ configure.in	7 Feb 2002 18:47:44 -0000
@@ -531,6 +531,9 @@
             APR_DECISION_OVERRIDE(USE_SHMEM_MMAP_ZERO USE_SHMEM_SHMGET_ANON)
         fi
         ;;
+    *hpux11* ) 
+        APR_DECISION_OVERRIDE(USE_SHMEM_SHMGET_ANON)
+        ;;
 esac
 APR_END_DECISION
 AC_DEFINE_UNQUOTED($ac_decision)

-aaron