shm_open doesn't work (fix maybe).
I have been chasing all around trying to find out why shm_open always returns ENOSYS. It is implemented in glibc-2.2.2, and seems the 2.4.3 kernel knows about shmfs.
It seems the file linux/mm/shmem.c has:
#define SHMEM_MAGIC 0x01021994
And the glibc-2.2.2/sysdeps/unix/sysv/linux/linux_fsinfo.h has:
#define SHMFS_SUPER_MAGIC 0x02011994
Well, which is correct?
Looking for (trouble?) the reason, I found a patch
http://www.mail-archive.com/[email protected]/msg16996.html
where there seems to be a typo, the remove line is correct:
-#define SHM_FS_MAGIC 0x02011994
but the insert line has the 0201 reversed:
+#define SHMEM_MAGIC 0x01021994
Has anyone else run into this? (It seems the documentation on shmfs is sparse, so I don't think too many folks are even messing with it).
Initially I thought, hey simple, just fix the kernel source, and everyone will be happy. But, then I thought, ooof! code I build for someone without a patched kernel will surely break. So then I thought simple I'll fix glibc and statically link. Of course, then someone will fix this, and all my binaries will be broken.
Help! what is the "right" fix.
Quoted 6 lines · Tom Brusehaver (N-Sysdyne Corporation)
I have been chasing all around trying to find out why
shm_openalways returns ENOSYS. It is implemented in glibc-2.2.2, and seems the 2.4.3 kernel knows about shmfs.
Quoted 7 lines
It seems the file
linux/mm/shmem.chas:#define SHMEM_MAGIC 0x01021994And the
glibc-2.2.2/sysdeps/unix/sysv/linux/linux_fsinfo.hhas:#define SHMFS_SUPER_MAGIC 0x02011994Well, which is correct?
Update your glibc, 2.2.3pre* matches 2.4.x kernel:
2001-03-03 Ulrich Drepper <[email protected]>
* sysdeps/unix/sysv/linux/linux_fsinfo.h (SHMFS_SUPER_MAGIC):
Update for real 2.4 kernels.
Jakub
Hi,
Quoted 14 lines · Jakub Jelinek
Quoted 12 lines · Tom Brusehaver (N-Sysdyne Corporation)
I have been chasing all around trying to find out why
shm_openalways returns ENOSYS. It is implemented in glibc-2.2.2, and seems the 2.4.3 kernel knows about shmfs.It seems the file
linux/mm/shmem.chas:#define SHMEM_MAGIC 0x01021994And the
glibc-2.2.2/sysdeps/unix/sysv/linux/linux_fsinfo.hhas:#define SHMFS_SUPER_MAGIC 0x02011994
Quoted 8 lines
Quoted 1 line
Well, which is correct?
Update your glibc, 2.2.3pre* matches 2.4.x kernel:
2001-03-03 Ulrich Drepper <[email protected]>
*
sysdeps/unix/sysv/linux/linux_fsinfo.h(SHMFS_SUPER_MAGIC):
Update for real 2.4 kernels.
Yes, and I apologize to Ulrich that the changed number slipped through to the official kernel. My fault.
Greetings
Christoph