]> git.saurik.com Git - apple/xnu.git/blobdiff - bsd/man/man2/shmget.2
xnu-3789.1.32.tar.gz
[apple/xnu.git] / bsd / man / man2 / shmget.2
index 55ad6fbdd77bec006a4c6db4e4e5ee1dee676ef1..9ae8ae1319abd202e34f7da486baaa6309b4faab 100644 (file)
 .Nm shmget
 .Nd get shared memory area identifier
 .Sh SYNOPSIS
-.Fd #include <sys/types.h>
-.Fd #include <sys/ipc.h>
 .Fd #include <sys/shm.h>
 .Ft int
-.Fn shmget "key_t key" "int size" "int shmflg"
+.Fo shmget
+.Fa "key_t key"
+.Fa "size_t size"
+.Fa "int shmflg"
+.Fc
 .Sh DESCRIPTION
 .Fn shmget
 returns the shared memory identifier associated with the key
 .Fa key .
-
+.Pp
 A shared memory segment is created if either
 .Fa key
 is equal to IPC_PRIVATE, or
@@ -54,7 +56,7 @@ is equal to IPC_PRIVATE, or
 does not have a shared memory segment identifier associated with it, and the IPC_CREAT
 bit is set in
 .Fa shmflg.
-
+.Pp
 If a new shared memory segment is created, the data structure associated with it (the
 .Va shmid_ds
 structure, see
@@ -89,6 +91,10 @@ is set to the current time.
 .Va shm_segsz
 is set to the value of
 .Fa size .
+.It
+The
+.Xr ftok 3
+function may be used to generate a key from a pathname.
 .El
 .Sh RETURN VALUES
 Upon successful completion a positive shared memory segment identifier is returned.
@@ -96,30 +102,66 @@ Otherwise, -1 is returned and the global variable
 .Va errno
 is set to indicate the error.
 .Sh ERRORS
+The
+.Fn shmget
+system call will fail if:
 .Bl -tag -width Er
-.It Bq Er EACESS
+.\" ===========
+.It Bq Er EACCES
 A shared memory segment is already associated with
 .Fa key
 and the caller has no permission to access it.
+.\" ===========
 .It Bq Er EEXIST
 Both IPC_CREAT and IPC_EXCL are set in
 .Fa shmflg ,
 and a shared memory segment is already associated with
 .Fa key .
-.It Bq Er ENOSPC
-A new shared memory indentifier could not be created because the system limit
-for the number of shared memory identifiers has been reached.
+.\" ===========
+.It Bq Er EINVAL
+No shared memory segment is to be created,
+and a shared memory segment exists for
+.Fa key ,
+but the size of the segment associated with it
+is less than
+.Fa size ,
+which is non-zero.
+.\" ===========
 .It Bq Er ENOENT
 IPC_CREAT was not set in
 .Fa shmflg
 and no shared memory segment associated with
 .Fa key
 was found.
+.\" ===========
 .It Bq Er ENOMEM
 There is not enough memory left to created a shared memory segment of the
 requested size.
+.\" ===========
+.It Bq Er ENOSPC
+A new shared memory identifier could not be created because the system limit
+for the number of shared memory identifiers has been reached.
 .El
+.Sh LEGACY SYNOPSIS
+.Fd #include <sys/types.h>
+.Fd #include <sys/ipc.h>
+.Fd #include <sys/shm.h>
+.Pp
+.Ft int
+.br
+.Fo shmget
+.Fa "key_t key"
+.Fa "int size"
+.Fa "int shmflg"
+.Fc ;
+.Pp
+All of these include files are necessary.
+The type of
+.Fa size
+has changed.
 .Sh SEE ALSO
-.Xr shmctl 2 ,
+.Xr ftok 3 ,
 .Xr shmat 2 ,
-.Xr shmdt 2
+.Xr shmctl 2 ,
+.Xr shmdt 2 ,
+.Xr compat 5