SysV shm device number
I'd like to reliably identify SysV shared memory in the /proc/*/maps files. On one system, the entries look like this:
40014000-40015000 r--s 00000000 00:04 0 /SYSV00000000 (deleted)
40015000-40016000 rw-s 00000000 00:04 32769 /SYSV000000ff (deleted)
On my system, they look like this:
30016000-30017000 r--s 00000000 00:06 870318096 /SYSV00000000\040(deleted) 30017000-30018000 rw-s 00000000 00:06 870350865 /SYSV000000ff\040(deleted)
So the key number is in the name, and the shmid number is the inode number. The device major number is 0, and the device minor number is 4 or 6.
Other than by creating my own SysV shared memory,
is there a way to tell what the minor number
should be?
Quoted 7 lines · Albert Cahalan
I'd like to reliably identify SysV shared memory in the
/proc/*/mapsfiles. On one system, the entries look like this:40014000-40015000 r--s 00000000 00:04 0 /SYSV00000000 (deleted)
40015000-40016000 rw-s 00000000 00:04 32769 /SYSV000000ff (deleted)
Quoted 8 lines
On my system, they look like this:
30016000-30017000 r--s 00000000 00:06 870318096 /SYSV00000000\040(deleted) 30017000-30018000 rw-s 00000000 00:06 870350865 /SYSV000000ff\040(deleted)
So the key number is in the name, and the shmid number is the inode number. The device major number is 0, and the device minor number is 4 or 6.
I'm sure you don't mean to rely on it being 4 or 6: it just depends on where in the init sequence init_tmpfs gets called, who else has already allocated anon supers before it.
Quoted 2 lines
Other than by creating my own SysV shared memory, is there a way to tell what the minor number should be?
I can't think of a better way. I presume you're focussing on that minor number because you don't want to be fooled by an mmap of a regular file at root named /SYSVnnnnnnnn. Beware that a shared writable mmap of /dev/zero (or MAP_ANONYMOUS) also appears on that major:minor, but named /dev/zero (deleted).
You might prefer to identify the minor number that way, via an mmap(0, 1, PROT_READ|PROT_WRITE, MAP_SHARED|MAP_ANONYMOUS, -1, 0), I can't see any reason for their minors to diverge (so long as minors make any sense at all here).
Hugh