Test feature macros before defining non-POSIX things. Add MAP_FAILED.
authordrepper <drepper>
Sun, 10 Aug 1997 17:55:04 +0000 (17:55 +0000)
committerdrepper <drepper>
Sun, 10 Aug 1997 17:55:04 +0000 (17:55 +0000)
sysdeps/unix/bsd/osf/sys/mman.h

index 7284619..816f271 100644 (file)
@@ -1,5 +1,5 @@
 /* Definitions for BSD-style memory management.  OSF/1 version.
-   Copyright (C) 1994, 1995, 1996 Free Software Foundation, Inc.
+   Copyright (C) 1994, 1995, 1996, 1997 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
 
    The GNU C Library is free software; you can redistribute it and/or
    without PROT_READ.  The only guarantees are that no writing will be
    allowed without PROT_WRITE and no access will be allowed for PROT_NONE. */
 
-#define        PROT_NONE       0x00    /* No access.  */
-#define        PROT_READ       0x01    /* Pages can be read.  */
-#define        PROT_WRITE      0x02    /* Pages can be written.  */
-#define        PROT_EXEC       0x04    /* Pages can be executed.  */
+#define        PROT_NONE        0x00   /* No access.  */
+#define        PROT_READ        0x01   /* Pages can be read.  */
+#define        PROT_WRITE       0x02   /* Pages can be written.  */
+#define        PROT_EXEC        0x04   /* Pages can be executed.  */
 
 
 /* Flags contain mapping type, sharing type and options.  */
 
 /* Mapping type (must choose one and only one of these).  */
-#define        MAP_FILE        0x00    /* Mapped from a file or device.  */
-#define        MAP_ANON        0x10    /* Allocated from anonymous virtual memory.  */
-#define        MAP_ANONYMOUS   MAP_ANON
-#define        MAP_TYPE        0xf0    /* Mask for type field.  */
+#ifdef __USE_BSD
+# define MAP_FILE       0x00   /* Mapped from a file or device.  */
+# define MAP_ANON       0x10   /* Allocated from anonymous virtual memory.  */
+# define MAP_ANONYMOUS  MAP_ANON
+# define MAP_TYPE       0xf0   /* Mask for type field.  */
+#endif
 
 /* Sharing types (must choose one and only one of these).  */
-#define        MAP_SHARED      0x01    /* Share changes.  */
-#define        MAP_PRIVATE     0x02    /* Changes private; copy pages on write.  */
+#define        MAP_SHARED       0x01   /* Share changes.  */
+#define        MAP_PRIVATE      0x02   /* Changes private; copy pages on write.  */
 
 /* Other flags.  */
-#define        MAP_FIXED       0x0100  /* Map address must be exactly as requested. */
-#define        MAP_VARIABLE    0       /* Absence of MAP_FIXED.  */
-#define        MAP_HASSEMPHORE 0x0200  /* Region may contain semaphores.  */
-#define        MAP_INHERIT     0x0400  /* Region is retained after exec.  */
-#define        MAP_UNALIGNED   0x0800  /* File offset need not be page-aligned.  */
+#define        MAP_FIXED        0x0100 /* Map address must be exactly as requested. */
+#ifdef __USE_BSD
+# define MAP_VARIABLE   0      /* Absence of MAP_FIXED.  */
+# define MAP_HASSEMPHORE 0x0200        /* Region may contain semaphores.  */
+# define MAP_INHERIT    0x0400 /* Region is retained after exec.  */
+# define MAP_UNALIGNED  0x0800 /* File offset need not be page-aligned.  */
+#endif
 
 /* Advice to `madvise'.  */
-#define        MADV_NORMAL     0       /* No further special treatment.  */
-#define        MADV_RANDOM     1       /* Expect random page references.  */
-#define        MADV_SEQUENTIAL 2       /* Expect sequential page references.  */
-#define        MADV_WILLNEED   3       /* Will need these pages.  */
-#define        MADV_DONTNEED   4       /* Don't need these pages.  */
-#define        MADV_SPACEAVAIL 5       /* Ensure that resources are available.  */
+#ifdef __USE_BSD
+# define MADV_NORMAL    0      /* No further special treatment.  */
+# define MADV_RANDOM    1      /* Expect random page references.  */
+# define MADV_SEQUENTIAL 2     /* Expect sequential page references.  */
+# define MADV_WILLNEED  3      /* Will need these pages.  */
+# define MADV_DONTNEED  4      /* Don't need these pages.  */
+# define MADV_SPACEAVAIL 5     /* Ensure that resources are available.  */
+#endif
 
 /* Flags to `msync'.  */
 #define MS_ASYNC       1               /* Asynchronous cache flush.  */
 #define MS_SYNC                3               /* Synchronous cache flush.  */
 #define MS_INVALIDATE  4               /* Invalidate cached pages.  */
 
+/* Return value of `mmap' in case of an error.  */
+#define MAP_FAILED     ((__caddr_t) -1)
 
-#include <sys/cdefs.h>
 
 __BEGIN_DECLS
 /* Map addresses starting near ADDR and extending for LEN bytes.  from
@@ -79,34 +86,36 @@ __BEGIN_DECLS
    is nonzero, it is the desired mapping address.  If the MAP_FIXED bit is
    set in FLAGS, the mapping will be at ADDR exactly (which must be
    page-aligned); otherwise the system chooses a convenient nearby address.
-   The return value is the actual mapping address chosen or (caddr_t) -1
+   The return value is the actual mapping address chosen or MAP_FAILED
    for errors (in which case `errno' is set).  A successful `mmap' call
    deallocates any previous mapping for the affected region.  */
 
-__caddr_t __mmap __P ((__caddr_t __addr, size_t __len,
-                      int __prot, int __flags, int __fd, off_t __offset));
-__caddr_t mmap __P ((__caddr_t __addr, size_t __len,
-                    int __prot, int __flags, int __fd, off_t __offset));
+extern __caddr_t __mmap __P ((__caddr_t __addr, size_t __len, int __prot,
+                             int __flags, int __fd, off_t __offset));
+extern __caddr_t mmap __P ((__caddr_t __addr, size_t __len, int __prot,
+                           int __flags, int __fd, off_t __offset));
 
 /* Deallocate any mapping for the region starting at ADDR and extending LEN
    bytes.  Returns 0 if successful, -1 for errors (and sets errno).  */
-int __munmap __P ((__caddr_t __addr, size_t __len));
-int munmap __P ((__caddr_t __addr, size_t __len));
+extern int __munmap __P ((__caddr_t __addr, size_t __len));
+extern int munmap __P ((__caddr_t __addr, size_t __len));
 
 /* Change the memory protection of the region starting at ADDR and
    extending LEN bytes to PROT.  Returns 0 if successful, -1 for errors
    (and sets errno).  */
-int __mprotect __P ((__caddr_t __addr, size_t __len, int __prot));
-int mprotect __P ((__caddr_t __addr, size_t __len, int __prot));
+extern int __mprotect __P ((__caddr_t __addr, size_t __len, int __prot));
+extern int mprotect __P ((__caddr_t __addr, size_t __len, int __prot));
 
 /* Synchronize the region starting at ADDR and extending LEN bytes with the
    file it maps.  Filesystem operations on a file being mapped are
    unpredictable before this is done.  */
-int msync __P ((__caddr_t __addr, size_t __len, int __flags));
+extern int msync __P ((__caddr_t __addr, size_t __len, int __flags));
 
+#ifdef __USE_BSD
 /* Advise the system about particular usage patterns the program follows
    for the region starting at ADDR and extending LEN bytes.  */
-int madvise __P ((__caddr_t __addr, size_t __len, int __advice));
+extern int madvise __P ((__caddr_t __addr, size_t __len, int __advice));
+#endif
 
 __END_DECLS