diff options
author | wblock <wblock@FreeBSD.org> | 2017-01-20 17:38:12 +0000 |
---|---|---|
committer | wblock <wblock@FreeBSD.org> | 2017-01-20 17:38:12 +0000 |
commit | bbbf7340d68bd0dbb0fbf7aedacb69356658f95d (patch) | |
tree | c1f3a5473c844efbc098fab957b86bc1512dbcdb /lib/libc/sys | |
parent | 635cdaac1be93ae8d506842f275d6d0274cbf776 (diff) | |
download | FreeBSD-src-bbbf7340d68bd0dbb0fbf7aedacb69356658f95d.zip FreeBSD-src-bbbf7340d68bd0dbb0fbf7aedacb69356658f95d.tar.gz |
MFC 312083:
Update the shm_open.2 man page to reflect objective reality.
Sponsored by: iXsystems
Diffstat (limited to 'lib/libc/sys')
-rw-r--r-- | lib/libc/sys/shm_open.2 | 53 |
1 files changed, 39 insertions, 14 deletions
diff --git a/lib/libc/sys/shm_open.2 b/lib/libc/sys/shm_open.2 index b56f717..f77eb49 100644 --- a/lib/libc/sys/shm_open.2 +++ b/lib/libc/sys/shm_open.2 @@ -28,7 +28,7 @@ .\" .\" $FreeBSD$ .\" -.Dd December 18, 2013 +.Dd January 13, 2017 .Dt SHM_OPEN 2 .Os .Sh NAME @@ -171,7 +171,8 @@ and .Dv O_TRUNC flags may be used in portable programs. .Pp -The result of using +.Tn POSIX +specifications state that the result of using .Xr open 2 , .Xr read 2 , or @@ -179,19 +180,43 @@ or on a shared memory object, or on the descriptor returned by .Fn shm_open , is undefined. -It is also undefined whether the shared memory object itself, or its -contents, persist across reboots. -.Pp -In FreeBSD, +However, the +.Fx +kernel implementation explicitly includes support for .Xr read 2 and -.Xr write 2 -on a shared memory object will fail with -.Er EOPNOTSUPP -and neither shared memory objects nor their contents persist across reboots. +.Xr write 2 . +.Pp +Neither shared memory objects nor their contents persist across reboots. +.Pp +Writes do not extend shared memory objects, so +.Xr ftruncate 2 +must be called before any data can be written. +See +.Sx EXAMPLES . +.Sh EXAMPLES +This example fails without the call to +.Xr ftruncate 2 : +.Bd -literal -compact + + uint8_t buffer[getpagesize()]; + ssize_t len; + int fd; + + fd = shm_open(SHM_ANON, O_RDWR | O_CREAT, 0600); + if (fd < 0) + err(EX_OSERR, "%s: shm_open", __func__); + if (ftruncate(fd, getpagesize()) < 0) + err(EX_IOERR, "%s: ftruncate", __func__); + len = pwrite(fd, buffer, getpagesize(), 0); + if (len < 0) + err(EX_IOERR, "%s: pwrite", __func__); + if (len != getpagesize()) + errx(EX_IOERR, "%s: pwrite length mismatch", __func__); +.Ed .Sh ERRORS -The following errors are defined for -.Fn shm_open : +.Fn shm_open +fails with these error codes for these conditions: .Bl -tag -width Er .It Bq Er EINVAL A flag other than @@ -235,8 +260,8 @@ are specified and the named shared memory object does exist. The required permissions (for reading or reading and writing) are denied. .El .Pp -The following errors are defined for -.Fn shm_unlink : +.Fn shm_unlink +fails with these error codes for these conditions: .Bl -tag -width Er .It Bq Er EFAULT The |