Annotation of cci/usr/src/man/man2/intro.2, revision 1.1.1.1

1.1       root        1: .TH INTRO 2
                      2: .de {n
                      3: .HP
                      4: \\$1  \\$2  \\$3
                      5: .br
                      6: ..
                      7: .SH NAME
                      8: intro \- introduction to system calls and error numbers
                      9: .SH SYNOPSIS
                     10: .B #include \|<errno.h>
                     11: .SH DESCRIPTION
                     12: This section
                     13: describes all of the system calls.
                     14: Most of these calls have one or more error returns.
                     15: An error condition is indicated by an otherwise
                     16: impossible returned value.
                     17: This is almost always \-1;
                     18: the individual descriptions specify the details.
                     19: An error number is also made available
                     20: in the external variable
                     21: .IR errno .
                     22: .I Errno\^
                     23: is not cleared on successful calls, so it should be tested only
                     24: after an error has been indicated.
                     25: .PP
                     26: Each system call description attempts to
                     27: list all possible error numbers.
                     28: The following is a complete list of the error numbers and
                     29: their names as defined in
                     30: .BR <errno.h> .
                     31: .{n 1 \s-1EPERM\s+1 "Not owner"
                     32: Typically this error indicates
                     33: an attempt to modify a file in some way forbidden
                     34: except to its owner or super-user.
                     35: It is also returned for attempts
                     36: by ordinary users to do things
                     37: allowed only to the super-user.
                     38: .{n 2 \s-1ENOENT\s+1 "No such file or directory"
                     39: This error occurs when a file name is specified
                     40: and the file should exist but doesn't, or when one
                     41: of the directories in a path name does not exist.
                     42: .{n 3 \s-1ESRCH\s+1 "No such process"
                     43: No process can be found corresponding to that specified by
                     44: .I pid\^
                     45: in
                     46: .I kill\^
                     47: or
                     48: .IR ptrace .
                     49: .{n 4 \s-1EINTR\s+1 "Interrupted system call"
                     50: An asynchronous signal (such as interrupt or quit),
                     51: which the user has elected to catch,
                     52: occurred during a system call.
                     53: If execution is resumed
                     54: after processing the signal,
                     55: it will appear as if the interrupted system call
                     56: returned this error condition.
                     57: .{n 5 \s-1EIO\s+1 "I/O error"
                     58: Some physical I/O error has occurred.
                     59: This error may in some cases occur
                     60: on a call following the one to which it actually applies.
                     61: .{n 6 \s-1ENXIO\s+1 "No such device or address"
                     62: I/O on a special file refers to a subdevice which does not
                     63: exist,
                     64: or beyond the limits of the device.
                     65: It may also occur when, for example, a tape drive
                     66: is not on-line or no disk pack is loaded on a drive.
                     67: .{n 7 \s-1E2BIG\s+1 "Arg list too long"
                     68: An argument list longer than 5,120 bytes
                     69: is presented to a member of the
                     70: .I exec\^
                     71: family.
                     72: .{n 8 \s-1ENOEXEC\s+1 "Exec format error"
                     73: A request is made to execute a file
                     74: which, although it has the appropriate permissions,
                     75: does not start with a valid magic number (see
                     76: .IR a.out (4)).
                     77: .{n 9 \s-1EBADF\s+1 "Bad file number"
                     78: Either a file descriptor refers to no
                     79: open file,
                     80: or a read (respectively, write) request is made to
                     81: a file which is open only for writing (respectively, reading).
                     82: .{n 10 \s-1ECHILD\s+1 "No child processes"
                     83: A
                     84: .I wait
                     85: was executed by a process that had no existing or unwaited-for child processes.
                     86: .{n 11 \s-1EAGAIN\s+1 "No more processes"
                     87: A
                     88: .I fork
                     89: failed because the system's process table is full
                     90: or the user is not allowed to create any more
                     91: processes.
                     92: .{n 12 \s-1ENOMEM\s+1 "Not enough space"
                     93: During an
                     94: .IR exec ,
                     95: .IR brk ,
                     96: or
                     97: .IR sbrk ,
                     98: a program asks for more space than the system is able to supply.
                     99: This is not a temporary condition; the maximum space size
                    100: is a system parameter.
                    101: The error may also occur if the arrangement
                    102: of text, data, and stack segments
                    103: requires too many segmentation registers, or
                    104: if there is not enough swap space during a
                    105: .IR fork .
                    106: .{n 13 \s-1EACCES\s+1 "Permission denied"
                    107: An attempt was made to access a file in a way forbidden
                    108: by the protection system.
                    109: .{n 14 \s-1EFAULT\s+1 "Bad address"
                    110: The system encountered a hardware fault in attempting to
                    111: use an argument of a system call.
                    112: .{n 15 \s-1ENOTBLK\s+1 "Block device required"
                    113: A non-block file was mentioned where a block device was required,
                    114: e.g., in
                    115: .IR mount .
                    116: .{n 16 \s-1EBUSY\s+1 "Device or resource busy"
                    117: An attempt was made to mount a device that was already mounted or
                    118: an attempt was made to dismount a device
                    119: on which there is an active file
                    120: (open file, current directory, mounted-on file, active text segment).
                    121: It will also occur if an attempt is made to enable accounting when it is
                    122: already enabled.
                    123: The device or resource is currently unavailable.
                    124: .{n 17 \s-1EEXIST\s+1 "File exists"
                    125: An existing file was mentioned in an inappropriate context,
                    126: e.g.,
                    127: .IR link .
                    128: .{n 18 \s-1EXDEV\s+1 "Cross-device link"
                    129: A link to a file on another device
                    130: was attempted.
                    131: .{n 19 \s-1ENODEV\s+1 "No such device"
                    132: An attempt was made to apply an inappropriate
                    133: system call to a device;
                    134: e.g., read a write-only device.
                    135: .{n 20 \s-1ENOTDIR\s+1 "Not a directory"
                    136: A non-directory was specified where a directory
                    137: is required,
                    138: for example in a path prefix or
                    139: as an argument to
                    140: .IR chdir (2).
                    141: .{n 21 \s-1EISDIR\s+1 "Is a directory"
                    142: An attempt was made to write on a directory.
                    143: .{n 22 \s-1EINVAL\s+1 "Invalid argument"
                    144: Some invalid argument (e.g., dismounting a non-mounted device;
                    145: mentioning an undefined signal in
                    146: .IR signal ,
                    147: or
                    148: .IR kill ;
                    149: reading or writing a file for which
                    150: .I lseek\^
                    151: has generated a negative pointer).
                    152: Also set by the math functions described in the (3M) entries
                    153: of this manual.
                    154: .{n 23 \s-1ENFILE\s+1 "File table overflow"
                    155: The system file table is full,
                    156: and temporarily no more
                    157: .I opens\^
                    158: can be accepted.
                    159: .{n 24 \s-1EMFILE\s+1 "Too many open files"
                    160: No process may have more than 20 file descriptors open at a time.
                    161: .{n 25 \s-1ENOTTY\s+1 "Not a character device"
                    162: An attempt was made to \f2ioctl\fR(2) a file that
                    163: is not a special character device.
                    164: .{n 26 \s-1ETXTBSY\s+1 "Text file busy"
                    165: An attempt was made to execute a pure-procedure
                    166: program that is currently open for writing.
                    167: Also an attempt to open for writing a pure-procedure
                    168: program that is being executed.
                    169: .{n 27 \s-1EFBIG\s+1 "File too large"
                    170: The size of a file exceeded the maximum
                    171: file size (1,082,201,088 bytes) or
                    172: .SM ULIMIT\*S;
                    173: see
                    174: .IR ulimit (2).
                    175: .{n 28 \s-1ENOSPC\s+1 "No space left on device"
                    176: During a
                    177: .I write\^
                    178: to an ordinary file,
                    179: there is no free space left on the device.
                    180: .{n 29 \s-1ESPIPE\s+1 "Illegal seek"
                    181: An
                    182: .I lseek\^
                    183: was issued to a pipe.
                    184: .{n 30 \s-1EROFS\s+1 "Read-only file system"
                    185: An attempt to modify a file or directory
                    186: was made
                    187: on a device mounted read-only.
                    188: .{n 31 \s-1EMLINK\s+1 "Too many links"
                    189: An attempt to make more than the maximum number of links (1000) to a file.
                    190: .{n 32 \s-1EPIPE\s+1 "Broken pipe"
                    191: A write on a pipe for which there is no process
                    192: to read the data.
                    193: This condition normally generates a signal;
                    194: the error is returned if the signal is ignored.
                    195: .{n 33 \s-1EDOM\s+1 "Math argument"
                    196: The argument of a function in the math package (3M)
                    197: is out of the domain of the function.
                    198: .{n 34 \s-1ERANGE\s+1 "Result too large"
                    199: The value of a function in the math package (3M)
                    200: is not representable within machine precision.
                    201: .{n 35 \s-1EWOULDBLOCK\s+1 "Operation would block"
                    202: An operation which would cause a process to block was attempted
                    203: on a object in non-blocking mode (see \fIioctl\fP (2)).
                    204: .{n 36 \s-1EINPROGRESS\s+1 "Operation now in progress"
                    205: An operation which takes a long time to complete (such as
                    206: a \fIconnect\fP (2)) was attempted on a non-blocking object (see
                    207: \fIioctl\fP (2)).
                    208: .{n 37 \s-1EALREADY\s+1 "Operation already in progress"
                    209: An operation was attempted on a non-blocking object which already
                    210: had an operation in progress.
                    211: .{n 38 \s-1ENOTSOCK\s+1 "Socket operation on non-socket"
                    212: Self-explanatory.
                    213: .{n 39 \s-1EDESTADDRREQ\s+1 "Destination address required"
                    214: A required address was omitted from an operation on a socket.
                    215: .{n 40 \s-1EMSGSIZE\s+1 "Message too long"
                    216: A message sent on a socket was larger than the internal message buffer.
                    217: .{n 41 \s-1EPROTOTYPE\s+1 "Protocol wrong type for socket"
                    218: A protocol was specified which does not support the semantics of the
                    219: socket type requested. For example you cannot use the ARPA Internet
                    220: UDP protocol with type SOCK_STREAM.
                    221: .{n 42 \s-1ENOPROTOOPT\s+1 "Bad protocol option"
                    222: A bad option was specified in a
                    223: .IR getsockopt (2)
                    224: or
                    225: .IR setsockopt (2)
                    226: call.
                    227: .{n 43 \s-1EPROTONOSUPPORT\s+1 "Protocol not supported"
                    228: The protocol has not been configured into the
                    229: system or no implementation for it exists.
                    230: .{n 44 \s-1ESOCKTNOSUPPORT\s+1 "Socket type not supported"
                    231: The support for the socket type has not been configured into the
                    232: system or no implementation for it exists.
                    233: .{n 45 \s-1EOPNOTSUPP\s+1 "Operation not supported on socket"
                    234: For example, trying to \fIaccept\fP a connection on a datagram socket.
                    235: .{n 46 \s-1EPFNOSUPPORT\s+1 "Protocol family not supported"
                    236: The protocol family has not been configured into the
                    237: system or no implementation for it exists.
                    238: .{n 47 \s-1EAFNOSUPPORT\s+1 "Address family not supported by protocol family"
                    239: An address incompatible with the requested protocol was used.
                    240: For example, you shouldn't necessarily expect to be able to use PUP
                    241: Internet addresses with ARPA Internet protocols.
                    242: .{n 48 \s-1EADDRINUSE\s+1 "Address already in use"
                    243: Only one usage of each address is normally permitted.
                    244: .{n 49 \s-1EADDRNOTAVAIL\s+1 "Can't assign requested address"
                    245: Normally results from an attempt to create a socket with an
                    246: address not on this machine.
                    247: .{n 50 \s-1ENETDOWN\s+1 "Network is down"
                    248: A socket operation encountered a dead network.
                    249: .{n 51 \s-1ENETUNREACH\s+1 "Network is unreachable"
                    250: A socket operation was attempted to an unreachable network.
                    251: .{n 52 \s-1ENETRESET\s+1 "Network dropped connection on reset"
                    252: The host you were connected to crashed and rebooted.
                    253: .{n 53 \s-1ECONNABORTED\s+1 "Software caused connection abort"
                    254: A connection abort was caused internal to your host machine.
                    255: .{n 54 \s-1ECONNRESET\s+1 "Connection reset by peer"
                    256: A connection was forcibly closed by a peer.  This normally
                    257: results from the peer executing a \fIshutdown\fP (2) call.
                    258: .{n 55 \s-1ENOBUFS\s+1 "No buffer space available"
                    259: An operation on a socket or pipe was not performed because
                    260: the system lacked sufficient buffer space.
                    261: .{n 56 \s-1EISCONN\s+1 "Socket is already connected"
                    262: A
                    263: .I connect
                    264: request was made on an already connected socket; or,
                    265: a
                    266: .I sendto
                    267: or
                    268: .I sendmsg
                    269: request on a connected socket specified a destination
                    270: other than the connected party.
                    271: .{n 57 \s-1ENOTCONN\s+1 "Socket is not connected"
                    272: An request to send or receive data was disallowed because
                    273: the socket is not connected.
                    274: .{n 58 \s-1ESHUTDOWN\s+1 "Can't send after socket shutdown"
                    275: A request to send data was disallowed because the socket
                    276: had already been shut down with a previous
                    277: .IR shutdown (2)
                    278: call.
                    279: .{n 59 \fIunused\fP
                    280: .{n 60 \s-1ETIMEDOUT\s+1 "Connection timed out"
                    281: A
                    282: .I connect
                    283: request failed because the connected party did not
                    284: properly respond after a period of time.  (The timeout
                    285: period is dependent on the communication protocol.)
                    286: .{n 61 \s-1ECONNREFUSED\s+1 "Connection refused"
                    287: No connection could be made because the target machine actively
                    288: refused it.  This usually results from trying to connect
                    289: to a service which is inactive on the foreign host.
                    290: .{n 62 \s-1ELOOP\s+1 "Too many levels of symbolic links"
                    291: A path name lookup involved more than 8 symbolic links.
                    292: .{n 63 \s-1ENAMETOOLONG\s+1 "File name too long"
                    293: A component of a path name exceeded 255 characters, or an entire
                    294: path name exceeded 1023 characters.
                    295: .{n 64 \s-1EHOSTDOWN\s+1 "Host is down"
                    296: The host machine is not up.
                    297: .{n 65 \s-1EHOSTUNREACH\s+1 "No route to host"
                    298: The host machine cannot be reached.
                    299: .{n 66 \s-1ENOTEMPTY\s+1 "Directory not empty"
                    300: A directory with entries other than \*(lq.\*(rq and \*(lq..\*(rq
                    301: was supplied to a remove directory or rename call.
                    302: .{n 67 \fIunused\fP
                    303: .{n 68 \s-1EUSERS\s+1 "Too many users"
                    304: The quota table is full.
                    305: .{n 69 \s-1EDQUOT\s+1 "Disc quota exceeded"
                    306: A process has exceeded its disk quota.
                    307: .{n 70 \s-1ENOMSG\s+1 "No message of desired type"
                    308: An attempt was made to receive a message of a type
                    309: that does not exist on the specified message queue; see
                    310: .IR msgop (2).
                    311: .{n 71 \s-1EIDRM\s+1 "Identifier Removed"
                    312: This error is returned to processes that resume execution due to the removal
                    313: of an identifier from the file system's name space (see
                    314: .IR msgctl "(2), " semctl "(2), and " shmctl (2)).
                    315: .SH "DEFINITIONS"
                    316: .SS "Process \s-1ID\s+1"
                    317: Each active process in the system is uniquely identified by a
                    318: positive integer called a process
                    319: .SM ID\*S.
                    320: The range of this
                    321: .SM ID
                    322: is from 1 to 30,000.
                    323: .SS "Parent Process \s-1ID\s+1"
                    324: A new process is created by a currently active
                    325: process; see
                    326: .IR fork (2).
                    327: The parent process
                    328: .SM ID
                    329: of a process is the process
                    330: .SM ID
                    331: of its creator.
                    332: .SS "Process Group \s-1ID\s+1"
                    333: Each active process is a member of a process group that is
                    334: identified by a positive integer called the process group
                    335: .SM ID\*S.
                    336: This
                    337: .SM ID
                    338: is the process
                    339: .SM ID
                    340: of the group leader.
                    341: This grouping permits the signaling of related processes; see
                    342: .IR kill (2).
                    343: .SS "Tty Group \s-1ID\s+1"
                    344: Each active process can be a member of a terminal group that
                    345: is identified by a positive integer called the tty group
                    346: .SM ID\*S.
                    347: This grouping is used to terminate a group of related processes upon termination
                    348: of one of the processes in the group; see
                    349: .IR exit (2)
                    350: and
                    351: .IR signal (2).
                    352: .SS "Real User \s-1ID\s+1 and Real Group \s-1ID\s+1"
                    353: Each user allowed on the system is 
                    354: identified by a positive integer called a real user
                    355: .SM ID\*S.
                    356: .PP
                    357: Each user is also a member of a group.
                    358: The group is identified by a positive integer called the real group
                    359: .SM ID\*S.
                    360: .PP
                    361: An active process has a real user
                    362: .SM ID
                    363: and real group
                    364: .SM ID
                    365: that are set to the real user
                    366: .SM ID
                    367: and real group
                    368: .SM ID\*S,
                    369: respectively, of the user responsible for the creation of the process.
                    370: .SS "Effective User \s-1ID\s+1 and Effective Group \s-1ID\s+1"
                    371: An active process has an effective user
                    372: .SM ID
                    373: and an effective group
                    374: .SM ID
                    375: that are used to determine file access permissions (see below).
                    376: The effective
                    377: user
                    378: .SM ID
                    379: and effective group
                    380: .SM ID
                    381: are equal to the process's real user
                    382: .SM ID
                    383: and real group
                    384: .SM ID
                    385: respectively, unless the process
                    386: or one of its ancestors evolved from a file that had the set-user-\s-1ID\s+1
                    387: bit or set-group
                    388: .SM ID
                    389: bit set; see
                    390: .IR exec (2).
                    391: .SS Super-user
                    392: A process is recognized as a
                    393: .I super-user\^
                    394: process and is granted special privileges if its effective user
                    395: .SM ID
                    396: is 0.
                    397: .SS "Special Processes"
                    398: The processes with a process
                    399: .SM ID
                    400: of 0 and a process
                    401: .SM ID
                    402: of 1 are special processes and are referred to as
                    403: .IR proc0 " and " proc1.
                    404: .PP
                    405: .I Proc0\^
                    406: is the scheduler.
                    407: .I Proc1\^
                    408: is the initialization process 
                    409: .RI ( init ).
                    410: Proc1 is the ancestor of every other
                    411: process in the system and is used to control the process structure.
                    412: .SS File Descriptor
                    413: A file descriptor is a small integer used
                    414: to do \s-1I/O\s+1 on a file.
                    415: The value of a file descriptor is from
                    416: 0 to 19.
                    417: A process may have no more than 20 file descriptors (0-19)
                    418: open simultaneously.
                    419: A file descriptor is returned by system calls such as
                    420: \f2open\fR(2),
                    421: or \f2pipe\fR(2).
                    422: The file descriptor is used as an
                    423: argument by calls such as
                    424: \f2read\fR(2),
                    425: \f2write\fR(2),
                    426: \f2ioctl\fR(2),
                    427: and
                    428: \f2close\fR(2).
                    429: .SS "File Name"
                    430: Names consisting of 1 to 14 characters may be used to name an ordinary file,
                    431: special file or directory.
                    432: .PP
                    433: These characters may be selected from the set of all character values
                    434: excluding \e0 (null) and the
                    435: .SM ASCII
                    436: code for
                    437: .B /
                    438: (slash).
                    439: .PP
                    440: Note that it is generally unwise to use
                    441: .BR "*" ,
                    442: .BR "?" ,
                    443: .BR "[" ,
                    444: or
                    445: .B "]"
                    446: as part of file names because of the special meaning attached to these
                    447: characters by the shell.
                    448: See
                    449: .IR sh (1).
                    450: Although permitted, it is advisable to avoid the use of unprintable
                    451: characters in file names.
                    452: .SS "Path Name and Path Prefix"
                    453: A path name is a null-terminated character string
                    454: starting with an optional slash
                    455: .RB ( / ),
                    456: followed by
                    457: zero or more directory names separated by slashes, optionally followed
                    458: by a file name.
                    459: .PP
                    460: More precisely, a path name is a null-terminated character string
                    461: constructed as follows:
                    462: .PP
                    463: .RS
                    464: <path-name>::=<file-name>\(bv<path-prefix><file-name>|/
                    465: .br
                    466: <path-prefix>::=<rtprefix>\(bv/<rtprefix>
                    467: .br
                    468: <rtprefix>::=<dirname>/\(bv<rtprefix><dirname>/
                    469: .RE
                    470: .PP
                    471: where <file-name> is a string of 1 to 14
                    472: characters other than the
                    473: .SM ASCII
                    474: slash and null, and
                    475: <dirname> is a string of 1 to 14 characters
                    476: (other than the
                    477: .SM ASCII
                    478: slash and null)
                    479: that names a directory.
                    480: .PP
                    481: If a path name begins with a slash, the path search begins at the
                    482: .I root\^
                    483: directory.
                    484: Otherwise, the search begins from the current working directory.
                    485: .PP
                    486: A slash by itself names the root directory.
                    487: .PP
                    488: Unless specifically stated otherwise,
                    489: the null path name is treated as if it named
                    490: a non-existent file.
                    491: .SS Directory
                    492: .PP
                    493: Directory entries are called links.
                    494: By convention, a directory contains at least two links,
                    495: .B  .
                    496: and
                    497: .BR .. ,
                    498: referred to as
                    499: .I dot\^
                    500: and
                    501: .I dot-dot\^
                    502: respectively.
                    503: Dot refers to the directory itself and dot-dot refers to its parent
                    504: directory.
                    505: .SS "Root Directory and Current Working Directory"
                    506: Each process has associated with it a concept of a root directory and
                    507: a current working directory for the purpose of resolving path name searches.
                    508: The root directory of a process need not be the root directory of the root
                    509: file system.
                    510: .SS "File Access Permissions"
                    511: .PP
                    512: Read, write, and execute/search permissions on a file are
                    513: granted to a process if one or more of the following are true:
                    514: .IP
                    515: The effective user
                    516: .SM ID
                    517: of the process
                    518: is super-user.
                    519: .IP
                    520: The effective user
                    521: .SM ID
                    522: of the process
                    523: matches the user
                    524: .SM ID
                    525: of the owner of the file
                    526: and the appropriate access bit of the
                    527: ``owner'' portion (0700) of the file mode is set.
                    528: .IP
                    529: The effective user
                    530: .SM ID
                    531: of the process
                    532: does not match the user
                    533: .SM ID
                    534: of the owner of the file,
                    535: and the effective group
                    536: .SM ID
                    537: of the process
                    538: matches the group of the file and
                    539: the appropriate access bit of the ``group'' portion
                    540: (070) of the file mode is set.
                    541: .IP
                    542: The effective user
                    543: .SM ID
                    544: of the process
                    545: does not match the user
                    546: .SM ID
                    547: of the owner of the file,
                    548: and the effective group
                    549: .SM ID
                    550: of the process
                    551: does not match the group
                    552: .SM ID
                    553: of the file,
                    554: and the appropriate access bit of the ``other'' portion (07) of the
                    555: file mode is set.
                    556: .PP
                    557: Otherwise, the corresponding permissions are denied.
                    558: .SS "Message Queue Identifier"
                    559: A message queue identifier (msqid) is a unique positive integer created by a
                    560: .IR msgget (2)
                    561: system call.
                    562: Each msqid has a message queue and a data structure associated with it.
                    563: The data structure is referred to as
                    564: .I msqid_ds
                    565: and contains the following members:
                    566: .PP
                    567: .RS
                    568: .ta 8n 28n
                    569: .nf
                    570: struct ipc_perm msg_perm;      /\(** operation permission struct \(**/
                    571: ushort msg_cbytes;     /\(** current number of bytes on q \(**/
                    572: ushort msg_qnum;       /\(** number of msgs on q \(**/
                    573: ushort msg_qbytes;     /\(** max number of bytes on q \(**/
                    574: ushort msg_lspid;      /\(** pid of last msgsnd operation \(**/
                    575: ushort msg_lrpid;      /\(** pid of last msgrcv operation \(**/
                    576: time_t msg_stime;      /\(** last msgsnd time \(**/
                    577: time_t msg_rtime;      /\(** last msgrcv time \(**/
                    578: time_t msg_ctime;      /\(** last change time \(**/
                    579:                /\(** Times measured in secs since \(**/
                    580:                /\(** 00:00:00 \s-1GMT\s+1, Jan. 1, 1970 \(**/
                    581: .fi
                    582: .RE
                    583: .PP
                    584: .B Msg_perm
                    585: is an ipc_perm structure that
                    586: specifies the message operation permission (see below).
                    587: This structure includes the following members:
                    588: .PP
                    589: .RS
                    590: .ta 8n 20n
                    591: .nf
                    592: ushort cuid;   /\(** creator user id \(**/
                    593: ushort cgid;   /\(** creator group id \(**/
                    594: ushort uid;    /\(** user id \(**/
                    595: ushort gid;    /\(** group id \(**/
                    596: ushort mode;   /\(** r/w permission \(**/
                    597: .PP
                    598: .fi
                    599: .RE
                    600: .B Msg_cbytes
                    601: is the current number of bytes on the queue.
                    602: .B Msg_qnum
                    603: is the number of messages currently on the queue.
                    604: .B Msg_qbytes
                    605: is the maximum number of bytes allowed on the queue.
                    606: .B Msg_lspid
                    607: is the process id of the last process that performed a
                    608: .IR msgsnd " operation."
                    609: .B Msg_lrpid
                    610: is the process id of the last process that performed a
                    611: .IR msgrcv " operation."
                    612: .B Msg_stime
                    613: is the time of the last
                    614: .I msgsnd
                    615: operation,
                    616: .B msg_rtime
                    617: is the time of the last
                    618: .I msgrcv
                    619: operation, and
                    620: .B msg_ctime
                    621: is the time of the last
                    622: .IR msgctl (2)
                    623: operation that changed a member of the above structure.
                    624: .SS "Message Operation Permissions"
                    625: In the
                    626: .IR msgop "(2) and " msgctl (2)
                    627: system call descriptions, the permission required
                    628: for an operation is given as "{token}", where "token" is the type
                    629: of permission needed interpreted as follows:
                    630: .PP
                    631: .RS 0.75i
                    632: .PD 0
                    633: .TP 1.50i
                    634: 00400
                    635: Read by user
                    636: .TP
                    637: 00200
                    638: Write by user
                    639: .TP
                    640: 00060
                    641: Read, Write by group
                    642: .TP
                    643: 00006
                    644: Read, Write by others
                    645: .RE
                    646: .PD
                    647: .PP
                    648: Read and Write permissions on a msqid are
                    649: granted to a process if one or more of the following are true:
                    650: .IP
                    651: The effective user
                    652: .SM ID
                    653: of the process
                    654: is super-user.
                    655: .IP
                    656: The effective user
                    657: .SM ID
                    658: of the process
                    659: matches
                    660: .B msg_perm.[c]uid
                    661: in the data structure associated with
                    662: .I msqid
                    663: and the appropriate bit of the
                    664: ``user'' portion (0600) of
                    665: .B msg_perm.mode
                    666: is set.
                    667: .IP
                    668: The effective user
                    669: .SM ID
                    670: of the process
                    671: does not match
                    672: .B msg_perm.[c]uid
                    673: and the effective group
                    674: .SM ID
                    675: of the process
                    676: matches
                    677: .B msg_perm.[c]gid
                    678: and the appropriate bit of the ``group'' portion
                    679: (060) of
                    680: .B msg_perm.mode
                    681: is set.
                    682: .IP
                    683: The effective user
                    684: .SM ID
                    685: of the process
                    686: does not match
                    687: .B msg_perm.[c]uid
                    688: and the effective group
                    689: .SM ID
                    690: of the process
                    691: does not match
                    692: .B msg_perm.[c]gid
                    693: and the appropriate bit of the ``other'' portion (06) of
                    694: .B msg_perm.mode
                    695: is set.
                    696: .PP
                    697: Otherwise, the corresponding permissions are denied.
                    698: .SS "Semaphore Identifier"
                    699: A semaphore identifier (semid) is a unique positive integer created by a
                    700: .IR semget (2)
                    701: system call.
                    702: Each semid has a set of semaphores and a data structure associated with it.
                    703: The data structure is referred to as
                    704: .I semid_ds
                    705: and contains the following members:
                    706: .PP
                    707: .RS
                    708: .ta 8n 28n
                    709: .nf
                    710: struct ipc_perm sem_perm;      /\(** operation permission struct \(**/
                    711: ushort sem_nsems;      /\(** number of sems in set \(**/
                    712: time_t sem_otime;      /\(** last operation time \(**/
                    713: time_t sem_ctime;      /\(** last change time \(**/
                    714:                /\(** Times measured in secs since \(**/
                    715:                /\(** 00:00:00 \s-1GMT\s+1, Jan. 1, 1970 \(**/
                    716: .fi
                    717: .RE
                    718: .PP
                    719: .B Sem_perm
                    720: is an ipc_perm structure that
                    721: specifies the semaphore operation permission (see below).
                    722: This structure includes the following members:
                    723: .PP
                    724: .RS
                    725: .ta 8n 20n
                    726: .nf
                    727: ushort cuid;   /\(** creator user id \(**/
                    728: ushort cgid;   /\(** creator group id \(**/
                    729: ushort uid;    /\(** user id \(**/
                    730: ushort gid;    /\(** group id \(**/
                    731: ushort mode;   /\(** r/a permission \(**/
                    732: .PP
                    733: .fi
                    734: .RE
                    735: The value of
                    736: .B sem_nsems
                    737: is equal to the number of semaphores in the set.
                    738: Each semaphore in the set is referenced by a positive integer
                    739: referred to as a
                    740: .IR sem_num .
                    741: Sem_num values run sequentially from 0 to the value of sem_nsems minus 1.
                    742: .B Sem_otime
                    743: is the time of the last
                    744: .IR semop (2)
                    745: operation, and
                    746: .B sem_ctime
                    747: is the time of the last
                    748: .IR semctl (2)
                    749: operation that changed a member of the above structure.
                    750: .PP
                    751: A semaphore is a data structure that contains the following members:
                    752: .PP
                    753: .RS
                    754: .ta 8n 20n
                    755: .nf
                    756: ushort semval; /\(** semaphore value \(**/
                    757: short  sempid; /\(** pid of last operation  \(**/
                    758: ushort semncnt;        /\(** # awaiting semval > cval \(**/
                    759: ushort semzcnt;        /\(** # awaiting semval = 0 \(**/
                    760: .fi
                    761: .RE
                    762: .PP
                    763: .B Semval
                    764: is a non-negative integer.
                    765: .B Sempid
                    766: is equal to the process
                    767: .SM ID
                    768: of the last process that performed a semaphore operation on this semaphore.
                    769: .B Semncnt
                    770: is a count of the number of processes that are currently suspended
                    771: awaiting this semaphore's semval to become greater than its current value.
                    772: .B Semzcnt
                    773: is a count of the number of processes that are currently suspended
                    774: awaiting this semaphore's semval to become zero.
                    775: .SS "Semaphore Operation Permissions"
                    776: In the
                    777: .IR semop "(2) and " semctl (2)
                    778: system call descriptions, the permission required
                    779: for an operation is given as "{token}", where "token" is the type
                    780: of permission needed interpreted as follows:
                    781: .PP
                    782: .RS 0.75i
                    783: .PD 0
                    784: .TP 1.50i
                    785: 00400
                    786: Read by user
                    787: .TP
                    788: 00200
                    789: Alter by user
                    790: .TP
                    791: 00060
                    792: Read, Alter by group
                    793: .TP
                    794: 00006
                    795: Read, Alter by others
                    796: .RE
                    797: .PD
                    798: .PP
                    799: Read and Alter permissions on a semid are
                    800: granted to a process if one or more of the following are true:
                    801: .IP
                    802: The effective user
                    803: .SM ID
                    804: of the process
                    805: is super-user.
                    806: .IP
                    807: The effective user
                    808: .SM ID
                    809: of the process
                    810: matches
                    811: .B sem_perm.[c]uid
                    812: in the data structure associated with
                    813: .I semid
                    814: and the appropriate bit of the
                    815: ``user'' portion (0600) of
                    816: .B sem_perm.mode
                    817: is set.
                    818: .IP
                    819: The effective user
                    820: .SM ID
                    821: of the process
                    822: does not match
                    823: .B sem_perm.[c]uid
                    824: and the effective group
                    825: .SM ID
                    826: of the process
                    827: matches
                    828: .B sem_perm.[c]gid
                    829: and the appropriate bit of the ``group'' portion
                    830: (060) of
                    831: .B sem_perm.mode
                    832: is set.
                    833: .IP
                    834: The effective user
                    835: .SM ID
                    836: of the process
                    837: does not match
                    838: .B sem_perm.[c]uid
                    839: and the effective group
                    840: .SM ID
                    841: of the process
                    842: does not match
                    843: .B sem_perm.[c]gid
                    844: and the appropriate bit of the ``other'' portion (06) of
                    845: .B sem_perm.mode
                    846: is set.
                    847: .PP
                    848: Otherwise, the corresponding permissions are denied.
                    849: .SS "Shared Memory Identifier"
                    850: A shared memory identifier (shmid) is a unique positive integer created by a
                    851: .IR shmget (2)
                    852: system call.
                    853: Each shmid has a segment of memory (referred to as a shared memory segment)
                    854: and a data structure associated with it.
                    855: The data structure is referred to as
                    856: .I shmid_ds
                    857: and contains the following members:
                    858: .PP
                    859: .RS
                    860: .ta 8n 28n
                    861: .nf
                    862: struct ipc_perm shm_perm;      /\(** operation permission struct \(**/
                    863: int    shm_segsz;      /\(** size of segment \(**/
                    864: struct proc *shm_perm; /\(** address of linked proc \(**/
                    865: short  shm_pidx;       /\(** index of this segment \(**/
                    866: ushort shm_cpid;       /\(** creator pid \(**/
                    867: ushort shm_lpid;       /\(** pid of last operation \(**/
                    868: short  shm_cnattch;    /\(** number of loaded attaches \(**/
                    869: short  shm_nattch;     /\(** number of current attaches \(**/
                    870: time_t shm_atime;      /\(** last attach time \(**/
                    871: time_t shm_dtime;      /\(** last detach time \(**/
                    872: time_t shm_ctime;      /\(** last change time \(**/
                    873:                /\(** Times measured in secs since \(**/
                    874:                /\(** 00:00:00 \s-1GMT\s+1, Jan. 1, 1970 \(**/
                    875: .fi
                    876: .RE
                    877: .PP
                    878: .B Shm_perm
                    879: is an ipc_perm structure that
                    880: specifies the shared memory operation permission (see below).
                    881: This structure includes the following members:
                    882: .PP
                    883: .RS
                    884: .ta 8n 20n
                    885: .nf
                    886: ushort cuid;   /\(** creator user id \(**/
                    887: ushort cgid;   /\(** creator group id \(**/
                    888: ushort uid;    /\(** user id \(**/
                    889: ushort gid;    /\(** group id \(**/
                    890: ushort mode;   /\(** r/w permission \(**/
                    891: .PP
                    892: .fi
                    893: .RE
                    894: .B Shm_segsz
                    895: specifies the size of the shared memory segment.
                    896: .B Shm_proc
                    897: is the address of the first process linked to this segment.
                    898: .B Shm_pidx
                    899: is the index of this shared memory segment in the shared memory table belonging
                    900: to that process.
                    901: .B Shm_cpid
                    902: is the process id of the process that created the shared memory identifier.
                    903: .B Shm_lpid
                    904: is the process id of the last process that performed a
                    905: .IR shmop "(2) operation."
                    906: .B Shm_cnattch
                    907: is the number of in-core processes attached to this segment.
                    908: .B Shm_nattch
                    909: is the number of processes that currently have this segment attached.
                    910: .B Shm_atime
                    911: is the time of the last
                    912: .I shmat
                    913: operation,
                    914: .B shm_dtime
                    915: is the time of the last
                    916: .I shmdt
                    917: operation,
                    918: and
                    919: .B shm_ctime
                    920: is the time of the last
                    921: .IR shmctl (2)
                    922: operation that changed one of the members of the above structure.
                    923: .SS "Shared Memory Operation Permissions"
                    924: In the
                    925: .IR shmop "(2) and " shmctl (2)
                    926: system call descriptions, the permission required
                    927: for an operation is given as "{token}", where "token" is the type
                    928: of permission needed interpreted as follows:
                    929: .PP
                    930: .RS 0.75i
                    931: .PD 0
                    932: .TP 1.50i
                    933: 00400
                    934: Read by user
                    935: .TP
                    936: 00200
                    937: Write by user
                    938: .TP
                    939: 00060
                    940: Read, Write by group
                    941: .TP
                    942: 00006
                    943: Read, Write by others
                    944: .RE
                    945: .PD
                    946: .PP
                    947: Read and Write permissions on a shmid are
                    948: granted to a process if one or more of the following are true:
                    949: .IP
                    950: The effective user
                    951: .SM ID
                    952: of the process
                    953: is super-user.
                    954: .IP
                    955: The effective user
                    956: .SM ID
                    957: of the process
                    958: matches
                    959: .B shm_perm.[c]uid
                    960: in the data structure associated with
                    961: .I shmid
                    962: and the appropriate bit of the
                    963: ``user'' portion (0600) of
                    964: .B shm_perm.mode
                    965: is set.
                    966: .IP
                    967: The effective user
                    968: .SM ID
                    969: of the process
                    970: does not match
                    971: .B shm_perm.[c]uid
                    972: and the effective group
                    973: .SM ID
                    974: of the process
                    975: matches
                    976: .B shm_perm.[c]gid
                    977: and the appropriate bit of the ``group'' portion
                    978: (060) of
                    979: .B shm_perm.mode
                    980: is set.
                    981: .IP
                    982: The effective user
                    983: .SM ID
                    984: of the process
                    985: does not match
                    986: .B shm_perm.[c]uid
                    987: and the effective group
                    988: .SM ID
                    989: of the process
                    990: does not match
                    991: .B shm_perm.[c]gid
                    992: and the appropriate bit of the ``other'' portion (06) of
                    993: .B shm_perm.mode
                    994: is set.
                    995: .PP
                    996: Otherwise, the corresponding permissions are denied.
                    997: .SS "System Five Interfaces Library"
                    998: The following system calls constitute the system 5 interfaces library:
                    999: .PP
                   1000: .RS
                   1001: .IR msgctl ,
                   1002: .br
                   1003: .IR msgget ,
                   1004: .br
                   1005: .IR msgrcv ,
                   1006: .br
                   1007: .IR msgsnd ,
                   1008: .br
                   1009: .IR plock ,
                   1010: .br
                   1011: .IR semctl ,
                   1012: .br
                   1013: .IR semget ,
                   1014: .br
                   1015: .IR semop ,
                   1016: .br
                   1017: .IR shmat ,
                   1018: .br
                   1019: .IR shmctl ,
                   1020: .br
                   1021: .IR shmdt ,
                   1022: .br
                   1023: .IR shmget ,
                   1024: .br
                   1025: .IR ulimit ,
                   1026: .br
                   1027: .IR uname ,
                   1028: .br
                   1029: .IR ustat ,
                   1030: .RE
                   1031: .SH NOTES
                   1032: This manual page replaces the 4.2BSD manual page.
                   1033: .SH FILES
                   1034: .nf
                   1035: /usr/lib/libsys5.a     System Five Interfaces Library
                   1036: .fi
                   1037: .SH SEE ALSO
                   1038: close(2),
                   1039: ioctl(2),
                   1040: open(2),
                   1041: pipe(2),
                   1042: read(2),
                   1043: write(2),
                   1044: intro(3).
                   1045: .\"    @(#)intro.2     6.2 of 9/6/83

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.