Allow both tmpfs and ramfs for shm devices.

        * libpthread/nptl/linux_fsinfo.h (SHMFS_SUPER_MAGIC_WITH_MMU): Define.
        (SHMFS_SUPER_MAGIC_WITHOUT_MMU): Define.
        * libpthread/nptl/sem_open.c (__where_is_shmfs): Add support for
        SHMFS_SUPER_MAGIC_WITHOUT_MMU.

Signed-off-by: Mickaël Guêné <mickael.gu...@st.com>
Signed-off-by: Christophe Lyon <christophe.l...@st.com>

diff --git a/libpthread/nptl/linux_fsinfo.h b/libpthread/nptl/linux_fsinfo.h
index 8537581..4abe792 100644
--- a/libpthread/nptl/linux_fsinfo.h
+++ b/libpthread/nptl/linux_fsinfo.h
@@ -126,7 +126,10 @@
 #define XENIX_SUPER_MAGIC      0x012ff7b4
 
 /* Constant that identifies the `shm' filesystem.  */
-#define SHMFS_SUPER_MAGIC      0x01021994
+/* Mount as tmpfs.  */
+#define SHMFS_SUPER_MAGIC_WITH_MMU      0x01021994
+/* The kernel uses a ramfs file system for tmpfs.  */
+#define SHMFS_SUPER_MAGIC_WITHOUT_MMU   0x858458f6
 
 /* Constants that identify the `xfs' filesystem.  */
 #define XFS_SUPER_MAGIC                0x58465342
diff --git a/libpthread/nptl/sem_open.c b/libpthread/nptl/sem_open.c
index d811ec5..2746da1 100644
--- a/libpthread/nptl/sem_open.c
+++ b/libpthread/nptl/sem_open.c
@@ -72,7 +72,9 @@ __where_is_shmfs (void)
 
   /* The canonical place is /dev/shm.  This is at least what the
      documentation tells everybody to do.  */
-  if (__statfs (defaultmount, &f) == 0 && f.f_type == SHMFS_SUPER_MAGIC)
+  if (__statfs (defaultmount, &f) == 0
+      && (f.f_type == SHMFS_SUPER_MAGIC_WITH_MMU
+         || f.f_type == SHMFS_SUPER_MAGIC_WITHOUT_MMU))
     {
       /* It is in the normal place.  */
       mountpoint.dir = (char *) defaultdir;
@@ -106,7 +108,9 @@ __where_is_shmfs (void)
        /* First make sure this really is the correct entry.  At least
           some versions of the kernel give wrong information because
           of the implicit mount of the shmfs for SysV IPC.  */
-       if (__statfs (mp->mnt_dir, &f) != 0 || f.f_type != SHMFS_SUPER_MAGIC)
+       if (__statfs (mp->mnt_dir, &f) != 0
+           || (f.f_type != SHMFS_SUPER_MAGIC_WITH_MMU
+               && f.f_type != SHMFS_SUPER_MAGIC_WITHOUT_MMU))
          continue;
 
        namelen = strlen (mp->mnt_dir);
-- 
2.6.3

_______________________________________________
devel mailing list
devel@uclibc-ng.org
https://mailman.uclibc-ng.org/cgi-bin/mailman/listinfo/devel

Reply via email to