doc: use ASCII in .texi files where UTF-8 isn't needed
[gnulib.git] / lib / pagealign_alloc.c
index 58f1433..94a85fc 100644 (file)
@@ -1,6 +1,6 @@
 /* Memory allocation aligned to system page boundaries.
 
-   Copyright (C) 2005, 2006, 2007 Free Software Foundation, Inc.
+   Copyright (C) 2005-2007, 2009-2014 Free Software Foundation, Inc.
 
    This program is free software: you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
@@ -32,7 +32,6 @@
 #endif
 
 #include "error.h"
-#include "getpagesize.h"
 #include "xalloc.h"
 #include "gettext.h"
 
@@ -124,20 +123,23 @@ void *
 pagealign_alloc (size_t size)
 {
   void *ret;
+  /* We prefer the mmap() approach over the posix_memalign() or malloc()
+     based approaches, since the latter often waste an entire memory page
+     per call.  */
 #if HAVE_MMAP
 # ifdef HAVE_MAP_ANONYMOUS
   const int fd = -1;
   const int flags = MAP_ANONYMOUS | MAP_PRIVATE;
 # else /* !HAVE_MAP_ANONYMOUS */
   static int fd = -1;  /* Only open /dev/zero once in order to avoid limiting
-                         the amount of memory we may allocate based on the
-                         number of open file descriptors.  */
+                          the amount of memory we may allocate based on the
+                          number of open file descriptors.  */
   const int flags = MAP_FILE | MAP_PRIVATE;
   if (fd == -1)
     {
       fd = open ("/dev/zero", O_RDONLY, 0666);
       if (fd < 0)
-       error (EXIT_FAILURE, errno, _("Failed to open /dev/zero for read"));
+        error (EXIT_FAILURE, errno, _("Failed to open /dev/zero for read"));
     }
 # endif /* HAVE_MAP_ANONYMOUS */
   ret = mmap (NULL, size, PROT_READ | PROT_WRITE, flags, fd, 0);
@@ -157,7 +159,7 @@ pagealign_alloc (size_t size)
   if (unaligned_ptr == NULL)
     {
       /* Set errno.  We don't know whether malloc already set errno: some
-        implementations of malloc do, some don't.  */
+         implementations of malloc do, some don't.  */
       errno = ENOMEM;
       return NULL;
     }