This is the mail archive of the glibc-cvs@sourceware.org mailing list for the glibc project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

GNU C Library master sources branch, master, updated. glibc-2.11-279-g085f930


This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "GNU C Library master sources".

The branch, master has been updated
       via  085f930b8f263a0e0c87b5189c73f23c6991c556 (commit)
      from  7749bf5fe6ac0464db10a3a17a31121517f92530 (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.

- Log -----------------------------------------------------------------
http://sources.redhat.com/git/gitweb.cgi?p=glibc.git;a=commitdiff;h=085f930b8f263a0e0c87b5189c73f23c6991c556

commit 085f930b8f263a0e0c87b5189c73f23c6991c556
Author: Ulrich Drepper <drepper@redhat.com>
Date:   Wed Mar 24 14:59:43 2010 -0700

    Allow variable shift values in mmap2.

diff --git a/ChangeLog b/ChangeLog
index 004c6bf..7a7e46c 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,7 @@
+2010-03-24  Ulrich Drepper  <drepper@redhat.com>
+
+	* sysdeps/unix/sysv/linux/mmap64.c: Allow variable shift values.
+
 2010-03-24  H.J. Lu  <hongjiu.lu@intel.com>
 
 	* sysdeps/x86_64/multiarch/strpbrk-c.c: Define only if SHARED
diff --git a/sysdeps/unix/sysv/linux/mmap64.c b/sysdeps/unix/sysv/linux/mmap64.c
index d3c68cd..85c801d 100644
--- a/sysdeps/unix/sysv/linux/mmap64.c
+++ b/sysdeps/unix/sysv/linux/mmap64.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 1999,2000,2001,2002,2006 Free Software Foundation, Inc.
+/* Copyright (C) 1999,2000,2001,2002,2006,2010 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Jakub Jelinek <jakub@redhat.com>, 1999.
 
@@ -30,8 +30,13 @@
 #ifdef __NR_mmap2
 
 /* This is always 12, even on architectures where PAGE_SHIFT != 12.  */
-# ifndef MMAP2_PAGE_SHIFT
-#  define MMAP2_PAGE_SHIFT 12
+# if MMAP2_PAGE_SHIFT == -1
+static int page_shift;
+# else
+#  ifndef MMAP2_PAGE_SHIFT
+#   define MMAP2_PAGE_SHIFT 12
+#  endif
+# define page_shift MMAP2_PAGE_SHIFT
 # endif
 
 # ifndef __ASSUME_MMAP2_SYSCALL
@@ -44,7 +49,15 @@ void *
 __mmap64 (void *addr, size_t len, int prot, int flags, int fd, off64_t offset)
 {
 #ifdef __NR_mmap2
-  if (offset & ((1 << MMAP2_PAGE_SHIFT) - 1))
+# ifdef MMAP2_PAGE_SHIFT == -1
+  if (page_shift == 0)
+    {
+      int page_size = getpagesize ();
+      while ((1 << ++page_shift) != page_size)
+	;
+    }
+# endif
+  if (offset & ((1 << page_shift) - 1))
     {
       __set_errno (EINVAL);
       return MAP_FAILED;

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

Summary of changes:
 ChangeLog                        |    4 ++++
 sysdeps/unix/sysv/linux/mmap64.c |   21 +++++++++++++++++----
 2 files changed, 21 insertions(+), 4 deletions(-)


hooks/post-receive
-- 
GNU C Library master sources


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]