summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJerry Jelinek <jerry.jelinek@joyent.com>2014-12-29 13:31:54 +0000
committerJerry Jelinek <jerry.jelinek@joyent.com>2014-12-29 13:31:54 +0000
commit86fbb9733f3c0871e08a1747a3ed626ca7188b48 (patch)
treea0de34ff4038043e72923bb6bd364ecf1ac480a1
parent16cde6d9844c2f8b23c3ec19745130a036c6f410 (diff)
parent1fcc078ae7c0a359a9274d2a5a90547aceb213a6 (diff)
downloadillumos-joyent-86fbb9733f3c0871e08a1747a3ed626ca7188b48.tar.gz
[illumos-gate merge]
commit 1fcc078ae7c0a359a9274d2a5a90547aceb213a6 5479 Need missing *at family manual pages commit d3864341aacc6a2ecc95960d23ac0e49f1f538fa 5478 need smt_pause(3C) commit ad0ef8fd06d1ac28108685495a9ba1244a20a5ca 5477 Need manual pages for new pthreads robust related functions commit b65dd972486b1f5913d705d2a0cb9c3fb189a9e0 5476 need manuals for getprogname(3C) and setprogname(3C) commit d2b9ba291ef0d1dc8807b6d46996674c723924d0 5475 Need manuals for get_nprocs() and get_nprocs_conf() commit bad51a906c423d0d7ab33fcc1a4e317d789e3c49 5474 missing various string family manuals commit e232d9863a8486cf94eaa4bc06c2e9ff52bf3140 5464 missing ffs() and fsl() family of manual pages commit ec7588a4ab9972aa7d50fd5f3b5ccdef4079952a 1372 kvmstat needs a man page commit 03c1ea085b2a65a7bf9c001ba8502eb10725ea52 5460 utimensat() and futimens() need manual pages commit 088940da40dfd58e4a00927addc99837dbefaa6d 3824 ppoll() needs a manpage commit f6ed5ca267d42d2a060f8447acdeb647ef077b6d 3825 memmem() needs a manpage 5459 libc(3lib) s/Solaris/illumos commit ce83b99835cc4643ab0fefd88dea62427d9ced5e 3826 fcloseall() needs a manpage commit 89b9271284be1a4e3e3053d7bc12f9bbf8145b06 3827 clearenv() needs a manpage commit 195b26986e3c19e916bf0991a1af7ae87d43010b 3841 strnstr() needs a man page commit f85a6f389e74896ee3d46e89d843dbd2dde60c6d 4617 condvar(9f): Missing documentation for cv_reltimedwait() and cv_reltimedwait_sig() 5458 Intro(9F) s/Solaris/illumos commit 820218f30a3ad84d92aa2970dcac9eb5cf69aaa9 3846 canonicalize_file_name() needs a man page commit 8b87c15576a5138f88a969448b43561bf5968c09 5485 Missing const qualifiers for strings in libndmp 5486 leaked buffer in ndmp_base64_decode() commit b6831eafa2ec2cb283f783b06ee86bf79d5a17c3 5432 zoneadm install could fix zonepath permissions automatically
-rw-r--r--usr/src/cmd/ndmpadm/ndmpadm_main.c8
-rw-r--r--usr/src/cmd/zoneadm/zoneadm.c23
-rw-r--r--usr/src/lib/libndmp/common/libndmp.h9
-rw-r--r--usr/src/lib/libndmp/common/libndmp_base64.c18
-rw-r--r--usr/src/lib/libndmp/common/libndmp_prop.c30
-rw-r--r--usr/src/man/man1/Makefile1
-rw-r--r--usr/src/man/man1/kvmstat.1118
-rw-r--r--usr/src/man/man1m/zoneadm.1m14
-rw-r--r--usr/src/man/man2/Makefile24
-rw-r--r--usr/src/man/man2/chmod.292
-rw-r--r--usr/src/man/man2/link.280
-rw-r--r--usr/src/man/man2/mkdir.261
-rw-r--r--usr/src/man/man2/mknod.250
-rw-r--r--usr/src/man/man2/open.247
-rw-r--r--usr/src/man/man2/poll.295
-rw-r--r--usr/src/man/man2/readlink.255
-rw-r--r--usr/src/man/man2/symlink.235
-rw-r--r--usr/src/man/man2/utimes.252
-rw-r--r--usr/src/man/man3c/Makefile53
-rw-r--r--usr/src/man/man3c/clearenv.3c64
-rw-r--r--usr/src/man/man3c/fclose.3c8
-rw-r--r--usr/src/man/man3c/fcloseall.3c53
-rw-r--r--usr/src/man/man3c/ffs.3c35
-rw-r--r--usr/src/man/man3c/fopen.3c9
-rw-r--r--usr/src/man/man3c/get_nprocs.3c59
-rw-r--r--usr/src/man/man3c/getprogname.3c77
-rw-r--r--usr/src/man/man3c/memory.3c20
-rw-r--r--usr/src/man/man3c/mkfifo.3c64
-rw-r--r--usr/src/man/man3c/pthread_mutex_consistent.3c87
-rw-r--r--usr/src/man/man3c/pthread_mutexattr_getrobust.3c120
-rw-r--r--usr/src/man/man3c/realpath.3c16
-rw-r--r--usr/src/man/man3c/smt_pause.3c38
-rw-r--r--usr/src/man/man3c/string.3c102
-rw-r--r--usr/src/man/man3c/unsetenv.3c10
-rw-r--r--usr/src/man/man3lib/libc.3lib54
-rw-r--r--usr/src/man/man9f/Intro.9f1200
-rw-r--r--usr/src/man/man9f/condvar.9f136
-rw-r--r--usr/src/pkg/manifests/SUNWcs.man1.inc1
-rw-r--r--usr/src/pkg/manifests/system-kernel.man2.inc9
-rw-r--r--usr/src/pkg/manifests/system-library.man3c.inc28
40 files changed, 2134 insertions, 921 deletions
diff --git a/usr/src/cmd/ndmpadm/ndmpadm_main.c b/usr/src/cmd/ndmpadm/ndmpadm_main.c
index ad06c2b4a0..4948283cb6 100644
--- a/usr/src/cmd/ndmpadm/ndmpadm_main.c
+++ b/usr/src/cmd/ndmpadm/ndmpadm_main.c
@@ -616,14 +616,14 @@ ndmp_enable_auth(int argc, char **argv, ndmp_command_t *cur_cmd)
if (strncmp(auth_type, ndmp_auth_table[i].auth_type,
strlen(ndmp_auth_table[i].auth_type)) == 0) {
auth_type_flag = 1;
- if ((ndmp_set_prop((char *)ndmp_auth_table[i].username,
+ if ((ndmp_set_prop(ndmp_auth_table[i].username,
username)) == -1) {
(void) fprintf(stdout,
gettext("Could not set username - %s\n"),
ndmp_strerror(ndmp_errno));
continue;
}
- if ((ndmp_set_prop((char *)ndmp_auth_table[i].password,
+ if ((ndmp_set_prop(ndmp_auth_table[i].password,
enc_password)) == -1) {
(void) fprintf(stdout,
gettext("Could not set password - %s\n"),
@@ -677,14 +677,14 @@ ndmp_disable_auth(int argc, char **argv, ndmp_command_t *cur_cmd)
if (strncmp(auth_type, ndmp_auth_table[i].auth_type,
strlen(ndmp_auth_table[i].auth_type)) == 0) {
auth_type_flag = 1;
- if ((ndmp_set_prop((char *)ndmp_auth_table[i].username,
+ if ((ndmp_set_prop(ndmp_auth_table[i].username,
"")) == -1) {
(void) fprintf(stdout,
gettext("Could not clear username - %s\n"),
ndmp_strerror(ndmp_errno));
continue;
}
- if ((ndmp_set_prop((char *)ndmp_auth_table[i].password,
+ if ((ndmp_set_prop(ndmp_auth_table[i].password,
"")) == -1) {
(void) fprintf(stdout,
gettext("Could not clear password - %s\n"),
diff --git a/usr/src/cmd/zoneadm/zoneadm.c b/usr/src/cmd/zoneadm/zoneadm.c
index 396fc91699..ab8016ede7 100644
--- a/usr/src/cmd/zoneadm/zoneadm.c
+++ b/usr/src/cmd/zoneadm/zoneadm.c
@@ -1036,6 +1036,18 @@ validate_zonepath(char *path, int cmd_num)
(void) fprintf(stderr, gettext("%s is not owned by root.\n"),
rpath);
err = B_TRUE;
+
+ /* Try to change owner */
+ if (cmd_num != CMD_VERIFY) {
+ (void) fprintf(stderr, gettext("%s: changing owner "
+ "to root.\n"), rpath);
+ if (chown(rpath, 0, -1) != 0) {
+ zperror(rpath, B_FALSE);
+ return (Z_ERR);
+ } else {
+ err = B_FALSE;
+ }
+ }
}
err |= bad_mode_bit(stbuf.st_mode, S_IRUSR, B_TRUE, rpath);
err |= bad_mode_bit(stbuf.st_mode, S_IWUSR, B_TRUE, rpath);
@@ -1047,6 +1059,17 @@ validate_zonepath(char *path, int cmd_num)
err |= bad_mode_bit(stbuf.st_mode, S_IWOTH, B_FALSE, rpath);
err |= bad_mode_bit(stbuf.st_mode, S_IXOTH, B_FALSE, rpath);
+ /* If the group perms are wrong, fix them */
+ if (err && (cmd_num != CMD_VERIFY)) {
+ (void) fprintf(stderr, gettext("%s: changing permissions "
+ "to 0700.\n"), rpath);
+ if (chmod(rpath, S_IRWXU) != 0) {
+ zperror(path, B_FALSE);
+ } else {
+ err = B_FALSE;
+ }
+ }
+
(void) snprintf(ppath, sizeof (ppath), "%s/..", path);
if ((res = resolvepath(ppath, rppath, sizeof (rppath))) == -1) {
zperror(ppath, B_FALSE);
diff --git a/usr/src/lib/libndmp/common/libndmp.h b/usr/src/lib/libndmp/common/libndmp.h
index 2a85462809..b4f064ace6 100644
--- a/usr/src/lib/libndmp/common/libndmp.h
+++ b/usr/src/lib/libndmp/common/libndmp.h
@@ -37,6 +37,7 @@
*/
/* Copyright (c) 2007, The Storage Networking Industry Association. */
/* Copyright (c) 1996, 1997 PDC, Network Appliance. All Rights Reserved */
+/* Copyright 2014 Nexenta Systems, Inc. All rights reserved. */
#ifndef _LIBNDMP_H
#define _LIBNDMP_H
@@ -347,11 +348,11 @@ extern int ndmp_terminate_session(int);
extern int ndmp_set_dbglevel(int);
extern const char *ndmp_strerror(int);
extern int ndmp_door_status(void);
-extern int ndmp_get_prop(char *, char **);
-extern int ndmp_set_prop(char *, char *);
+extern int ndmp_get_prop(const char *, char **);
+extern int ndmp_set_prop(const char *, const char *);
extern int ndmp_service_refresh(void);
-extern char *ndmp_base64_encode(char *);
-extern char *ndmp_base64_decode(char *);
+extern char *ndmp_base64_encode(const char *);
+extern char *ndmp_base64_decode(const char *);
extern ndmp_door_ctx_t *ndmp_door_decode_start(char *, int);
extern int ndmp_door_decode_finish(ndmp_door_ctx_t *);
extern ndmp_door_ctx_t *ndmp_door_encode_start(char *, int);
diff --git a/usr/src/lib/libndmp/common/libndmp_base64.c b/usr/src/lib/libndmp/common/libndmp_base64.c
index c3d537da49..0e0aad576d 100644
--- a/usr/src/lib/libndmp/common/libndmp_base64.c
+++ b/usr/src/lib/libndmp/common/libndmp_base64.c
@@ -36,6 +36,7 @@
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
* POSSIBILITY OF SUCH DAMAGE.
*/
+/* Copyright 2014 Nexenta Systems, Inc. All rights reserved. */
#include <stdio.h>
#include <sys/types.h>
@@ -47,9 +48,6 @@
#define NDMP_ENC_LEN 1024
#define NDMP_DEC_LEN 256
-char *ndmp_base64_encode(char *);
-char *ndmp_base64_decode(char *);
-
static boolean_t ndmp_is_base64(unsigned char);
static char *b64_data =
@@ -61,9 +59,9 @@ ndmp_is_base64(unsigned char c)
return (isalnum(c) || (c == '+') || (c == '/'));
}
-/* caller should use the encloded string and then free the string. */
+/* caller should use the encoded string and then free the string. */
char *
-ndmp_base64_encode(char *str_to_encode)
+ndmp_base64_encode(const char *str_to_encode)
{
int ret_cnt = 0;
int i = 0, j = 0;
@@ -115,7 +113,7 @@ ndmp_base64_encode(char *str_to_encode)
}
char *
-ndmp_base64_decode(char *encoded_str)
+ndmp_base64_decode(const char *encoded_str)
{
int len = strlen(encoded_str);
int i = 0, j = 0;
@@ -136,8 +134,10 @@ ndmp_base64_decode(char *encoded_str)
en_ind++;
if (i == 4) {
for (i = 0; i < 4; i++) {
- if ((p = strchr(b64_data, arr_4[i])) == NULL)
+ if ((p = strchr(b64_data, arr_4[i])) == NULL) {
+ free(ret);
return (NULL);
+ }
arr_4[i] = (int)(p - b64_data);
}
@@ -161,8 +161,10 @@ ndmp_base64_decode(char *encoded_str)
arr_4[j] = 0;
for (j = 0; j < 4; j++) {
- if ((p = strchr(b64_data, arr_4[j])) == NULL)
+ if ((p = strchr(b64_data, arr_4[j])) == NULL) {
+ free(ret);
return (NULL);
+ }
arr_4[j] = (int)(p - b64_data);
}
diff --git a/usr/src/lib/libndmp/common/libndmp_prop.c b/usr/src/lib/libndmp/common/libndmp_prop.c
index b0142d9a4c..f29aadb4a2 100644
--- a/usr/src/lib/libndmp/common/libndmp_prop.c
+++ b/usr/src/lib/libndmp/common/libndmp_prop.c
@@ -75,15 +75,17 @@ typedef struct ndmp_scfhandle {
} ndmp_scfhandle_t;
static int ndmp_config_saveenv(ndmp_scfhandle_t *);
-static ndmp_scfhandle_t *ndmp_smf_scf_init(char *);
+static ndmp_scfhandle_t *ndmp_smf_scf_init(const char *);
static void ndmp_smf_scf_fini(ndmp_scfhandle_t *);
static int ndmp_smf_start_transaction(ndmp_scfhandle_t *);
static int ndmp_smf_end_transaction(ndmp_scfhandle_t *);
-static int ndmp_smf_set_property(ndmp_scfhandle_t *, char *, char *);
-static int ndmp_smf_get_property(ndmp_scfhandle_t *, char *, char *, size_t);
-static int ndmp_smf_create_service_pgroup(ndmp_scfhandle_t *, char *);
-static int ndmp_smf_delete_property(ndmp_scfhandle_t *, char *);
-static int ndmp_smf_get_pg_name(ndmp_scfhandle_t *, char *, char **);
+static int ndmp_smf_set_property(ndmp_scfhandle_t *, const char *,
+ const char *);
+static int ndmp_smf_get_property(ndmp_scfhandle_t *, const char *, char *,
+ size_t);
+static int ndmp_smf_create_service_pgroup(ndmp_scfhandle_t *, const char *);
+static int ndmp_smf_delete_property(ndmp_scfhandle_t *, const char *);
+static int ndmp_smf_get_pg_name(ndmp_scfhandle_t *, const char *, char **);
/*
* This routine send a refresh signal to ndmpd service which cause ndmpd
@@ -105,7 +107,7 @@ ndmp_service_refresh(void)
* defined otherwise it would be NULL.
*/
int
-ndmp_get_prop(char *prop, char **value)
+ndmp_get_prop(const char *prop, char **value)
{
ndmp_scfhandle_t *handle = NULL;
char *lval = (char *)malloc(NDMP_PROP_LEN);
@@ -141,7 +143,7 @@ ndmp_get_prop(char *prop, char **value)
}
int
-ndmp_set_prop(char *env, char *env_val)
+ndmp_set_prop(const char *env, const char *env_val)
{
ndmp_scfhandle_t *handle = NULL;
char *pgname;
@@ -176,7 +178,7 @@ ndmp_set_prop(char *env, char *env_val)
}
static int
-ndmp_smf_get_pg_name(ndmp_scfhandle_t *h, char *pname, char **pgname)
+ndmp_smf_get_pg_name(ndmp_scfhandle_t *h, const char *pname, char **pgname)
{
scf_value_t *value;
scf_property_t *prop;
@@ -250,7 +252,7 @@ ndmp_smf_scf_fini(ndmp_scfhandle_t *handle)
* ndmp_scfhandle_t pointer if success.
*/
static ndmp_scfhandle_t *
-ndmp_smf_scf_init(char *svc_name)
+ndmp_smf_scf_init(const char *svc_name)
{
ndmp_scfhandle_t *handle;
@@ -301,7 +303,7 @@ err:
* Create a new property group at service level.
*/
static int
-ndmp_smf_create_service_pgroup(ndmp_scfhandle_t *handle, char *pgroup)
+ndmp_smf_create_service_pgroup(ndmp_scfhandle_t *handle, const char *pgroup)
{
int err;
@@ -397,7 +399,7 @@ ndmp_smf_end_transaction(ndmp_scfhandle_t *handle)
* Deletes property in current pg
*/
static int
-ndmp_smf_delete_property(ndmp_scfhandle_t *handle, char *propname)
+ndmp_smf_delete_property(ndmp_scfhandle_t *handle, const char *propname)
{
scf_transaction_entry_t *entry = NULL;
@@ -430,7 +432,7 @@ ndmp_smf_delete_property(ndmp_scfhandle_t *handle, char *propname)
*/
static int
ndmp_smf_set_property(ndmp_scfhandle_t *handle,
- char *propname, char *valstr)
+ const char *propname, const char *valstr)
{
int ret = 0;
scf_value_t *value = NULL;
@@ -516,7 +518,7 @@ ndmp_smf_set_property(ndmp_scfhandle_t *handle,
* memory allocated.
*/
static int
-ndmp_smf_get_property(ndmp_scfhandle_t *handle, char *propname,
+ndmp_smf_get_property(ndmp_scfhandle_t *handle, const char *propname,
char *valstr, size_t sz)
{
int ret = 0;
diff --git a/usr/src/man/man1/Makefile b/usr/src/man/man1/Makefile
index 35bcebb71a..b3a6091f93 100644
--- a/usr/src/man/man1/Makefile
+++ b/usr/src/man/man1/Makefile
@@ -183,6 +183,7 @@ MANFILES= acctcom.1 \
krb5-config.1 \
ksh93.1 \
ktutil.1 \
+ kvmstat.1 \
lari.1 \
last.1 \
lastcomm.1 \
diff --git a/usr/src/man/man1/kvmstat.1 b/usr/src/man/man1/kvmstat.1
new file mode 100644
index 0000000000..b0a6afdc17
--- /dev/null
+++ b/usr/src/man/man1/kvmstat.1
@@ -0,0 +1,118 @@
+.\"
+.\" This file and its contents are supplied under the terms of the
+.\" Common Development and Distribution License ("CDDL"), version 1.0.
+.\" You may only use this file in accordance with the terms of version
+.\" 1.0 of the CDDL.
+.\"
+.\" A full copy of the text of the CDDL should have accompanied this
+.\" source. A copy of the CDDL is also available via the Internet at
+.\" http://www.illumos.org/license/CDDL.
+.\"
+.\"
+.\" Copyright (c) 2014, Joyent, Inc.
+.\"
+.Dd Dec 20, 2014
+.Dt KVMSTAT 1
+.Os
+.Sh NAME
+.Nm kvmstat
+.Nd report KVM statistics
+.Sh SYNOPSIS
+.Nm kvmstat
+.Oo
+.Ar interval
+.Op Ar count
+.Oc
+.Sh DESCRIPTION
+.Nm
+reports the activity of running KVM virtual machines and their exit activity,
+injected interrupts, emulations, and more, on a per virtual CPU basis.
+.Lp
+.Nm
+should be used when trying to get a rough sense of guest activity from the
+hypervisor's perspective, and allows one to understand from a low-level
+perspective, what kind of activity is going on inside of the virtual machine. In
+addition,
+.Nm
+is useful for diagnosing reports of pathological or faulty behavior inside of
+guests. While there is no expected range of values for the fields displayed as
+that varies with the use of virtual machines, if all of the virtual CPUs for a
+given virtual machine are consistently zero, then that may indicate that a
+problem has occurred, for example, a panic inside of the guest or a bug in the
+hypervisor.
+.Lp
+If no operands are specified, then
+.Nm
+will display statistics every second until the program is terminated.
+.Ss Output Fields
+Every
+.Ar interval
+.Nm
+will report data with the following fields:
+.Bl -tag -width Ds
+.It Nm pid
+Identifier of the process controlling the virtual CPU.
+.It Nm vcpu
+Virtual CPU identifier relative to its virtual machine.
+.It Nm exits
+Count of all virtual machine exits for the virtual CPU over
+.Ar interval .
+.It Nm haltx
+Count of virtual machine exits due to the guest executing the
+.Sy HLT
+instruction for the virtual CPU over
+.Ar interval .
+.It Nm irqx
+Count of virtual machine exits due to a pending external interrupt arriving
+on the physical CPU that the virtual CPU was actively running on over
+.Ar interval .
+.It Nm irqwx
+Count of virtual machine exits due to an open interrupt window on the
+virtual CPU over
+.Ar interval .
+.It Nm iox
+Count of virtual machine exits due to the execution of an I/O instruction,
+such as
+.Sy inb ,
+on the virtual CPU over
+.Ar interval .
+.It Nm mmiox
+Count of virtual machine exits due to performing memory mapped I/O on the
+virtual CPU over
+.Ar interval .
+.It Nm irqs
+Count of interrupts injected into the virtual CPU over
+.Ar interval .
+.It Nm emul
+Count of instructions the hypervisor had to emulate on behalf of the guest
+virtual CPU over
+.Ar interval .
+.It Nm eptv
+Count of extended page table violations serviced on the virtual CPU over
+.Ar interval .
+.El
+.Sh OPERANDS
+The following operands are supported:
+.Bl -hang -width Ds
+.It Ar count
+.Bd -filled -compact
+Specifies the number of times that the statistics are repeated. If not
+specified,
+.Nm
+will continue until it is terminated.
+.Ed
+.It Ar interval
+.Bd -filled -compact
+Specifies the number of seconds between reports of statistics. If not specified,
+reports are generated every second.
+.Ed
+.El
+.Sh STABILITY
+The arguments are
+.Sy committed ,
+while the output format is
+.Sy Not an interface .
+.Sh SEE ALSO
+.Xr iostat 1M ,
+.Xr mpstat 1M ,
+.Xr attributes 5
diff --git a/usr/src/man/man1m/zoneadm.1m b/usr/src/man/man1m/zoneadm.1m
index 0a60d5f345..f7aafb809c 100644
--- a/usr/src/man/man1m/zoneadm.1m
+++ b/usr/src/man/man1m/zoneadm.1m
@@ -5,7 +5,7 @@
.\" The contents of this file are subject to the terms of the Common Development and Distribution License (the "License"). You may not use this file except in compliance with the License.
.\" You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE or http://www.opensolaris.org/os/licensing. See the License for the specific language governing permissions and limitations under the License.
.\" When distributing Covered Code, include this CDDL HEADER in each file and include the License file at usr/src/OPENSOLARIS.LICENSE. If applicable, add the following below this CDDL HEADER, with the fields enclosed by brackets "[]" replaced with your own identifying information: Portions Copyright [yyyy] [name of copyright owner]
-.TH ZONEADM 1M "Oct 30, 2013"
+.TH ZONEADM 1M "Dec 26, 2014"
.SH NAME
zoneadm \- administer zones
.SH SYNOPSIS
@@ -27,17 +27,14 @@ zoneadm \- administer zones
.fi
.SH DESCRIPTION
-.sp
.LP
The \fBzoneadm\fR utility is used to administer system zones. A zone is an
application container that is maintained by the operating system runtime.
.SH SECURITY
-.sp
.LP
Once a process has been placed in a zone other than zone \fB0\fR, the process
or any of its children cannot change zones.
.SH OPTIONS
-.sp
.LP
The following options are supported:
.sp
@@ -75,7 +72,6 @@ String identifier for a zone.
.RE
.SH SUBCOMMANDS
-.sp
.LP
Subcommands which can result in destructive actions or loss of work have a
\fB-F\fR flag to force the action. If input is from a terminal device, the user
@@ -295,8 +291,8 @@ Display general help. If you specify \fIsubcommand\fR, displays help on
.sp .6
.RS 4n
Install the specified zone on the system. This subcommand automatically
-attempts to verify first. It refuses to install if the verify step fails. See
-the \fBverify\fR subcommand.
+attempts to verify first, most verification errors are fatal. See the
+\fBverify\fR subcommand.
.sp
.ne 2
.na
@@ -619,7 +615,6 @@ The following command illustrates the use of the \fB-s\fR option.
.sp
.SH EXIT STATUS
-.sp
.LP
The following exit values are returned:
.sp
@@ -653,7 +648,6 @@ Invalid usage.
.RE
.SH ATTRIBUTES
-.sp
.LP
See \fBattributes\fR(5) for descriptions of the following attributes:
.sp
@@ -669,7 +663,6 @@ Interface Stability Committed
.TE
.SH SEE ALSO
-.sp
.LP
\fBread\fR(1), \fBsvcs\fR(1), \fBzlogin\fR(1), \fBzonename\fR(1),
\fBinit\fR(1M), \fBkernel\fR(1M), \fBsvcadm\fR(1M), \fBsvc.startd\fR(1M),
@@ -677,7 +670,6 @@ Interface Stability Committed
\fBattributes\fR(5), \fBbrands\fR(5), \fBnative\fR(5), \fBsmf\fR(5),
\fBzones\fR(5)
.SH NOTES
-.sp
.LP
The \fBzones\fR(5) service is managed by the service management facility,
\fBsmf\fR(5), under the service identifier:
diff --git a/usr/src/man/man2/Makefile b/usr/src/man/man2/Makefile
index 99d78384ae..2e5c7a51e6 100644
--- a/usr/src/man/man2/Makefile
+++ b/usr/src/man/man2/Makefile
@@ -183,6 +183,7 @@ MANLINKS= _Exit.2 \
facl.2 \
fchdir.2 \
fchmod.2 \
+ fchmodat.2 \
fchown.2 \
fchownat.2 \
fchroot.2 \
@@ -195,6 +196,7 @@ MANLINKS= _Exit.2 \
fstatat.2 \
fstatvfs.2 \
futimesat.2 \
+ futimens.2 \
getaudit_addr.2 \
getegid.2 \
geteuid.2 \
@@ -208,10 +210,14 @@ MANLINKS= _Exit.2 \
gettaskid.2 \
intro.2 \
lchown.2 \
+ linkat.2 \
lstat.2 \
+ mkdirat.2 \
+ mknodat.2 \
openat.2 \
pathconf.2 \
pipe2.2 \
+ ppoll.2 \
pread.2 \
pset_assign.2 \
pset_destroy.2 \
@@ -219,6 +225,7 @@ MANLINKS= _Exit.2 \
putacct.2 \
putpmsg.2 \
pwrite.2 \
+ readlinkat.2 \
readv.2 \
renameat.2 \
sbrk.2 \
@@ -239,8 +246,10 @@ MANLINKS= _Exit.2 \
shmat.2 \
shmdt.2 \
sigsendset.2 \
+ symlinkat.2 \
umount2.2 \
unlinkat.2 \
+ utimensat.2 \
vforkx.2 \
wracct.2 \
writev.2
@@ -270,6 +279,7 @@ sbrk.2 := LINKSRC = brk.2
fchdir.2 := LINKSRC = chdir.2
fchmod.2 := LINKSRC = chmod.2
+fchmodat.2 := LINKSRC = chmod.2
fchown.2 := LINKSRC = chown.2
fchownat.2 := LINKSRC = chown.2
@@ -329,10 +339,18 @@ getgid.2 := LINKSRC = getuid.2
setustack.2 := LINKSRC = getustack.2
+linkat.2 := LINKSRC = link.2
+
+mkdirat.2 := LINKSRC = mkdir.2
+
+mknodat.2 := LINKSRC = mknod.2
+
openat.2 := LINKSRC = open.2
pipe2.2 := LINKSRC = pipe.2
+ppoll.2 := LINKSRC = poll.2
+
pset_assign.2 := LINKSRC = pset_create.2
pset_destroy.2 := LINKSRC = pset_create.2
@@ -343,6 +361,8 @@ putpmsg.2 := LINKSRC = putmsg.2
pread.2 := LINKSRC = read.2
readv.2 := LINKSRC = read.2
+readlinkat.2 := LINKSRC = readlink.2
+
renameat.2 := LINKSRC = rename.2
semtimedop.2 := LINKSRC = semop.2
@@ -361,6 +381,8 @@ shmdt.2 := LINKSRC = shmop.2
sigsendset.2 := LINKSRC = sigsend.2
+symlinkat.2 := LINKSRC = symlink.2
+
fstat.2 := LINKSRC = stat.2
fstatat.2 := LINKSRC = stat.2
lstat.2 := LINKSRC = stat.2
@@ -371,7 +393,9 @@ umount2.2 := LINKSRC = umount.2
unlinkat.2 := LINKSRC = unlink.2
+futimens.2 := LINKSRC = utimes.2
futimesat.2 := LINKSRC = utimes.2
+utimensat.2 := LINKSRC = utimes.2
vforkx.2 := LINKSRC = vfork.2
diff --git a/usr/src/man/man2/chmod.2 b/usr/src/man/man2/chmod.2
index cecd79a1e7..30734fa468 100644
--- a/usr/src/man/man2/chmod.2
+++ b/usr/src/man/man2/chmod.2
@@ -1,5 +1,6 @@
'\" te
.\" Copyright (c) 2005, Sun Microsystems, Inc. All Rights Reserved.
+.\" Copyright (c) 2014, Joyent, Inc.
.\" Copyright 1989 AT&T.
.\" Portions Copyright (c) 2001, the Institute of Electrical and Electronics Engineers, Inc. and The Open Group. All Rights Reserved.
.\" Sun Microsystems, Inc. gratefully acknowledges The Open Group for permission to reproduce portions of its copyrighted documentation. Original documentation from The Open Group can be obtained online at
@@ -9,9 +10,9 @@
.\" The contents of this file are subject to the terms of the Common Development and Distribution License (the "License"). You may not use this file except in compliance with the License.
.\" You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE or http://www.opensolaris.org/os/licensing. See the License for the specific language governing permissions and limitations under the License.
.\" When distributing Covered Code, include this CDDL HEADER in each file and include the License file at usr/src/OPENSOLARIS.LICENSE. If applicable, add the following below this CDDL HEADER, with the fields enclosed by brackets "[]" replaced with your own identifying information: Portions Copyright [yyyy] [name of copyright owner]
-.TH CHMOD 2 "Sep 12, 2005"
+.TH CHMOD 2 "Dec 22, 2014"
.SH NAME
-chmod, fchmod \- change access permission mode of file
+chmod, fchmod, fchmodat \- change access permission mode of file
.SH SYNOPSIS
.LP
.nf
@@ -26,13 +27,17 @@ chmod, fchmod \- change access permission mode of file
\fBint\fR \fBfchmod\fR(\fBint\fR \fIfildes\fR, \fBmode_t\fR \fImode\fR);
.fi
+.LP
+.nf
+\fBint\fR \fBfchmodat\fR(\fBint\fR \fIfildes\fR, \fBconst char *\fR\fIpath\fR, \fBmode_t\fR \fImode\fR, \fBint\fR \fIflag\fR);
+.fi
+
.SH DESCRIPTION
-.sp
.LP
-The \fBchmod()\fR and \fBfchmod()\fR functions set the access permission
-portion of the mode of the file whose name is given by \fIpath\fR or referenced
-by the open file descriptor \fIfildes\fR to the bit pattern contained in
-\fImode\fR. Access permission bits are interpreted as follows:
+The \fBchmod()\fR, \fBfchmod()\fR, and \fBfchmodat()\fR functions set the access
+permission portion of the mode of the file whose name is given by \fIpath\fR or
+referenced by the open file descriptor \fIfildes\fR to the bit pattern contained
+in \fImode\fR. Access permission bits are interpreted as follows:
.sp
.sp
@@ -142,18 +147,27 @@ system name space with \fBfattach\fR(3C), the \fBfchmod()\fR call performs no
action and returns successfully.
.sp
.LP
-Upon successful completion, \fBchmod()\fR and \fBfchmod()\fR mark for update
-the \fBst_ctime\fR field of the file.
-.SH RETURN VALUES
+The \fBfchmodat()\fR function behaves similarly to \fBchmod()\fR, except when
+\fIpath\fR is a relative path, it is resolved relative to the directory
+specified by \fIfiledes\fR. If \fBfiledes\fR has the value \fBAT_FDCWD\fR, then
+\fBpath\fR will be resolved relative to the current working directory. The
+argument \fIflag\fR should be zero, but may include the value
+\fBAT_SYMLINK_NOFOLLOW\fR, which indicates that if \fIpath\fR refers to a
+symbolic link, then permissions should be changed on the symbolic link itself.
+However, changing permissions of symbolic links is not supported on illumos, and
+will result in an error.
.sp
.LP
+Upon successful completion, \fBchmod()\fR, \fBfchmod()\fR, \fBfchmodat()\fR mark
+for update the \fBst_ctime\fR field of the file.
+.SH RETURN VALUES
+.LP
Upon successful completion, \fB0\fR is returned. Otherwise, \fB\(mi1\fR is
returned, the file mode is unchanged, and \fBerrno\fR is set to indicate the
error.
.SH ERRORS
-.sp
.LP
-The \fBchmod()\fR and \fBfchmod()\fR functions will fail if:
+The \fBchmod()\fR, \fBfchmod()\fR, and \fBfchmodat()\fR functions will fail if:
.sp
.ne 2
.na
@@ -183,14 +197,15 @@ apply. See \fBprivileges\fR(5).
.sp
.LP
-The \fBchmod()\fR function will fail if:
+The \fBchmod()\fR and \fBfchmodat()\fR functions will fail if:
.sp
.ne 2
.na
\fB\fBEACCES\fR\fR
.ad
.RS 16n
-Search permission is denied on a component of the path prefix of \fIpath\fR.
+Search permission is denied on a component of the path prefix of \fIpath\fR and
+for \fBfchmodat()\fR, \fBfiledes\fR was not opened with \fBO_SEARCH\fR requsted.
The privilege {\fBFILE_DAC_SEARCH\fR} overrides file permissions restrictions
in that case.
.RE
@@ -317,7 +332,49 @@ The value of the \fImode\fR argument is invalid.
.sp
.LP
-The \fBchmod()\fR function may fail if:
+The \fBfchmodat()\fR will fail if:
+.sp
+.ne 2
+.na
+.B EBADF
+.ad
+.RS 16n
+The argument \fIpath\fR is a relative path and \fIfiledes\fR is not an open file
+descriptor or the value \fBAT_FDCWD\fR.
+.RE
+
+.sp
+.ne 2
+.na
+.B EINVAL
+.ad
+.RS 16n
+The argument \fIflags\fR has a non-zero value other than
+\fBAT_SYMLINK_NOFOLLOW\fR.
+.RE
+
+.sp
+.ne 2
+.na
+.B ENOTDIR
+.ad
+.RS 16n
+The argument \fIpath\fR is a relative path and \fIfiledes\fR is a valid file
+descriptor which does not refer to a file.
+.RE
+
+.sp
+.ne 2
+.na
+.B EOPNOTSUPP
+.ad
+.RS 16n
+The \fBAT_SYMLINK_NOFOLLOW\fR bit is set in the \fIflags\fR argument.
+.RE
+
+.sp
+.LP
+The \fBchmod()\fR and \fBfchmodat()\fR functions may fail if:
.sp
.ne 2
.na
@@ -334,7 +391,7 @@ resolution of the \fIpath\fR argument.
\fB\fBENAMETOOLONG\fR\fR
.ad
.RS 16n
-As a result of encountering a symbolic link in resolution of the\fIpath\fR
+As a result of encountering a symbolic link in resolution of the \fIpath\fR
argument, the length of the substituted pathname strings exceeds
{\fBPATH_MAX\fR}.
.RE
@@ -425,7 +482,6 @@ status = stat("home/cnd/mod1", &buffer;);
.in -2
.SH USAGE
-.sp
.LP
If \fBchmod()\fR or \fBfchmod()\fR is used to change the file group owner
permissions on a file with non-trivial ACL entries, only the ACL mask is set to
@@ -435,7 +491,6 @@ one whose meaning cannot be represented in the file's mode field alone. The new
ACL mask permissions might change the effective permissions for additional
users and groups that have ACL entries on the file.
.SH ATTRIBUTES
-.sp
.LP
See \fBattributes\fR(5) for descriptions of the following attributes:
.sp
@@ -453,7 +508,6 @@ MT-Level Async-Signal-Safe
.TE
.SH SEE ALSO
-.sp
.LP
\fBchmod\fR(1), \fBchown\fR(2), \fBcreat\fR(2), \fBfcntl\fR(2), \fBmknod\fR(2),
\fBopen\fR(2), \fBread\fR(2), \fBrename\fR(2), \fBstat\fR(2), \fBwrite\fR(2),
diff --git a/usr/src/man/man2/link.2 b/usr/src/man/man2/link.2
index 479c1fe202..b9cb8fb288 100644
--- a/usr/src/man/man2/link.2
+++ b/usr/src/man/man2/link.2
@@ -1,12 +1,13 @@
'\" te
.\" Copyright (c) 2007, Sun Microsystems, Inc. All Rights Reserved.
+.\" Copyright (c) 2014, Joyent, Inc.
.\" Copyright 1989 AT&T
.\" The contents of this file are subject to the terms of the Common Development and Distribution License (the "License"). You may not use this file except in compliance with the License.
.\" You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE or http://www.opensolaris.org/os/licensing. See the License for the specific language governing permissions and limitations under the License.
.\" When distributing Covered Code, include this CDDL HEADER in each file and include the License file at usr/src/OPENSOLARIS.LICENSE. If applicable, add the following below this CDDL HEADER, with the fields enclosed by brackets "[]" replaced with your own identifying information: Portions Copyright [yyyy] [name of copyright owner]
.TH LINK 2 "May 18, 2007"
.SH NAME
-link \- link to a file
+link, linkat \- link to a file
.SH SYNOPSIS
.LP
.nf
@@ -14,14 +15,19 @@ link \- link to a file
\fBint\fR \fBlink\fR(\fBconst char *\fR\fIexisting\fR, \fBconst char *\fR\fInew\fR);
.fi
+.LP
+.nf
+\fBint\fR \fBlinkat\fR(\fBint\fR \fIefd\fR, \fBconst char *\fR\fIexisting\fR, \fBint\fR \fInfd\fR,
+ \fBconst char *\fR\fInew\fR, \fBint\fR \fIflag\fR);
+.fi
.SH DESCRIPTION
-.sp
.LP
-The \fBlink()\fR function creates a new link (directory entry) for the existing
-file and increments its link count by one. The \fIexisting\fR argument points
-to a path name naming an existing file. The \fInew\fR argument points to a
-pathname naming the new directory entry to be created.
+The \fBlink()\fR and \fBlinkat()\fR functions create a new link (directory
+entry) for the existing file and increments its link count by one. The
+\fIexisting\fR argument points to a path name naming an existing file. The
+\fInew\fR argument points to a pathname naming the new directory entry to be
+created.
.sp
.LP
To create hard links, both files must be on the same file system. Both the old
@@ -30,18 +36,29 @@ Privileged processes can make multiple links to a directory. Unless the caller
is privileged, the file named by \fIexisting\fR must not be a directory.
.sp
.LP
-Upon successful completion, \fBlink()\fR marks for update the \fBst_ctime\fR
-field of the file. Also, the \fBst_ctime\fR and \fBst_mtime\fR fields of the
-directory that contains the new entry are marked for update.
-.SH RETURN VALUES
+The \fBlinkat()\fR function is similar to \fBlink()\fR. If the path
+\fIexisting\fR is a relative path, then the directory represented by \fIefd\fR
+will be used as the starting point to resolve \fIexisting\fR. If the path
+\fInew\fR is a relative path, then the directory represented by \fInfd\fR will
+be used as the starting point to resolve \fInew\fR. Both \fIefd\fR and \fInfd\fR
+may be the special value \fBAT_FDCWD\fR which causes the current working
+directory to be used as the starting point for path resolution.
.sp
.LP
+By default, \fBlinkat()\fR does not follow symbolic links. To cause it to follow
+symbolic links, the value of \fIflag\fR should be \fBAT_SYMLINK_FOLLOW\fR.
+.sp
+.LP
+Upon successful completion, \fBlink()\fR and \fBlinkat()\fR mark for update the
+\fBst_ctime\fR field of the file. Also, the \fBst_ctime\fR and \fBst_mtime\fR
+fields of the directory that contains the new entry are marked for update.
+.SH RETURN VALUES
+.LP
Upon successful completion, \fB0\fR is returned. Otherwise, \fB\(mi1\fR is
returned, no link is created, and \fBerrno\fR is set to indicate the error.
.SH ERRORS
-.sp
.LP
-The \fBlink()\fR function will fail if:
+The \fBlink()\fR and \fBlinkat()\fR functions will fail if:
.sp
.ne 2
.na
@@ -97,7 +114,8 @@ file names where all characters are part of the UTF-8 character codeset.
\fB\fBEINTR\fR\fR
.ad
.RS 16n
-A signal was caught during the execution of the \fBlink()\fR function.
+A signal was caught during the execution of the \fBlink()\fR or \fBlinkat()\fR
+functions.
.RE
.sp
@@ -202,9 +220,42 @@ The link named by \fInew\fR and the file named by \fIexisting\fR are on
different logical devices (file systems).
.RE
-.SH ATTRIBUTES
.sp
.LP
+The \fBlinkat()\fR functions will fail if:
+.sp
+.ne 2
+.na
+.B EBADF
+.ad
+.RS 16n
+If either \fIexisting\fR or \fInew\fR is a relative path and \fIefd\fR or
+\fInfd\fR respectively are not a valid file descriptor or the value
+\fBAT_FDCWD\fR.
+.RE
+
+.sp
+.ne 2
+.na
+.B EINVAL
+.ad
+.RS 16n
+An invalid value is set in \fIflag\fR. The only valid values are \fB0\fR and
+\fBfBAT_SYMLINK_FOLLOW\fR.
+.RE
+
+.sp
+.ne 2
+.na
+.B ENOTDIR
+.ad
+.RS 16n
+If either \fIexisting\fR or \fInew\fR is a relative path and \fIefd\fR or
+\fInfd\fR respectively refer to a valid descriptor which is not a directory.
+.RE
+
+.SH ATTRIBUTES
+.LP
See \fBattributes\fR(5) for descriptions of the following attributes:
.sp
@@ -221,7 +272,6 @@ MT-Level Async-Signal-Safe
.TE
.SH SEE ALSO
-.sp
.LP
\fBsymlink\fR(2), \fBunlink\fR(2), \fBattributes\fR(5), \fBprivileges\fR(5),
\fBstandards\fR(5)
diff --git a/usr/src/man/man2/mkdir.2 b/usr/src/man/man2/mkdir.2
index 6649c96c7d..902c3fd8d2 100644
--- a/usr/src/man/man2/mkdir.2
+++ b/usr/src/man/man2/mkdir.2
@@ -1,5 +1,6 @@
'\" te
.\" Copyright (c) 2007, Sun Microsystems, Inc. All Rights Reserved.
+.\" Copyright (c) 2014, Joyent, Inc.
.\" Copyright 1989 AT&T
.\" Portions Copyright (c) 2001, the Institute of Electrical and Electronics Engineers, Inc. and The Open Group. All Rights Reserved.
.\" Sun Microsystems, Inc. gratefully acknowledges The Open Group for permission to reproduce portions of its copyrighted documentation. Original documentation from The Open Group can be obtained online at
@@ -9,9 +10,9 @@
.\" The contents of this file are subject to the terms of the Common Development and Distribution License (the "License"). You may not use this file except in compliance with the License.
.\" You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE or http://www.opensolaris.org/os/licensing. See the License for the specific language governing permissions and limitations under the License.
.\" When distributing Covered Code, include this CDDL HEADER in each file and include the License file at usr/src/OPENSOLARIS.LICENSE. If applicable, add the following below this CDDL HEADER, with the fields enclosed by brackets "[]" replaced with your own identifying information: Portions Copyright [yyyy] [name of copyright owner]
-.TH MKDIR 2 "May 18, 2007"
+.TH MKDIR 2 "Dec 23, 2014"
.SH NAME
-mkdir \- make a directory
+mkdir, mkdirat \- make a directory
.SH SYNOPSIS
.LP
.nf
@@ -20,15 +21,18 @@ mkdir \- make a directory
\fBint\fR \fBmkdir\fR(\fBconst char *\fR\fIpath\fR, \fBmode_t\fR \fImode\fR);
.fi
+.LP
+.nf
+\fBint\fR \fBmkdirat\fR(\fBint\fR \fIfd\fR, \fBconst char *\fR\fIpath\fR, \fBmode_t\fR \fImode\fR);
+.fi
.SH DESCRIPTION
-.sp
.LP
-The \fBmkdir()\fR function creates a new directory named by the path name
-pointed to by \fIpath\fR. The mode of the new directory is initialized from
-\fImode\fR (see \fBchmod\fR(2) for values of mode). The protection part of the
-\fImode\fR argument is modified by the process's file creation mask (see
-\fBumask\fR(2)).
+The \fBmkdir()\fR and \fBmkidrat()\fR functions create a new directory named by
+the path name pointed to by \fIpath\fR. The mode of the new directory is
+initialized from \fImode\fR (see \fBchmod\fR(2) for values of mode). The
+protection part of the \fImode\fR argument is modified by the process's file
+creation mask (see \fBumask\fR(2)).
.sp
.LP
The directory's owner \fBID\fR is set to the process's effective user ID. The
@@ -38,28 +42,32 @@ of the directory is inherited from the parent. The \fBS_ISGID\fR bit of the
new directory is inherited from the parent directory.
.sp
.LP
-If \fIpath\fR names a symbolic link, \fBmkdir()\fR fails and sets errno to
-\fBEEXIST\fR.
+If \fIpath\fR names a symbolic link, \fBmkdir()\fR and \fBmkdirat()\fR fail and
+set errno to \fBEEXIST\fR.
.sp
.LP
The newly created directory is empty with the exception of entries for itself
(\fB\&.\fR) and its parent directory (\fB\&..\fR).
.sp
.LP
-Upon successful completion, \fBmkdir()\fR marks for update the \fBst_atime\fR,
-\fBst_ctime\fR and \fBst_mtime\fR fields of the directory. Also, the
-\fBst_ctime\fR and \fBst_mtime\fR fields of the directory that contains the new
-entry are marked for update.
-.SH RETURN VALUES
+The \fBmkdirat()\fR function behaves similarly to \fBmkdir()\fR; however, if
+\fIpath\fR is a relative path, then the directory represented by \fBfd\fR is
+used as the starting point for resolving \fIpath\fR. To use the processes
+current working directory, \fIfd\fR may be set to the value \fBAT_FDCWD\fR.
.sp
.LP
+Upon successful completion, \fBmkdir()\fR and \fBmkdirat()\fR mark for update
+the \fBst_atime\fR, \fBst_ctime\fR and \fBst_mtime\fR fields of the directory.
+Also, the \fBst_ctime\fR and \fBst_mtime\fR fields of the directory that
+contains the new entry are marked for update.
+.SH RETURN VALUES
+.LP
Upon successful completion, \fB0\fR is returned. Otherwise, \fB\(mi1\fR is
returned, no directory is created, and \fBerrno\fR is set to indicate the
error.
.SH ERRORS
-.sp
.LP
-The \fBmkdir()\fR function will fail if:
+The \fBmkdir()\fR and \fBmkdirat()\fR functions will fail if:
.sp
.ne 2
.na
@@ -193,7 +201,9 @@ No free space is available on the device containing the directory.
\fB\fBENOTDIR\fR\fR
.ad
.RS 16n
-A component of the path prefix is not a directory.
+A component of the path prefix is not a directory. For \fBlinkat()\fR, if
+\fIpath\fR is a relative path and \fIfd\fR refers to a valid file descriptor
+which is not a directory.
.RE
.sp
@@ -207,6 +217,19 @@ The path prefix resides on a read-only file system.
.sp
.LP
+The \fBmkdirat()\fR function will fail if:
+.sp
+.ne 2
+.na
+.B EBADF
+.ad
+.RS 16n
+The path \fIpath\fR is a relative path and \fIfd\fR is not a valid open file
+descriptor or the value \fBAT_FDCWD\fR.
+.RE
+
+.sp
+.LP
The \fBmkdir()\fR function may fail if:
.sp
.ne 2
@@ -241,7 +264,6 @@ status = mkdir("/home/cnd/mod1",
.in -2
.SH ATTRIBUTES
-.sp
.LP
See \fBattributes\fR(5) for descriptions of the following attributes:
.sp
@@ -259,7 +281,6 @@ MT-Level Async-Signal-Safe
.TE
.SH SEE ALSO
-.sp
.LP
\fBchmod\fR(2), \fBmknod\fR(2), \fBumask\fR(2), \fBmkdirp\fR(3GEN),
\fBstat.h\fR(3HEAD), \fBattributes\fR(5), \fBstandards\fR(5)
diff --git a/usr/src/man/man2/mknod.2 b/usr/src/man/man2/mknod.2
index e50db4b73f..9d2378a66a 100644
--- a/usr/src/man/man2/mknod.2
+++ b/usr/src/man/man2/mknod.2
@@ -1,4 +1,5 @@
'\" te
+.\" Copright (c) 2014, Joyent, Inc.
.\" Copyright 1989 AT&T. Copyright (c) 2004 Sun Microsystems, Inc. All Rights Reserved. Portions Copyright (c) 1992, X/Open Company Limited. All Rights Reserved.
.\" Sun Microsystems, Inc. gratefully acknowledges The Open Group for permission to reproduce portions of its copyrighted documentation. Original documentation from The Open Group can be obtained online at
.\" http://www.opengroup.org/bookstore/.
@@ -9,7 +10,7 @@
.\" When distributing Covered Code, include this CDDL HEADER in each file and include the License file at usr/src/OPENSOLARIS.LICENSE. If applicable, add the following below this CDDL HEADER, with the fields enclosed by brackets "[]" replaced with your own identifying information: Portions Copyright [yyyy] [name of copyright owner]
.TH MKNOD 2 "Feb 19, 2004"
.SH NAME
-mknod \- make a directory, a special file, or a regular file
+mknod, mknodat \- make a directory, a special file, or a regular file
.SH SYNOPSIS
.LP
.nf
@@ -17,13 +18,16 @@ mknod \- make a directory, a special file, or a regular file
\fBint\fR \fBmknod\fR(\fBconst char *\fR\fIpath\fR, \fBmode_t\fR \fImode\fR, \fBdev_t\fR \fIdev\fR);
.fi
+.LP
+.nf
+\fBint\fR \fBmknodat(\fBint\fR \fIfd\fR, \fBconst char *\fR\fIpath\fR, \fBmode_t\fR \fImode\fR, \fBdev_t\fR \fIdev\fR);
+.fi
.SH DESCRIPTION
-.sp
.LP
-The \fBmknod()\fR function creates a new file named by the path name pointed to
-by \fIpath\fR. The file type and permissions of the new file are initialized
-from \fImode\fR.
+The \fBmknod()\fR and \fBmknodat()\fR function creates a new file named by the
+path name pointed to by \fIpath\fR. The file type and permissions of the new
+file are initialized from \fImode\fR.
.sp
.LP
The file type is specified in \fImode\fR by the \fBS_IFMT\fR bits, which must
@@ -126,16 +130,20 @@ or character special device, \fIdev\fR is ignored. See \fBmakedev\fR(3C).
.sp
.LP
If \fIpath\fR is a symbolic link, it is not followed.
-.SH RETURN VALUES
.sp
.LP
-Upon successful completion, \fBmknod()\fR returns \fB0\fR. Otherwise, it
-returns \fB\(mi1\fR, the new file is not created, and \fBerrno\fR is set to
-indicate the error.
+The \fBmknodat()\fR function is similar to \fBmknod()\fR; however, when
+\fIpath\fR is a relative path, it is resolved starting at the directory
+represented by the file descriptor \fIfd\fR. To start at the current working
+directory, \fIfd\fR may be set to the special value \fBAT_FDCWD\fR.
+.SH RETURN VALUES
+.LP
+Upon successful completion, \fBmknod()\fR and \fBmknodat()\fR return \fB0\fR.
+Otherwise, they return \fB\(mi1\fR, the new file is not created, and \fBerrno\fR
+is set to indicate the error.
.SH ERRORS
-.sp
.LP
-The \fBmknod()\fR function will fail if:
+The \fBmknod()\fR and \fBmknodat()\fR functions will fail if:
.sp
.ne 2
.na
@@ -259,7 +267,9 @@ system is out of file allocation resources.
\fB\fBENOTDIR\fR\fR
.ad
.RS 16n
-A component of the path prefix is not a directory.
+A component of the path prefix is not a directory. In addition, when calling
+\fBmknodat()\fR, if \fIpath\fR is a relative path and \fIfd\fR is a valid file
+descriptor which does not refer to a directory.
.RE
.sp
@@ -283,6 +293,19 @@ system.
.sp
.LP
+The \fBmknodat()\fR function will fail if:
+.sp
+.ne 2
+.na
+.B EBADF
+.ad
+.RS 16n
+The \fIpath\fR argument is a relative path and \fIfd\fR is not a valid open file
+descriptor or the special value \fBAT_FDCWD\fR.
+.RE
+
+.sp
+.LP
The \fBmknod()\fR function may fail if:
.sp
.ne 2
@@ -295,7 +318,6 @@ length exceeds {\fBPATH_MAX\fR}.
.RE
.SH USAGE
-.sp
.LP
Applications should use the \fBmkdir\fR(2) function to create a directory
because appropriate permissions are not required and because \fBmknod()\fR
@@ -310,7 +332,6 @@ system using \fBfattach\fR(3C). Symbolic links can be created using
\fBsymlink\fR(2). An endpoint for communication can be created using
\fBsocket\fR(3SOCKET).
.SH ATTRIBUTES
-.sp
.LP
See \fBattributes\fR(5) for descriptions of the following attributes:
.sp
@@ -328,7 +349,6 @@ MT-Level Async-Signal-Safe
.TE
.SH SEE ALSO
-.sp
.LP
\fBchmod\fR(2), \fBcreat\fR(2), \fBexec\fR(2), \fBmkdir\fR(2), \fBopen\fR(2),
\fBstat\fR(2), \fBsymlink\fR(2), \fBumask\fR(2), \fBdoor_create\fR(3C),
diff --git a/usr/src/man/man2/open.2 b/usr/src/man/man2/open.2
index 461bcb2742..0978f5a3e5 100644
--- a/usr/src/man/man2/open.2
+++ b/usr/src/man/man2/open.2
@@ -10,7 +10,7 @@
.\" The contents of this file are subject to the terms of the Common Development and Distribution License (the "License"). You may not use this file except in compliance with the License.
.\" You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE or http://www.opensolaris.org/os/licensing. See the License for the specific language governing permissions and limitations under the License.
.\" When distributing Covered Code, include this CDDL HEADER in each file and include the License file at usr/src/OPENSOLARIS.LICENSE. If applicable, add the following below this CDDL HEADER, with the fields enclosed by brackets "[]" replaced with your own identifying information: Portions Copyright [yyyy] [name of copyright owner]
-.TH OPEN 2 "Nov 16, 2013"
+.TH OPEN 2 "Dec 23, 2014"
.SH NAME
open, openat \- open a file
.SH SYNOPSIS
@@ -30,7 +30,6 @@ open, openat \- open a file
.fi
.SH DESCRIPTION
-.sp
.LP
The \fBopen()\fR function establishes the connection between a file and a file
descriptor. It creates an open file description that refers to a file and a
@@ -168,6 +167,19 @@ regardless of the contents of the symbolic link. If \fBO_EXCL\fR is set and
.sp
.ne 2
.na
+.B O_EXEC
+.na
+.ad
+.sp .6
+.RS 4n
+If set, indicates that the file should be opened for execute permission.
+This option is only valid for regular files, an error will be returned
+if it is not.
+.RE
+
+.sp
+.ne 2
+.na
\fB\fBO_LARGEFILE\fR\fR
.ad
.sp .6
@@ -296,6 +308,18 @@ file integrity completion.
.sp
.ne 2
.na
+.B O_SEARCH
+.ad
+.sp .6
+.RS 4n
+If set, indicates that the directory should be opened for searching.
+This option is only valid for a directory, an error will be returned if
+it is not.
+.RE
+
+.sp
+.ne 2
+.na
\fB\fBO_SYNC\fR\fR
.ad
.sp .6
@@ -420,14 +444,12 @@ Certain flag values can be set following \fBopen()\fR as described in
The largest value that can be represented correctly in an object of type
\fBoff_t\fR is established as the offset maximum in the open file description.
.SH RETURN VALUES
-.sp
.LP
Upon successful completion, the \fBopen()\fR function opens the file and return
a non-negative integer representing the lowest numbered unused file descriptor.
Otherwise, \fB\(mi1\fR is returned, \fBerrno\fR is set to indicate the error,
and no files are created or modified.
.SH ERRORS
-.sp
.LP
The \fBopen()\fR and \fBopenat()\fR functions will fail if:
.sp
@@ -632,6 +654,16 @@ The \fBO_CREAT\fR flag is not set and the named file does not exist; or the
.sp
.ne 2
.na
+.B ENOEXEC
+.ad
+.RS 16n
+The \fBO_EXEC\fR flag is set and \fIpath\fR does not point to a regular
+file.
+.RE
+
+.sp
+.ne 2
+.na
\fB\fBENOLINK\fR\fR
.ad
.RS 16n
@@ -676,7 +708,8 @@ The device specified by \fIpath\fR does not support the open operation.
.RS 16n
A component of the path prefix is not a directory or a relative path was
supplied to \fBopenat()\fR, the \fBO_XATTR\fR flag was not supplied, and the
-file descriptor does not refer to a directory.
+file descriptor does not refer to a directory. The \fBO_SEARCH\fR flag
+was passed and \fIpath\fR does not refer to a directory.
.RE
.sp
@@ -877,13 +910,11 @@ if ((pfd = open(filename, O_WRONLY | O_CREAT | O_TRUNC,
.in -2
.SH USAGE
-.sp
.LP
The \fBopen()\fR function has a transitional interface for 64-bit file offsets.
See \fBlf64\fR(5). Note that using \fBopen64()\fR is equivalent to using
\fBopen()\fR with \fBO_LARGEFILE\fR set in \fIoflag\fR.
.SH ATTRIBUTES
-.sp
.LP
See \fBattributes\fR(5) for descriptions of the following attributes:
.sp
@@ -903,7 +934,6 @@ Standard For \fBopen()\fR, see \fBstandards\fR(5).
.TE
.SH SEE ALSO
-.sp
.LP
\fBIntro\fR(2), \fBchmod\fR(2), \fBclose\fR(2), \fBcreat\fR(2), \fBdup\fR(2),
\fBexec\fR(2), \fBfcntl\fR(2), \fBgetmsg\fR(2), \fBgetrlimit\fR(2),
@@ -912,7 +942,6 @@ Standard For \fBopen()\fR, see \fBstandards\fR(5).
\fBunlockpt\fR(3C), \fBattributes\fR(5), \fBlf64\fR(5), \fBprivileges\fR(5),
\fBstandards\fR(5), \fBconnld\fR(7M), \fBstreamio\fR(7I)
.SH NOTES
-.sp
.LP
Hierarchical Storage Management (HSM) file systems can sometimes cause long
delays when opening a file, since HSM files must be recalled from secondary
diff --git a/usr/src/man/man2/poll.2 b/usr/src/man/man2/poll.2
index f91d8b017d..1617d02451 100644
--- a/usr/src/man/man2/poll.2
+++ b/usr/src/man/man2/poll.2
@@ -1,4 +1,5 @@
'\" te
+.\" Copyright (c) 2014, Joyent, Inc.
.\" Copyright 1989 AT&T Copyright (c) 2001, Sun Microsystems, Inc. All Rights Reserved Portions Copyright (c) 1992, X/Open Company Limited All Rights Reserved
.\" Sun Microsystems, Inc. gratefully acknowledges The Open Group for permission to reproduce portions of its copyrighted documentation. Original documentation from The Open Group can be obtained online at
.\" http://www.opengroup.org/bookstore/.
@@ -16,18 +17,41 @@ poll \- input/output multiplexing
#include <poll.h>
\fBint\fR \fBpoll\fR(\fBstruct pollfd\fR \fIfds[]\fR, \fBnfds_t\fR \fInfds\fR, \fBint\fR \fItimeout\fR);
+
+\fBint\fR \fBppoll\fR(\fBstruct pollfd *restrict\fR \fIfds\fR, \fBnfds_t\fR \fInfds\fR,
+ \fBconst struct timespec *restrict\fR \fItsp\fR, \fBconst sigset_t *restrict\fR \fIsigmask\fR);
.fi
.SH DESCRIPTION
+.LP
+The \fBpoll()\fR and \fBppoll()\fR functions provides applications with a
+mechanism for multiplexing input/output over a set of file descriptors. For
+each member of the array pointed to by \fIfds\fR, \fBpoll()\fR and \fBppoll()\fR
+examine the given file descriptor for the event(s) specified in \fIevents\fR.
+The number of \fBpollfd\fR structures in the \fIfds\fR array is specified by
+\fInfds\fR. The \fBpoll()\fR and \fBppoll()\fR functions identify those file
+descriptors on which an application can read or write data, or on which certain
+events have occurred.
.sp
.LP
-The \fBpoll()\fR function provides applications with a mechanism for
-multiplexing input/output over a set of file descriptors. For each member of
-the array pointed to by \fIfds\fR, \fBpoll()\fR examines the given file
-descriptor for the event(s) specified in \fIevents\fR. The number of
-\fBpollfd\fR structures in the \fIfds\fR array is specified by \fInfds\fR. The
-\fBpoll()\fR function identifies those file descriptors on which an application
-can read or write data, or on which certain events have occurred.
+The \fBppoll()\fR function behaves identically to \fBpoll()\fR, except as follows:
+.RS +4
+.TP
+.ie t \(bu
+.el o
+For the \fBppoll\fR function, the timeout period is given in seconds and
+nanoseconds in an argument of type \fBstruct timespec\fR, where as \fBpoll()\fR
+takes a timeout in milliseconds in the form of an integer argument.
+.RE
+.RS +4
+.TP
+.ie t \(bu
+.el o
+The \fBppoll()\fR function takes an optional \fIsigmask\fR argument. When a
+non-\fBNULL\fR pointer is passed, the calling threads signal mask is replaced by
+the one specified in \fIsigset\fR before examining file descriptors, and
+restored before returning.
+.RE
.sp
.LP
The \fIfds\fR argument specifies the file descriptors to be examined and the
@@ -152,35 +176,36 @@ valid in the \fBrevents\fR member; it is not used in the \fBevents\fR member.
.sp
.LP
If the value \fBfd\fR is less than 0, \fBevents\fR is ignored and \fBrevents\fR
-is set to 0 in that entry on return from \fBpoll()\fR.
+is set to 0 in that entry on return from \fBpoll()\fR and \fBppoll()\fR.
.sp
.LP
-The results of the \fBpoll()\fR query are stored in the \fBrevents\fR member in
-the \fBpollfd\fR structure. Bits are set in the \fBrevents\fR bitmask to
-indicate which of the requested events are true. If none are true, none of the
-specified bits are set in \fBrevents\fR when the \fBpoll()\fR call returns. The
-event flags \fBPOLLHUP\fR, \fBPOLLERR\fR, and \fBPOLLNVAL\fR are always set
-in \fBrevents\fR if the conditions they indicate are true; this occurs even
-though these flags were not present in \fBevents\fR.
+The results of the \fBpoll()\fR or \fBppoll()\fR query are stored in the
+\fBrevents\fR member in the \fBpollfd\fR structure. Bits are set in the
+\fBrevents\fR bitmask to indicate which of the requested events are true. If
+none are true, none of the specified bits are set in \fBrevents\fR when either
+the \fBpoll()\fR or \fBppoll()\fR call returns. The event flags \fBPOLLHUP\fR,
+\fBPOLLERR\fR, and \fBPOLLNVAL\fR are always set in \fBrevents\fR if the
+conditions they indicate are true; this occurs even though these flags were not
+present in \fBevents\fR.
.sp
.LP
If none of the defined events have occurred on any selected file descriptor,
-\fBpoll()\fR waits at least \fItimeout\fR milliseconds for an event to occur on
-any of the selected file descriptors. On a computer where millisecond timing
-accuracy is not available, \fItimeout\fR is rounded up to the nearest legal
-value available on that system. If the value \fItimeout\fR is 0, \fBpoll()\fR
-returns immediately. If the value of \fItimeout\fR is \(mi1, \fBpoll()\fR
-blocks until a requested event occurs or until the call is interrupted. The
-\fBpoll()\fR function is not affected by the \fBO_NDELAY\fR and
-\fBO_NONBLOCK\fR flags.
-.sp
-.LP
-The \fBpoll()\fR function supports regular files, terminal and pseudo-terminal
-devices, streams-based files, FIFOs and pipes. The behavior of \fBpoll()\fR on
-elements of \fIfds\fR that refer to other types of file is unspecified.
+\fBpoll()\fR and \fBppoll()\fR wait at least \fItimeout\fR milliseconds for an
+event to occur on any of the selected file descriptors. On a computer where
+millisecond timing accuracy is not available, \fItimeout\fR is rounded up to the
+nearest legal value available on that system. If the value \fItimeout\fR is 0,
+\fBpoll()\fR returns immediately. If the value of \fItimeout\fR is \(mi1,
+\fBpoll()\fR blocks until a requested event occurs or until the call is
+interrupted. If the value of \fBtsp\fR is \fBNULL\fR, then \fBppoll()\fR blocks
+until a requested event occurs or until the call is interrupted. The
+\fBpoll()\fR and \fBppoll()\fR functions are not affected by the \fBO_NDELAY\fR
+and \fBO_NONBLOCK\fR flags.
.sp
.LP
-The \fBpoll()\fR function supports sockets.
+The \fBpoll()\fR and \fBppoll()\fR functions support regular files, terminal and
+pseudo-terminal devices, streams-based files, FIFOs, pipes, and sockets. The
+behavior of \fBpoll()\fR and \fBppoll()\fR on elements of \fIfds\fR that refer
+to other types of file is unspecified.
.sp
.LP
A file descriptor for a socket that is listening for connections will indicate
@@ -189,9 +214,9 @@ descriptor for a socket that is connecting asynchronously will indicate that it
is ready for writing, once a connection has been established.
.sp
.LP
-Regular files always \fBpoll()\fR \fBTRUE\fR for reading and writing.
+Regular files always \fBpoll()\fR and \fBppoll()\fR \fBTRUE\fR for reading and
+writing.
.SH RETURN VALUES
-.sp
.LP
Upon successful completion, a non-negative value is returned. A positive value
indicates the total number of file descriptors that has been selected (that is,
@@ -200,9 +225,8 @@ file descriptors for which the \fBrevents\fR member is non-zero). A value of
selected. Upon failure, \fB\(mi1\fR is returned and \fBerrno\fR is set to
indicate the error.
.SH ERRORS
-.sp
.LP
-The \fBpoll()\fR function will fail if:
+The \fBpoll()\fR and \fBppoll()\fR functions will fail if:
.sp
.ne 2
.na
@@ -228,7 +252,7 @@ Some argument points to an illegal address.
\fB\fBEINTR\fR\fR
.ad
.RS 10n
-A signal was caught during the \fBpoll()\fR function.
+A signal was caught during the \fBpoll()\fR or \fBppoll()\fR function.
.RE
.sp
@@ -243,7 +267,6 @@ indirectly) downstream from a multiplexer.
.RE
.SH ATTRIBUTES
-.sp
.LP
See \fBattributes\fR(5) for descriptions of the following attributes:
.sp
@@ -259,7 +282,6 @@ Interface Stability Standard
.TE
.SH SEE ALSO
-.sp
.LP
\fBIntro\fR(2), \fBgetmsg\fR(2), \fBgetrlimit\fR(2), \fBputmsg\fR(2),
\fBread\fR(2), \fBwrite\fR(2), \fBselect\fR(3C), \fBattributes\fR(5),
@@ -268,7 +290,6 @@ Interface Stability Standard
.LP
\fISTREAMS Programming Guide\fR
.SH NOTES
-.sp
.LP
Non-STREAMS drivers use \fBchpoll\fR(9E) to implement \fBpoll()\fR on these
devices.
diff --git a/usr/src/man/man2/readlink.2 b/usr/src/man/man2/readlink.2
index 1cc3d38181..2240be79c0 100644
--- a/usr/src/man/man2/readlink.2
+++ b/usr/src/man/man2/readlink.2
@@ -1,4 +1,5 @@
'\" te
+.\" Copyright (c) 2014, Joyent, Inc.
.\" Copyright 1989 AT&T. Copyright (c) 2002, Sun Microsystems, Inc. All Rights Reserved. Portions Copyright (c) 1992, X/Open Company Limited. All Rights Reserved.
.\" Sun Microsystems, Inc. gratefully acknowledges The Open Group for permission to reproduce portions of its copyrighted documentation. Original documentation from The Open Group can be obtained online at
.\" http://www.opengroup.org/bookstore/.
@@ -7,7 +8,7 @@
.\" The contents of this file are subject to the terms of the Common Development and Distribution License (the "License"). You may not use this file except in compliance with the License.
.\" You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE or http://www.opensolaris.org/os/licensing. See the License for the specific language governing permissions and limitations under the License.
.\" When distributing Covered Code, include this CDDL HEADER in each file and include the License file at usr/src/OPENSOLARIS.LICENSE. If applicable, add the following below this CDDL HEADER, with the fields enclosed by brackets "[]" replaced with your own identifying information: Portions Copyright [yyyy] [name of copyright owner]
-.TH READLINK 2 "Dec 1, 2003"
+.TH READLINK 2 "Dec 23, 2014"
.SH NAME
readlink \- read the contents of a symbolic link
.SH SYNOPSIS
@@ -18,26 +19,34 @@ readlink \- read the contents of a symbolic link
\fBssize_t\fR \fBreadlink\fR(\fBconst char *restrict\fR \fIpath\fR,
\fBchar *restrict\fR \fIbuf\fR, \fBsize_t\fR \fIbufsiz\fR);
.fi
+.LP
+.nf
+\fBssize_t\fR \fBreadlinkat\fR(\fBint\fR \fIfd\fR, \fBconst char *restrict\fR \fIpath\fR,
+ \fBchar *restrict\fR \fIbuf\fR, \fBsize_t\fR \fIbufsiz\fR);
+.fi
.SH DESCRIPTION
+.LP
+The \fBreadlink()\fR and \fBreadlinkat()\fR functions place the contents of the
+symbolic link referred to by \fIpath\fR in the buffer \fIbuf\fR which has size
+\fIbufsiz\fR. If the number of bytes in the symbolic link is less than
+\fIbufsiz\fR, the contents of the remainder of \fIbuf\fR are left unchanged. If
+the \fIbuf\fR argument is not large enough to contain the link content, the
+first \fIbufsize\fR bytes are placed in \fIbuf\fR.
.sp
.LP
-The \fBreadlink()\fR function places the contents of the symbolic link referred
-to by \fIpath\fR in the buffer \fIbuf\fR which has size \fIbufsiz\fR. If the
-number of bytes in the symbolic link is less than \fIbufsiz\fR, the contents of
-the remainder of \fIbuf\fR are left unchanged. If the \fIbuf\fR argument is not
-large enough to contain the link content, the first \fIbufsize\fR bytes are
-placed in \fIbuf\fR.
+The \fBrealinkat()\fR function behaves similarly to \fBreadlink()\fR; however,
+when \fIpath\fR is a relative path, it is resolved relative to the directory
+referred to by \fIfd\fR. To use the current working directory, \fIfd\fR should
+be the special value \fBAT_FDCWD\fR.
.SH RETURN VALUES
-.sp
.LP
-Upon successful completion, \fBreadlink()\fR returns the count of bytes placed
-in the buffer. Otherwise, it returns \fB\(mi1\fR, leaves the buffer
-unchanged, and sets \fBerrno\fR to indicate the error.
+Upon successful completion, \fBreadlink()\fR and \fBreadlinkat()\fR return the
+count of bytes placed in the buffer. Otherwise, they returns \fB\(mi1\fR, leave
+the buffer unchanged, and set \fBerrno\fR to indicate the error.
.SH ERRORS
-.sp
.LP
-The \fBreadlink()\fR function will fail if:
+The \fBreadlink()\fR and \fBreadlinkat()\fR functions will fail if:
.sp
.ne 2
.na
@@ -110,7 +119,9 @@ longer than {\fBNAME_MAX\fR} while \fB_POSIX_NO_TRUNC\fR is in effect.
\fB\fBENOTDIR\fR\fR
.ad
.RS 16n
-A component of the path prefix is not a directory.
+A component of the path prefix is not a directory. For \fBreadlinkat()\fR, if
+\fIpath\fR is a relative path and \fIfd\fR refers to a valid file descriptor
+which is not a directory.
.RE
.sp
@@ -124,6 +135,19 @@ The file system does not support symbolic links.
.sp
.LP
+The \fBreadlinkat()\fR function will fail if:
+.sp
+.ne 2
+.na
+.B EBADF
+.ad
+.RS 16n
+The \fIpath\fR argument is a relative path and \fIfd\fR is not a valid, open
+file descriptor or the special value \fBAT_FDCWD\fR.
+.RE
+
+.sp
+.LP
The \fBreadlink()\fR function may fail if:
.sp
.ne 2
@@ -155,12 +179,10 @@ the length of the substituted pathname string exceeded {\fBPATH_MAX\fR}.
.RE
.SH USAGE
-.sp
.LP
Portable applications should not assume that the returned contents of the
symbolic link are null-terminated.
.SH ATTRIBUTES
-.sp
.LP
See \fBattributes\fR(5) for descriptions of the following attributes:
.sp
@@ -178,6 +200,5 @@ MT-Level Async-Signal-Safe
.TE
.SH SEE ALSO
-.sp
.LP
\fBstat\fR(2), \fBsymlink\fR(2), \fBattributes\fR(5), \fBstandards\fR(5)
diff --git a/usr/src/man/man2/symlink.2 b/usr/src/man/man2/symlink.2
index 11d440cc67..4bb9b4f5a6 100644
--- a/usr/src/man/man2/symlink.2
+++ b/usr/src/man/man2/symlink.2
@@ -14,9 +14,12 @@ symlink \- make a symbolic link to a file
\fBint\fR \fBsymlink\fR(\fBconst char *\fR\fIname1\fR, \fBconst char *\fR\fIname2\fR);
.fi
+.LP
+.nf
+\fBint\fR \fBsymlinkat\fR(\fBconst char *\fR\fIname1\fR, \fBint\fR \fIfd\fR, \fBconst char *\fR\fIname2\fR);
+.fi
.SH DESCRIPTION
-.sp
.LP
The \fBsymlink()\fR function creates a symbolic link \fIname2\fR to the file
\fIname1\fR. Either name may be an arbitrary pathname, the files need not be on
@@ -30,16 +33,21 @@ returns information about the link itself. See \fBstat\fR(2). Unexpected
results may occur when a symbolic link is made to a directory. To avoid
confusion in applications, the \fBreadlink\fR(2) call can be used to read the
contents of a symbolic link.
-.SH RETURN VALUES
.sp
.LP
+The \fBsymlinkat()\fR function behaves similarly to \fBsymlink()\fR; however,
+when \fIpath2\fR is a relative path, then it will be looked up relative to the
+directory specified by the file descriptor \fIfd\fR. To look up something in the
+current working directory, the special value \fBAT_FDCWD\fR may be passed into
+\fIfd\fR.
+.SH RETURN VALUES
+.LP
Upon successful completion, \fB0\fR is returned. Otherwise, \fB\(mi1\fR is
returned, \fBerrno\fR is set to indicate the error, and the symbolic link is
not made.
.SH ERRORS
-.sp
.LP
-The \fBsymlink()\fR function will fail if:
+The \fBsymlink()\fR and \fBsymlinkat()\fR functions will fail if:
.sp
.ne 2
.na
@@ -157,7 +165,9 @@ The file system does not support symbolic links.
\fB\fBENOTDIR\fR\fR
.ad
.RS 16n
-A component of the path prefix of \fIname2\fR is not a directory.
+A component of the path prefix of \fIname2\fR is not a directory. For
+\fBsymlinkat()\fR, if \fIpath2\fR refers to a relative path and \fIfd\fR is a
+valid file descriptor that is not a directory.
.RE
.sp
@@ -169,9 +179,21 @@ A component of the path prefix of \fIname2\fR is not a directory.
The file \fIname2\fR would reside on a read-only file system.
.RE
-.SH ATTRIBUTES
.sp
.LP
+The \fBsymlinkat()\fR function will fail if:
+.sp
+.ne 2
+.na
+.B EBADF
+.ad
+.RS 16n
+The \fIpath2\fR argument is a relative path, and \fIfd\fR is not a valid, open
+file descriptor or the special value \fBAT_FDCWD\fR.
+.RE
+
+.SH ATTRIBUTES
+.LP
See \fBattributes\fR(5) for descriptions of the following attributes:
.sp
@@ -186,7 +208,6 @@ Interface Stability Standard
.TE
.SH SEE ALSO
-.sp
.LP
\fBcp\fR(1), \fBlink\fR(2), \fBopen\fR(2), \fBreadlink\fR(2), \fBstat\fR(2),
\fBunlink\fR(2), \fBattributes\fR(5)
diff --git a/usr/src/man/man2/utimes.2 b/usr/src/man/man2/utimes.2
index 66241e9709..76ef1c095f 100644
--- a/usr/src/man/man2/utimes.2
+++ b/usr/src/man/man2/utimes.2
@@ -1,5 +1,6 @@
'\" te
.\" Copyright (c) 2009, Sun Microsystems, Inc. All Rights Reserved.
+.\" Copyright (c) 2014, Joyent, Inc.
.\" Portions Copyright (c) 1992, X/Open Company Limited. All Rights Reserved.
.\" Sun Microsystems, Inc. gratefully acknowledges The Open Group for permission to reproduce portions of its copyrighted documentation. Original documentation from The Open Group can be obtained online at http://www.opengroup.org/bookstore/.
.\" The Institute of Electrical and Electronics Engineers and The Open Group, have given us permission to reprint portions of their documentation. In the following statement, the phrase "this text" refers to portions of the system documentation. Portions of this text
@@ -9,7 +10,7 @@
.\" The contents of this file are subject to the terms of the Common Development and Distribution License (the "License"). You may not use this file except in compliance with the License. You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE or http://www.opensolaris.org/os/licensing.
.\" See the License for the specific language governing permissions and limitations under the License. When distributing Covered Code, include this CDDL HEADER in each file and include the License file at usr/src/OPENSOLARIS.LICENSE. If applicable, add the following below this CDDL HEADER, with
.\" the fields enclosed by brackets "[]" replaced with your own identifying information: Portions Copyright [yyyy] [name of copyright owner]
-.TH UTIMES 2 "Sep 1, 2009"
+.TH UTIMES 2 "Dec 20, 2014"
.SH NAME
utimes, futimesat \- set file access and modification times
.SH SYNOPSIS
@@ -26,8 +27,16 @@ utimes, futimesat \- set file access and modification times
\fBconst struct timeval\fR \fItimes\fR[2]);
.fi
+.LP
+.nf
+#include <sys/stat.h>
+
+\fBint\fR \fBfutimens\fR(\fBint\fR \fIfiledes\fR, \fBconst timespec_t\fR \fInstimes[2]\fR);
+
+\fBint\fR \fButimensat\fR(\fBint\fR \fIfiledes\fR, \fBconst char *\fR\fIpath\fR,
+ \fBconst timespec_t\fR \fInstimes[2]\fR, \fBint\fR \fIflag\fR);
+
.SH DESCRIPTION
-.sp
.LP
The \fButimes()\fR function sets the access and modification times of the file
pointed to by the \fIpath\fR argument to the value of the \fItimes\fR argument.
@@ -58,16 +67,35 @@ the process must be the same as the owner of the file, or must have write
access to the file or the {\fBPRIV_FILE_OWNER\fR} privilege to use this call in
this manner. Upon completion, \fButimes()\fR will mark the time of the last
file status change, \fBst_ctime\fR, for update.
-.SH RETURN VALUES
.sp
.LP
+The \fBfutimens()\fR and \fButimensat()\fR functions also set access and
+modification times; however, instead of taking \fBstruct timeval\fR, they take
+\fBtimespec_t\fR which allows for nanosecond granularity. The \fBfutimens()\fR
+function sets the access and modification times on the file descriptor
+referenced by \fIfiledes\fR.
+.sp
+.LP
+The \fButimensat()\fR function determines the file to set the access and
+modification times in an similar way to \fBfutemsat()\fR. If the argument
+\fIpath\fR is an absolute path, then the argument \fIfiledes\fR is ignored;
+otherwise, \fIpath\fR is interpreted as a path relative to the directory
+specified by \fIfiledes\fR. If \fIfiledes\fR is set to \fBAT_FDCWD\fR, then
+\fIpath\fR is resolved relative to the current working directory. The behavior
+when encountering symbolic links may be controlled by the value of the
+\fIflag\fR argument. If the value of flag is the constant
+\fBAT_SYMLINK_NOFOLLOW\fR, then when a symbolic link is encountered while
+resoloving a path, it will not be followed. Otherwise, the value of \fIflag\fR
+should be \fB0\fR.
+.SH RETURN VALUES
+.LP
Upon successful completion, \fB0\fR is returned. Otherwise, \fB\(mi1\fR is
returned, \fBerrno\fR is set to indicate the error, and the file times will not
be affected.
.SH ERRORS
-.sp
.LP
-The \fButimes()\fR and \fBfutimesat()\fR functions will fail if:
+The \fButimes()\fR, \fBfutimesat()\fR, \fBfutimens()\fR, and \fButimensat()\fR
+functions will fail if:
.sp
.ne 2
.na
@@ -96,7 +124,8 @@ The \fIpath\fR or \fItimes\fR argument points to an illegal address. For
\fB\fBEINTR\fR\fR
.ad
.RS 16n
-A signal was caught during the execution of the \fButimes()\fR function.
+A signal was caught during the execution of the \fButimes()\fR,
+\fBfutimesat()\fR, \fBfutimens()\fR, or \fButimensat()\fR functions.
.RE
.sp
@@ -107,7 +136,9 @@ A signal was caught during the execution of the \fButimes()\fR function.
.RS 16n
The number of microseconds specified in one or both of the \fBtimeval\fR
structures pointed to by \fItimes\fR was greater than or equal to 1,000,000 or
-less than 0.
+less than 0. The number of nanoseconds specified in one or both of the
+\fBtimespec_t\fR structures pointed to by \fInstimes\fR was greater than or
+equal to 1,000,000,000 or less than 0.
.RE
.sp
@@ -192,7 +223,8 @@ The file system containing the file is read-only.
.sp
.LP
-The \fButimes()\fR and \fBfutimesat()\fR functions may fail if:
+The \fButimes()\fR, \fBfutimesat()\fR, and \fButimensat()\fR functions may fail
+if:
.sp
.ne 2
.na
@@ -204,7 +236,6 @@ length exceeds {\fIPATH_MAX\fR}.
.RE
.SH ATTRIBUTES
-.sp
.LP
See \fBattributes\fR(5) for descriptions of the following attributes:
.sp
@@ -223,9 +254,8 @@ Standard See below.
.sp
.LP
-For \fButimes()\fR, see \fBstandards\fR(5).
+For \fButimes()\fR, \fButimensat()\fR and \fBfutimensat()\fR, see \fBstandards\fR(5).
.SH SEE ALSO
-.sp
.LP
\fBfutimens\fR(2), \fBstat\fR(2), \fButime\fR(2), \fBattributes\fR(5),
\fBfsattr\fR(5), \fBstandards\fR(5)
diff --git a/usr/src/man/man3c/Makefile b/usr/src/man/man3c/Makefile
index 55fd0615df..88e1741bc2 100644
--- a/usr/src/man/man3c/Makefile
+++ b/usr/src/man/man3c/Makefile
@@ -61,6 +61,7 @@ MANFILES= __fbufsize.3c \
catopen.3c \
cfgetispeed.3c \
cfsetispeed.3c \
+ clearenv.3c \
clock.3c \
clock_nanosleep.3c \
clock_settime.3c \
@@ -117,6 +118,7 @@ MANFILES= __fbufsize.3c \
exit.3c \
fattach.3c \
fclose.3c \
+ fcloseall.3c \
fdatasync.3c \
fdetach.3c \
fdopen.3c \
@@ -164,12 +166,14 @@ MANFILES= __fbufsize.3c \
getlogin.3c \
getmntent.3c \
getnetgrent.3c \
+ get_nprocs.3c \
getopt.3c \
getpagesize.3c \
getpagesizes.3c \
getpass.3c \
getpeerucred.3c \
getpriority.3c \
+ getprogname.3c \
getpw.3c \
getpwnam.3c \
getrusage.3c \
@@ -321,6 +325,7 @@ MANFILES= __fbufsize.3c \
pthread_key_create.3c \
pthread_key_delete.3c \
pthread_kill.3c \
+ pthread_mutex_consistent.3c \
pthread_mutex_getprioceiling.3c \
pthread_mutex_init.3c \
pthread_mutex_lock.3c \
@@ -328,6 +333,7 @@ MANFILES= __fbufsize.3c \
pthread_mutexattr_getprioceiling.3c \
pthread_mutexattr_getprotocol.3c \
pthread_mutexattr_getpshared.3c \
+ pthread_mutexattr_getrobust.3c \
pthread_mutexattr_gettype.3c \
pthread_mutexattr_init.3c \
pthread_once.3c \
@@ -412,6 +418,7 @@ MANFILES= __fbufsize.3c \
sigwaitinfo.3c \
sleep.3c \
ssignal.3c \
+ smt_pause.3c \
stack_getbounds.3c \
stack_inbounds.3c \
stack_setbounds.3c \
@@ -676,6 +683,7 @@ MANLINKS= FD_CLR.3c \
btowc_l.3c \
bzero.3c \
calloc.3c \
+ canonicalize_file_name.3c \
catclose.3c \
cfgetospeed.3c \
cfsetospeed.3c \
@@ -741,6 +749,8 @@ MANLINKS= FD_CLR.3c \
fdopendir.3c \
fdwalk.3c \
feof.3c \
+ ffsl.3c \
+ ffsll.3c \
fgetgrent.3c \
fgetgrent_r.3c \
fgetpwent.3c \
@@ -753,6 +763,9 @@ MANLINKS= FD_CLR.3c \
file_to_decimal.3c \
fileno.3c \
finite.3c \
+ fls.3c \
+ flsl.3c \
+ flsll.3c \
fpclass.3c \
fpgetmask.3c \
fpgetsticky.3c \
@@ -790,6 +803,7 @@ MANLINKS= FD_CLR.3c \
getlogin_r.3c \
getmntany.3c \
getnetgrent_r.3c \
+ get_nprocs_conf.3c \
getpassphrase.3c \
getpwent.3c \
getpwent_r.3c \
@@ -921,10 +935,12 @@ MANLINKS= FD_CLR.3c \
memchr.3c \
memcmp.3c \
memcpy.3c \
+ memmem.3c \
memmove.3c \
memset.3c \
minor.3c \
mkdtemp.3c \
+ mkfifoat.3c \
mkostemp.3c \
mkostemps.3c \
mkstemps.3c \
@@ -1015,6 +1031,7 @@ MANLINKS= FD_CLR.3c \
pthread_mutexattr_setprioceiling.3c \
pthread_mutexattr_setprotocol.3c \
pthread_mutexattr_setpshared.3c \
+ pthread_mutexattr_setrobust.3c \
pthread_mutexattr_settype.3c \
pthread_rwlock_destroy.3c \
pthread_rwlock_reltimedrdlock_np.3c \
@@ -1095,6 +1112,7 @@ MANLINKS= FD_CLR.3c \
setlogmask.3c \
setnetgrent.3c \
setpriority.3c \
+ setprogname.3c \
setpwent.3c \
setspent.3c \
setstate.3c \
@@ -1129,15 +1147,21 @@ MANLINKS= FD_CLR.3c \
stderr.3c \
stdin.3c \
stdout.3c \
+ stpcpy.3c \
+ stpncpy.3c \
strcasecmp.3c \
strcasecmp_l.3c \
+ strcasestr.3c \
+ strcasestr_l.3c \
strcat.3c \
strchr.3c \
+ strchrnul.3c \
strcmp.3c \
strcoll_l.3c \
strcpy.3c \
strcspn.3c \
strdup.3c \
+ strdupa.3c \
strerror_r.3c \
strfmon_l.3c \
strftime_l.3c \
@@ -1149,7 +1173,10 @@ MANLINKS= FD_CLR.3c \
strncat.3c \
strncmp.3c \
strncpy.3c \
+ strndup.3c \
+ strndupa.3c \
strnlen.3c \
+ strnstr.3c \
strpbrk.3c \
strptime_l.3c \
strrchr.3c \
@@ -1446,6 +1473,8 @@ bzero.3c := LINKSRC = bstring.3c
btowc_l.3c := LINKSRC = btowc.3c
+canonicalize_file_name.3c := LINKSRC = realpath.3c
+
catclose.3c := LINKSRC = catopen.3c
cfgetospeed.3c := LINKSRC = cfgetispeed.3c
@@ -1571,6 +1600,12 @@ clearerr.3c := LINKSRC = ferror.3c
feof.3c := LINKSRC = ferror.3c
fileno.3c := LINKSRC = ferror.3c
+ffsl.3c := LINKSRC = ffs.3c
+ffsll.3c := LINKSRC = ffs.3c
+fls.3c := LINKSRC = ffs.3c
+flsl.3c := LINKSRC = ffs.3c
+flsll.3c := LINKSRC = ffs.3c
+
fsetattr.3c := LINKSRC = fgetattr.3c
getattrat.3c := LINKSRC = fgetattr.3c
setattrat.3c := LINKSRC = fgetattr.3c
@@ -1652,10 +1687,14 @@ getnetgrent_r.3c := LINKSRC = getnetgrent.3c
innetgr.3c := LINKSRC = getnetgrent.3c
setnetgrent.3c := LINKSRC = getnetgrent.3c
+get_nprocs_conf.3c := LINKSRC = get_nprocs.3c
+
getpassphrase.3c := LINKSRC = getpass.3c
setpriority.3c := LINKSRC = getpriority.3c
+setprogname.3c := LINKSRC = getprogname.3c
+
endpwent.3c := LINKSRC = getpwnam.3c
fgetpwent.3c := LINKSRC = getpwnam.3c
fgetpwent_r.3c := LINKSRC = getpwnam.3c
@@ -1818,9 +1857,12 @@ memccpy.3c := LINKSRC = memory.3c
memchr.3c := LINKSRC = memory.3c
memcmp.3c := LINKSRC = memory.3c
memcpy.3c := LINKSRC = memory.3c
+memmem.3c := LINKSRC = memory.3c
memmove.3c := LINKSRC = memory.3c
memset.3c := LINKSRC = memory.3c
+mkfifoat.3c := LINKSRC = mkfifo.3c
+
mkdtemp.3c := LINKSRC = mkstemp.3c
mkostemp.3c := LINKSRC = mkstemp.3c
mkostemps.3c := LINKSRC = mkstemp.3c
@@ -1983,6 +2025,8 @@ pthread_mutexattr_setprotocol.3c := LINKSRC = pthread_mutexattr_getprotocol.3c
pthread_mutexattr_setpshared.3c := LINKSRC = pthread_mutexattr_getpshared.3c
+pthread_mutexattr_setrobust.3c := LINKSRC = pthread_mutexattr_getrobust.3c
+
pthread_mutexattr_settype.3c := LINKSRC = pthread_mutexattr_gettype.3c
pthread_mutexattr_destroy.3c := LINKSRC = pthread_mutexattr_init.3c
@@ -2118,14 +2162,20 @@ ascftime.3c := LINKSRC = strftime.3c
cftime.3c := LINKSRC = strftime.3c
strftime_l.3c := LINKSRC = strftime.3c
+stpcpy.3c := LINKSRC = string.3c
+stpncpy.3c := LINKSRC = string.3c
strcasecmp.3c := LINKSRC = string.3c
strcasecmp_l.3c := LINKSRC = string.3c
+strcasestr.3c := LINKSRC = string.3c
+strcasestr_l.3c := LINKSRC = string.3c
strcat.3c := LINKSRC = string.3c
strchr.3c := LINKSRC = string.3c
+strchrnul.3c := LINKSRC = string.3c
strcmp.3c := LINKSRC = string.3c
strcpy.3c := LINKSRC = string.3c
strcspn.3c := LINKSRC = string.3c
strdup.3c := LINKSRC = string.3c
+strdupa.3c := LINKSRC = string.3c
strlcat.3c := LINKSRC = string.3c
strlcpy.3c := LINKSRC = string.3c
strlen.3c := LINKSRC = string.3c
@@ -2134,7 +2184,10 @@ strncasecmp_l.3c := LINKSRC = string.3c
strncat.3c := LINKSRC = string.3c
strncmp.3c := LINKSRC = string.3c
strncpy.3c := LINKSRC = string.3c
+strndup.3c := LINKSRC = string.3c
+strndupa.3c := LINKSRC = string.3c
strnlen.3c := LINKSRC = string.3c
+strnstr.3c := LINKSRC = string.3c
strpbrk.3c := LINKSRC = string.3c
strrchr.3c := LINKSRC = string.3c
strsep.3c := LINKSRC = string.3c
diff --git a/usr/src/man/man3c/clearenv.3c b/usr/src/man/man3c/clearenv.3c
new file mode 100644
index 0000000000..1bf5cbde17
--- /dev/null
+++ b/usr/src/man/man3c/clearenv.3c
@@ -0,0 +1,64 @@
+.\"
+.\" This file and its contents are supplied under the terms of the
+.\" Common Development and Distribution License ("CDDL"), version 1.0.
+.\" You may only use this file in accordance with the terms of version
+.\" 1.0 of the CDDL.
+.\"
+.\" A full copy of the text of the CDDL should have accompanied this
+.\" source. A copy of the CDDL is also available via the Internet at
+.\" http://www.illumos.org/license/CDDL.
+.\"
+.\"
+.\" Copyright (c) 2014, Joyent, Inc.
+.\"
+.Dd "Dec 20, 2014"
+.Dt CLEARENV 3C
+.Os
+.Sh NAME
+.Nm clearenv
+.Nd clear environment
+.Sh SYNOPSIS
+.In stdlib.h
+.Ft int
+.Fo clearenv
+.Fa void
+.Fc
+.Sh DESCRIPTION
+The
+.Fn clearenv
+function clears the contents of the environment. All environment variables in
+the calling process are removed as though the function
+.Xr unsetenv 3C
+had been called on every environment variable. Until subsequent calls to
+.Xr putenv 3C
+or
+.Xr setenv 3C
+are made, calls to
+.Xr getenv 3C
+will always return
+.Sy NULL .
+.Sh RETURN VALUES
+Upon successful completion,
+.Fn clearenv
+returns
+.Sy 0 .
+Otherwise, it returns a non-zero value and sets
+.Sy errno
+to indicate the error. At this time, no errors are defined for
+.Fn clearenv ,
+it will always succeed. Portable applications should always check the return
+value of
+.Fn clearenv .
+.Sh ERRORS
+No errors are defined.
+.Sh INTERFACE STABILITY
+.Sy Committed .
+.Sh MT-LEVEL
+.Sy Mt-Safe .
+.Sh SEE ALSO
+.Xr getenv 3C ,
+.Xr unsetenv 3C ,
+.Xr setenv 3C ,
+.Xr attributes 5 ,
+.Xr environ 5 ,
+.Xr standards 5
diff --git a/usr/src/man/man3c/fclose.3c b/usr/src/man/man3c/fclose.3c
index dd271156f1..b3759b8883 100644
--- a/usr/src/man/man3c/fclose.3c
+++ b/usr/src/man/man3c/fclose.3c
@@ -19,7 +19,6 @@ fclose \- close a stream
.fi
.SH DESCRIPTION
-.sp
.LP
The \fBfclose()\fR function causes the stream pointed to by \fIstream\fR to be
flushed and the associated file to be closed. Any unwritten buffered data for
@@ -42,12 +41,10 @@ behavior.
The \fBfclose()\fR function is performed automatically for all open files upon
calling \fBexit\fR(2).
.SH RETURN VALUES
-.sp
.LP
Upon successful completion, \fBfclose()\fR returns \fB0\fR. Otherwise, it
returns \fBEOF\fR and sets \fBerrno\fR to indicate the error.
.SH ERRORS
-.sp
.LP
The \fBfclose()\fR function will fail if:
.sp
@@ -135,7 +132,6 @@ limits of the device.
.RE
.SH ATTRIBUTES
-.sp
.LP
See \fBattributes\fR(5) for descriptions of the following attributes:
.sp
@@ -153,7 +149,7 @@ MT-Level MT-Safe
.TE
.SH SEE ALSO
-.sp
.LP
\fBclose\fR(2), \fBexit\fR(2), \fBgetrlimit\fR(2), \fBulimit\fR(2),
-\fBfopen\fR(3C), \fBstdio\fR(3C), \fBattributes\fR(5), \fBstandards\fR(5)
+\fBfcloseall\fR(3C), \fBfopen\fR(3C), \fBstdio\fR(3C),
+\fBattributes\fR(5), \fBstandards\fR(5)
diff --git a/usr/src/man/man3c/fcloseall.3c b/usr/src/man/man3c/fcloseall.3c
new file mode 100644
index 0000000000..c1a9f49847
--- /dev/null
+++ b/usr/src/man/man3c/fcloseall.3c
@@ -0,0 +1,53 @@
+.\"
+.\" This file and its contents are supplied under the terms of the
+.\" Common Development and Distribution License ("CDDL"), version 1.0.
+.\" You may only use this file in accordance with the terms of version
+.\" 1.0 of the CDDL.
+.\"
+.\" A full copy of the text of the CDDL should have accompanied this
+.\" source. A copy of the CDDL is also available via the Internet at
+.\" http://www.illumos.org/license/CDDL.
+.\"
+.\"
+.\" Copyright (c) 2014, Joyent, Inc.
+.\"
+.Dd "Dec 20, 2014"
+.Dt FCLOSEALL 3C
+.Os
+.Sh NAME
+.Nm fcloseall
+.Nd close all standard I/O streams
+.Sh SYNOPSIS
+.In stdio.h
+.Ft int
+.Fo fcloseall
+.Fa void
+.Fc
+.Sh DESCRIPTION
+The
+.Fn fcloseall
+function closes all open standard I/O streams. The equivalent of
+.Xr fflush 3C
+is called on each stream before closing, thus any buffered or pending
+input is discarded while any buffered or pending output is written out
+to the underlying file. This includes the standard streams,
+.Vt stdin ,
+.Vt stdout ,
+and
+.Vt stderr .
+.Sh RETURN VALUES
+Currently, the function
+.Fn fcloseall
+always returns
+.Sy 0 .
+Note, portable applications should always check the return value.
+.Sh INTERFACE STABILITY
+.Sy Committed .
+.Sh MT-LEVEL
+.Sy Mt-Safe .
+.Sh SEE ALSO
+.Xr close 3C ,
+.Xr fflush 3C ,
+.Xr attributes 5 ,
+.Xr environ 5 ,
+.Xr standards 5
diff --git a/usr/src/man/man3c/ffs.3c b/usr/src/man/man3c/ffs.3c
index 88d5e5b92f..62c6a3d247 100644
--- a/usr/src/man/man3c/ffs.3c
+++ b/usr/src/man/man3c/ffs.3c
@@ -1,4 +1,5 @@
'\" te
+.\" Copyright (c) 2014, Joyent, Inc.
.\" Copyright 1989 AT&T Copyright (c) 2002, Sun Microsystems, Inc. All Rights Reserved Portions Copyright (c) 1992, X/Open Company Limited All Rights Reserved
.\" Sun Microsystems, Inc. gratefully acknowledges The Open Group for permission to reproduce portions of its copyrighted documentation. Original documentation from The Open Group can be obtained online at
.\" http://www.opengroup.org/bookstore/.
@@ -15,26 +16,41 @@ ffs \- find first set bit
.nf
#include <strings.h>
-\fBint\fR \fBffs\fR(\fBconst int\fR \fIi\fR);
+\fBint\fR \fBffs\fR(\fBint\fR \fIi\fR);
+
+\fBint\fR \fBffsl\fR(\flong\fR \fIi\fR);
+
+\fBint\fR \fBffsll\fR(\fBlong long\fR \fIi\fR);
+
+\fBint\fR \fBfls\fR(\fBint\fR \fIi\fR);
+
+\fBint\fR \fBflsl\fR(\fBlong\fR \fIi\fR);
+
+\fBint\fR \fBflsl\fR(\fBlong long\fR \fIi\fR);
.fi
.SH DESCRIPTION
+.LP
+The \fBffs()\fR, \fBffsl()\, and \fBffsll()\fR functions finds the first bit set
+(beginning with the least significant bit) and return the index of that bit.
+Bits are numbered starting at one (the least significant bit).
.sp
.LP
-The \fBffs()\fR function finds the first bit set (beginning with the least
-significant bit) and returns the index of that bit. Bits are numbered starting
-at one (the least significant bit).
+The \fBfls()\fR, \fBflsl()\fR, and \fBflsll()\fR functions find the last bit set
+(beginning with the most significant bit) and return the index of that bit.
+Bits are numbered starting at one (the least significant bit).
.SH RETURN VALUES
+.LP
+The \fBffs()\fR, \fBffsl()\fR, and \fBffsll()\fR functions returns the index of
+the first bit set. If \fIi\fR is 0, then they return 0.
.sp
.LP
-The \fBffs()\fR function returns the index of the first bit set. If \fIi\fR is
-0, then \fBffs()\fR returns 0.
+The \fBfls()\fR, \fBflsl()\fR, and \fBflsll()\fR functions return the index of
+the last bit set. If \fIi\fR is 0, then they return 0.
.SH ERRORS
-.sp
.LP
No errors are defined.
.SH ATTRIBUTES
-.sp
.LP
See \fBattributes\fR(5) for descriptions of the following attributes:
.sp
@@ -46,12 +62,11 @@ c | c
l | l .
ATTRIBUTE TYPE ATTRIBUTE VALUE
_
-Interface Stability Standard
+Interface Stability Committed
_
MT-Level MT-Safe
.TE
.SH SEE ALSO
-.sp
.LP
\fBattributes\fR(5), \fBstandards\fR(5)
diff --git a/usr/src/man/man3c/fopen.3c b/usr/src/man/man3c/fopen.3c
index 906ee3532e..7413fa58ba 100644
--- a/usr/src/man/man3c/fopen.3c
+++ b/usr/src/man/man3c/fopen.3c
@@ -4,7 +4,7 @@
.\" Copyright (c) 2006, Sun Microsystems, Inc. All Rights Reserved.
.\" Portions Copyright (c) 1992, X/Open Company Limited. All Rights Reserved.
.\" Portions Copyright (c) 2013, OmniTI Computer Consulting, Inc. All Rights Reserved.
-.\" Portions Copyright (c) 2013, Joyent, Inc. All Rights Reserved.
+.\" Portions Copyright (c) 2014, Joyent, Inc. All Rights Reserved.
.\" Sun Microsystems, Inc. gratefully acknowledges The Open Group for permission to reproduce portions of its copyrighted documentation. Original documentation from The Open Group can be obtained online at
.\" http://www.opengroup.org/bookstore/.
.\" The Institute of Electrical and Electronics Engineers and The Open Group, have given us permission to reprint portions of their documentation. In the following statement, the phrase "this text" refers to portions of the system documentation. Portions of this text are reprinted and reproduced in electronic form in the Sun OS Reference Manual, from IEEE Std 1003.1, 2004 Edition, Standard for Information Technology -- Portable Operating System Interface (POSIX), The Open Group Base Specifications Issue 6, Copyright (C) 2001-2004 by the Institute of Electrical and Electronics Engineers, Inc and The Open Group. In the event of any discrepancy between these versions and the original IEEE and The Open Group Standard, the original IEEE and The Open Group Standard is the referee document. The original Standard can be obtained online at http://www.opengroup.org/unix/online.html.
@@ -402,6 +402,7 @@ The \fBF\fR character in the \fImode\fR argument is Evolving. In all other
respects this function is Standard.
.SH SEE ALSO
.LP
-\fBenable_extended_FILE_stdio\fR(3C), \fBfclose\fR(3C), \fBfdopen\fR(3C),
-\fBfflush\fR(3C), \fBfreopen\fR(3C), \fBfsetpos\fR(3C), \fBrewind\fR(3C),
-\fBopen\fR(2), \fBattributes\fR(5), \fBlf64\fR(5), \fBstandards\fR(5)
+\fBenable_extended_FILE_stdio\fR(3C), \fBfclose\fR(3C),
+\fRfcloseall\fR(3C), \fBfdopen\fR(3C), \fBfflush\fR(3C),
+\fBfreopen\fR(3C), \fBfsetpos\fR(3C), \fBrewind\fR(3C), \fBopen\fR(2),
+\fBattributes\fR(5), \fBlf64\fR(5), \fBstandards\fR(5)
diff --git a/usr/src/man/man3c/get_nprocs.3c b/usr/src/man/man3c/get_nprocs.3c
new file mode 100644
index 0000000000..4d73833b56
--- /dev/null
+++ b/usr/src/man/man3c/get_nprocs.3c
@@ -0,0 +1,59 @@
+.\"
+.\" This file and its contents are supplied under the terms of the
+.\" Common Development and Distribution License ("CDDL"), version 1.0.
+.\" You may only use this file in accordance with the terms of version
+.\" 1.0 of the CDDL.
+.\"
+.\" A full copy of the text of the CDDL should have accompanied this
+.\" source. A copy of the CDDL is also available via the Internet at
+.\" http://www.illumos.org/license/CDDL.
+.\"
+.\"
+.\" Copyright (c) 2014 Joyent, Inc.
+.\"
+.Dd "Dec 21, 2014"
+.Dt GET_NPROCS 3C
+.Os
+.Sh NAME
+.Nm get_nprocs ,
+.Nm get_nprocs_conf
+.Nd get number of processors
+.Sh SYNOPSIS
+.In unistd.h
+.Ft int
+.Fo get_nprocs
+.Fa void
+.Fc
+.Ft int
+.Fo get_nprocs_conf
+.Fa void
+.Fc
+.Sh DESCRIPTION
+The
+.Fn get_nprocs
+and
+.Fn get_nprocs_conf
+functions are provided for compatibility with other systems and are
+equivalent to calling
+.Fn sysconf _SC_NPROCESSORS_ONLN
+and
+.Fn sysconf _SC_NPROCESSORS_CONF
+respectively.
+.Sh RETURN VALUES
+The
+.Fn get_nprocs
+function returns the number of processors that are currently online. The
+.Fn get_nprocs_conf
+function returns the number of processors that the operating system has
+configured.
+.Sh INTERFACE STABILITY
+.Sy Committed .
+.Sh MT-LEVEL
+.Sy MT-Safe ,
+.Sy Async-Signal-Safe
+.Sh SEE ALSO
+.Xr psrinfo 1M ,
+.Xr processor_info 2 ,
+.Xr sysconf 3C ,
+.Xr attributes 5 ,
+.Xr standards 5
diff --git a/usr/src/man/man3c/getprogname.3c b/usr/src/man/man3c/getprogname.3c
new file mode 100644
index 0000000000..5bc48e6d69
--- /dev/null
+++ b/usr/src/man/man3c/getprogname.3c
@@ -0,0 +1,77 @@
+.\"
+.\" This file and its contents are supplied under the terms of the
+.\" Common Development and Distribution License ("CDDL"), version 1.0.
+.\" You may only use this file in accordance with the terms of version
+.\" 1.0 of the CDDL.
+.\"
+.\" A full copy of the text of the CDDL should have accompanied this
+.\" source. A copy of the CDDL is also available via the Internet at
+.\" http://www.illumos.org/license/CDDL.
+.\"
+.\"
+.\" Copyright (c) 2014, Joyent, Inc.
+.\"
+.Dd "Dec 22, 2014"
+.Dt GETPROGNAME 3C
+.Os
+.Sh NAME
+.Nm getprogname ,
+.Nm setprogname
+.Nd get or set the program name
+.Sh SYNOPSIS
+.In stdlib.h
+.Ft const char *
+.Fo getprogname
+.Fa void
+.Fc
+.Ft void
+.Fo setprogname
+.Fa "const char *progname"
+.Fc
+.Sh DESCRIPTION
+The
+.Fn getprogname
+function is used to obtain the program name. The program name is set at
+program start-up, before
+.Fn main
+is called. Note, other operating systems, do not guarantee that a
+program name has been set at start up time and therefore may return a
+null pointer if
+.Fn setprogname
+has not been called.
+.Lp
+The
+.Fn setprogname
+function is used to change the program name to another value. The
+argument
+.Fa progname
+must contain a null terminatd character string, whose last component
+which will become the new program name.
+.Sh RETURN VALUES
+The
+.Fn getprogname
+function always returns the current program name. The program name is
+always set, it will not return a null pointer.
+.Sh INTERFACE STABILITY
+.Sy Committed
+.Sh MT-LEVEL
+.Fn getprogname
+is
+.Sy MT-Safe .
+.Lp
+.Fn setprogname
+is
+.Sy Unsafe .
+.Sh SEE ALSO
+.Xr err 3c ,
+.Xr attributes 5
+.Sh NOTES
+The use of
+.Fn setprogname
+does not modify the program name as reported by utilities like
+.Xr ps 1
+or
+.Xr pargs 1 ;
+however, it does ensure a consistent program name for the
+.Xr err 3C
+family of functions.
diff --git a/usr/src/man/man3c/memory.3c b/usr/src/man/man3c/memory.3c
index eafcfc2a13..02102892ab 100644
--- a/usr/src/man/man3c/memory.3c
+++ b/usr/src/man/man3c/memory.3c
@@ -1,4 +1,5 @@
'\" te
+.\" Copyright (c) 2014, Joyent, Inc.
.\" Copyright (c) 2009, Sun Microsystems, Inc. All Rights Reserved.
.\" Copyright 1989 AT&T
.\" The contents of this file are subject to the terms of the Common Development and Distribution License (the "License"). You may not use this file except in compliance with the License.
@@ -6,7 +7,7 @@
.\" When distributing Covered Code, include this CDDL HEADER in each file and include the License file at usr/src/OPENSOLARIS.LICENSE. If applicable, add the following below this CDDL HEADER, with the fields enclosed by brackets "[]" replaced with your own identifying information: Portions Copyright [yyyy] [name of copyright owner]
.TH MEMORY 3C "Feb 4, 2009"
.SH NAME
-memory, memccpy, memchr, memcmp, memcpy, memmove, memset \- memory operations
+memory, memccpy, memchr, memcmp, memcpy, memmem, memmove, memset \- memory operations
.SH SYNOPSIS
.LP
.nf
@@ -33,6 +34,11 @@ memory, memccpy, memchr, memcmp, memcpy, memmove, memset \- memory operations
.LP
.nf
+\fBvoid *\fR\fBmemmem\fR(\fBconst void *\fR\fIl\fR, \fBsize_t\fR \fIl_len\fR, \fBconst void *\fR\fIs\fR, \fBsize_t\fR \fIs_len\fR);
+.fi
+
+.LP
+.nf
\fBvoid *\fR\fBmemmove\fR(\fBvoid *\fR\fIs1\fR, \fBconst void *\fR\fIs2\fR, \fBsize_t\fR \fIn\fR);
.fi
@@ -57,7 +63,6 @@ memory, memccpy, memchr, memcmp, memcpy, memmove, memset \- memory operations
.fi
.SH DESCRIPTION
-.sp
.LP
These functions operate as efficiently as possible on memory areas (arrays of
bytes bounded by a count, not terminated by a null character). They do not
@@ -90,6 +95,13 @@ The \fBmemcpy()\fR function copies \fIn\fR bytes from memory area \fIs2\fR to
overlap, the behavior is undefined.
.sp
.LP
+The \fBmemmem()\fR function searches for the \fIs_len\fR long byte pattern
+\fIs\fR in the memory region starting at \fBl\fR for \fl_len\fR bytes. If a
+match is found, a pointer to the starting location in \fIl\fR is returned. If no
+match is found, \fIl_len\fR is zero, \fIs_len\fR is zero, or \fIl_len\fR is less
+than \fIs_len\fR, then a null pointer is return.
+.sp
+.LP
The \fBmemmove()\fR function copies \fIn\fR bytes from memory area \fIs2\fR to
memory area \fIs1\fR. Copying between objects that overlap will take place
correctly. It returns \fIs1\fR.
@@ -99,12 +111,10 @@ The \fBmemset()\fR function sets the first \fIn\fR bytes in memory area \fIs\fR
to the value of \fIc\fR (converted to an \fBunsigned char\fR). It returns
\fIs\fR.
.SH USAGE
-.sp
.LP
Using \fBmemcpy()\fR might be faster than using \fBmemmove()\fR if the
application knows that the objects being copied do not overlap.
.SH ATTRIBUTES
-.sp
.LP
See \fBattributes\fR(5) for descriptions of the following attributes:
.sp
@@ -124,11 +134,9 @@ Standard See \fBstandards\fR(5).
.TE
.SH SEE ALSO
-.sp
.LP
\fBstring\fR(3C), \fBattributes\fR(5), \fBstandards\fR(5)
.SH NOTES
-.sp
.LP
Overlap between objects being copied can arise even when their (virtual)
address ranges appear to be disjoint; for example, as a result of
diff --git a/usr/src/man/man3c/mkfifo.3c b/usr/src/man/man3c/mkfifo.3c
index 29de2b15e3..e77e35ff12 100644
--- a/usr/src/man/man3c/mkfifo.3c
+++ b/usr/src/man/man3c/mkfifo.3c
@@ -1,5 +1,6 @@
'\" te
.\" Copyright (c) 2002, Sun Microsystems, Inc. All Rights Reserved.
+.\" Copyright (c) 2014, Joyent, Inc.
.\" Copyright 1989 AT&T
.\" Portions Copyright (c) 2001, the Institute of Electrical and Electronics Engineers, Inc. and The Open Group. All Rights Reserved.
.\" Sun Microsystems, Inc. gratefully acknowledges The Open Group for permission to reproduce portions of its copyrighted documentation. Original documentation from The Open Group can be obtained online at
@@ -11,7 +12,7 @@
.\" When distributing Covered Code, include this CDDL HEADER in each file and include the License file at usr/src/OPENSOLARIS.LICENSE. If applicable, add the following below this CDDL HEADER, with the fields enclosed by brackets "[]" replaced with your own identifying information: Portions Copyright [yyyy] [name of copyright owner]
.TH MKFIFO 3C "Apr 24, 2002"
.SH NAME
-mkfifo \- make a FIFO special file
+mkfifo, mkfifoat \- make a FIFO special file
.SH SYNOPSIS
.LP
.nf
@@ -20,19 +21,23 @@ mkfifo \- make a FIFO special file
\fBint\fR \fBmkfifo\fR(\fBconst char *\fR\fIpath\fR, \fBmode_t\fR \fImode\fR);
.fi
+.LP
+.nf
+\fBint\fR \fBmkfifoat\fR(\fBint\fR \fIfd\fR, \fBconst char *\fR\fIpath\fR, \fBmode_t\fR \fImode\fR);
+.fi
.SH DESCRIPTION
-.sp
.LP
-The \fBmkfifo()\fR function creates a new FIFO special file named by the
-pathname pointed to by \fIpath\fR. The file permission bits of the new FIFO
-are initialized from \fImode\fR. The file permission bits of the \fImode\fR
-argument are modified by the process's file creation mask (see \fBumask\fR(2)).
-Bits other than the file permission bits in \fImode\fR are ignored.
+The \fBmkfifo()\fR and \fBmkfifoat()\fR functions create a new FIFO special file
+named by the pathname pointed to by \fIpath\fR. The file permission bits of the
+new FIFO are initialized from \fImode\fR. The file permission bits of the
+\fImode\fR argument are modified by the process's file creation mask (see
+\fBumask\fR(2)). Bits other than the file permission bits in \fImode\fR are
+ignored.
.sp
.LP
-If \fIpath\fR names a symbolic link, \fBmkfifo()\fR fails and sets \fBerrno\fR
-to \fBEEXIST\fR.
+If \fIpath\fR names a symbolic link, \fBmkfifo()\fR and \fBmkfifoat()\fR fail
+and set \fBerrno\fR to \fBEEXIST\fR.
.sp
.LP
The FIFO's user ID is set to the process's effective user ID. The FIFO's group
@@ -40,22 +45,28 @@ ID is set to the group ID of the parent directory or to the effective group ID
of the process.
.sp
.LP
-The \fBmkfifo()\fR function calls \fBmknod\fR(2) to create the file.
+The \fBmkfifoat()\fR function is equivalent to \fBmkfifo()\fR; however, if
+\fIpath\fr is a relative path, then it is resolved start at the directory
+represented by \fIfd\fR. \fIfd\fR may be set to the special value of
+\fBAT_FDCWD\fR which indicates that the current working directory should be used
+to start resolving \fIpath\fR.
.sp
.LP
-Upon successful completion, \fBmkfifo()\fR marks for update the \fBst_atime\fR,
-\fBst_ctime\fR, and \fBst_mtime\fR fields of the file. Also, the \fBst_ctime\fR
-and \fBst_mtime\fR fields of the directory that contains the new entry are
-marked for update.
-.SH RETURN VALUES
+The \fBmkfifo()\fR function calls \fBmknod\fR(2) to create the file. The
+\fBmkfifoat()\fR function calls \fBmknodat\fR(2) to create the file.
.sp
.LP
+Upon successful completion, \fBmkfifo()\fR and \fBmkfifoat()\fR mark for update
+the \fBst_atime\fR, \fBst_ctime\fR, and \fBst_mtime\fR fields of the file. Also,
+the \fBst_ctime\fR and \fBst_mtime\fR fields of the directory that contains the
+new entry are marked for update.
+.SH RETURN VALUES
+.LP
Upon successful completion, \fB0\fR is returned. Otherwise, \fB\(mi1\fR is
returned and \fBerrno\fR is set to indicate the error.
.SH ERRORS
-.sp
.LP
-The \fBmkfifo()\fR function will fail if:
+The \fBmkfifo()\fR and \fBmkfifoat()\fR functions will fail if:
.sp
.ne 2
.na
@@ -121,7 +132,9 @@ system is out of file-allocation resources.
\fB\fBENOTDIR\fR\fR
.ad
.RS 16n
-A component of the path prefix is not a directory.
+A component of the path prefix is not a directory. For \fBmkfifoat()\fR,
+\fIpath\fR is a relative path and \fIfd\fR is a valid file descriptor which is
+not a directory.
.RE
.sp
@@ -135,6 +148,19 @@ The named file resides on a read-only file system.
.sp
.LP
+The \fBmkfifoat()\fR function will fail if:
+.sp
+.ne 2
+.na
+.B EBADF
+.ad
+.RS 16n
+The \fIpath\fR argument is a relative path and \fIfd\fR is not a valid file
+descriptor or the value \fBAT_FDCWD\fR.
+.RE
+
+.sp
+.LP
The \fBmkfifo()\fR function may fail if:
.sp
.ne 2
@@ -177,7 +203,6 @@ status = mkfifo("/home/cnd/mod_done", S_IWUSR | S_IRUSR |
.in -2
.SH ATTRIBUTES
-.sp
.LP
See \fBattributes\fR(5) for descriptions of the following attributes:
.sp
@@ -195,7 +220,6 @@ MT-Level MT-Safe
.TE
.SH SEE ALSO
-.sp
.LP
\fBmkdir\fR(1), \fBchmod\fR(2), \fBexec\fR(2), \fBmknod\fR(2), \fBumask\fR(2),
\fBstat.h\fR(3HEAD), \fBufs\fR(7FS), \fBattributes\fR(5), \fBstandards\fR(5)
diff --git a/usr/src/man/man3c/pthread_mutex_consistent.3c b/usr/src/man/man3c/pthread_mutex_consistent.3c
new file mode 100644
index 0000000000..2b6fd0206d
--- /dev/null
+++ b/usr/src/man/man3c/pthread_mutex_consistent.3c
@@ -0,0 +1,87 @@
+.\"
+.\" This file and its contents are supplied under the terms of the
+.\" Common Development and Distribution License ("CDDL"), version 1.0.
+.\" You may only use this file in accordance with the terms of version
+.\" 1.0 of the CDDL.
+.\"
+.\" A full copy of the text of the CDDL should have accompanied this
+.\" source. A copy of the CDDL is also available via the Internet at
+.\" http://www.illumos.org/license/CDDL.
+.\"
+.\"
+.\" Copyright (c) 2014, Joyent, Inc.
+.\"
+.Dd "Dec 22, 2014"
+.Dt PTHREAD_MUTEX_CONSISTENT 3C
+.Os
+.Sh NAME
+.Nm pthread_mutex_consistent
+.Nd mark state protected by robust mutex as consistent
+.Sh SYNOPSIS
+.In pthread.h
+.Ft int
+.Fo pthread_mutex_consistent
+.Fa "pthread_mutex_t *mutex"
+.Fc
+.Sh DESCRIPTION
+The
+.Fn pthread_mutex_consistent
+function is used to indicate that a robust lock that is in an
+inconsistent state no longer is.
+.Lp
+A robust lock enters into an inconsistent state when a process or thread
+holding a robust lock exits, such as by calling
+.Xr exit 2
+or
+.Xr thr_exit 3C ,
+or crashes without unlocking the lock. At that point, if another process
+or thread is currently in a call, or calls
+.Xr pthread_mutex_lock 3C ,
+it will obtain the lock; however, the error code
+.Er EOWNERDEAD
+will be returned. In such cases, that thread will own the lock and must
+check and clean up any inconsistent state that is protected by the lock.
+When finished, it must call
+.Fn pthread_mutex_consistent
+to indicate that it is in a consistent state again.
+.Lp
+If a process or thread obtains a robust lock while it is in an
+inconsistent state and it crashes or terminates before marking the lock
+as consistent, the next process or thread that obtains the lock will
+receive
+.Er EOWNERDEAD .
+.Sh RETURN VALUES
+Upon successful completion, the
+.Fn pthread_mutex_consistent
+returns zero and marks
+.Va mutex
+as consistent. Callers of
+.Fn pthread_mutex_lock
+will not have
+.Er EOWNERDEAD
+returned until another process or thread exits without unlocking. Upon
+failure, an error will be returned which corresponds to one of the
+errors listed below.
+.Sh ERRORS
+The
+.Fn pthread_mutex_consistent
+function will fail if:
+.Bl -tag -width Er
+.It Er EINVAL
+.Va mutex
+is an uninitialized mutex, not a robust mutex, or not in an inconsistent
+state.
+.El
+.Sh INTERFACE STABILITY
+.Sy Committed
+.Sh MT-LEVEL
+.Sy MT-Safe
+.Sh SEE ALSO
+.Xr pthread_mutexattr_getrobust 3C ,
+.Xr pthread_mutex_destroy 3C ,
+.Xr pthread_mutex_lock 3C ,
+.Xr pthread_mutex_init 3C ,
+.Xr pthread 3HEAD ,
+.Xr libpthread 3LIB ,
+.Xr attributes 5 ,
+.Xr mutex 5
diff --git a/usr/src/man/man3c/pthread_mutexattr_getrobust.3c b/usr/src/man/man3c/pthread_mutexattr_getrobust.3c
new file mode 100644
index 0000000000..3f7abffff5
--- /dev/null
+++ b/usr/src/man/man3c/pthread_mutexattr_getrobust.3c
@@ -0,0 +1,120 @@
+.\"
+.\" This file and its contents are supplied under the terms of the
+.\" Common Development and Distribution License ("CDDL"), version 1.0.
+.\" You may only use this file in accordance with the terms of version
+.\" 1.0 of the CDDL.
+.\"
+.\" A full copy of the text of the CDDL should have accompanied this
+.\" source. A copy of the CDDL is also available via the Internet at
+.\" http://www.illumos.org/license/CDDL.
+.\"
+.\"
+.\" Copyright (c) 2014, Joyent, Inc.
+.\"
+.Dd "Dec 22, 2014"
+.Dt PTHREAD_MUTEXATTR_GETROBUST 3C
+.Os
+.Sh NAME
+.Nm pthread_mutexattr_getrobust ,
+.Nm pthrad_mutexattr_setrobust
+.Nd get and set the mutex robust attribute
+.Sh SYNOPSIS
+.In pthread.h
+.Ft int
+.Fo pthread_mutexattr_getrobust
+.Fa "const pthread_mutexattr_t *attr"
+.Fa "int *robust"
+.Fc
+.Ft int
+.Fo pthread_mutexattr_setrobust
+.Fa "pthread_mutexattr_t *attr"
+.Fa "int robust"
+.Fc
+.Sh DESCRIPTION
+The
+.Fn pthread_mutexattr_getrobust
+and
+.Fn pthread_mtuexattr_setrobust
+functions obtain and set a mutex's
+.Em robust
+attribute, putting it in, or obtaining it from
+.Va robust .
+The valid values for
+.Va robust
+include:
+.Bl -tag -width Dv
+.It Sy PTHREAD_MUTEX_STALLED
+The mutex referred to by
+.Va attr
+is a traditional mutex. When a thread holding an intra-process lock or a
+process holding an inter-process lock crashes or terminates without
+unlocking the mutex, then the lock will be
+.Sy stalled .
+For another thread or process to obtain the lock, something else must
+unlock it.
+.It Sy PTHREAD_MUTEX_ROBUST
+The mutex referred to by
+.Va attr
+is considered a robust mutex. When a process holding an inter-process
+lock crashes or terminates without unlocking the mutex, the attempt to
+lock it will return
+.Er EOWNERDEAD .
+This allows the new owner the chance to fix the internal state and call
+.Xr pthread_mutex_consistent 3C
+prior to unlocking the lock, allowing normal operation to proceed. Any
+crashes while in this state cause the next owner to obtain
+.Er EOWNERDEAD .
+.El
+.Sh RETURN VALUES
+Upon successful completion, the
+.Fn pthread_mutexattr_getrobust
+function will return
+.Sy 0
+and update
+.Fa robust
+with the current value of the robust attribute. Upon successful
+completion, the
+.Fn pthread_mutexattr_setrobust
+function will return
+.Sy 0
+and update the robust property of the attributes pointed to by
+.Va attr
+to
+.Va robust .
+If either function fails, an error code will be returned to indicate the
+error. Valid errors are defined below.
+.Sh ERRORS
+The
+.Fn pthread_mutexattr_getrobust
+function will fail if:
+.Bl -tag -width Er
+.It Er EINVAL
+.Va attr
+is invalid or a null pointer,
+.Va robust
+is a null pointer.
+.El
+.Lp
+The
+.Fn pthread_mutexattr_setrobust
+function will fail if:
+.Bl -tag -width Er
+.It Er EINVAL
+.Va attr
+is invalid or a null pointer,
+.Va robust
+is not one of
+.Sy PTHREAD_MUTEX_STALLED
+or
+.Sy PTHREAD_MUTEX_ROBUST .
+.El
+.Sh INTERFACE STABILITY
+.Sy Committed
+.Sh MT-LEVEL
+.Sy MT-Safe
+.Sh SEE ALSO
+.Xr pthread_mutex_consistent 3C ,
+.Xr pthread 3HEAD ,
+.Xr libpthread 3LIB ,
+.Xr attributes 5 ,
+.Xr mutex 5
diff --git a/usr/src/man/man3c/realpath.3c b/usr/src/man/man3c/realpath.3c
index efce404f83..c3de5205e6 100644
--- a/usr/src/man/man3c/realpath.3c
+++ b/usr/src/man/man3c/realpath.3c
@@ -1,4 +1,5 @@
'\" te
+.\" Copyright (c) 2014, Joyent, Inc.
.\" Copyright 1989 AT&T. Copyright (c) 2003, Sun Microsystems, Inc. All Rights Reserved. Portions Copyright (c) 1992, X/Open Company Limited. All Rights Reserved.
.\" Sun Microsystems, Inc. gratefully acknowledges The Open Group for permission to reproduce portions of its copyrighted documentation. Original documentation from The Open Group can be obtained online at
.\" http://www.opengroup.org/bookstore/.
@@ -7,7 +8,7 @@
.\" The contents of this file are subject to the terms of the Common Development and Distribution License (the "License"). You may not use this file except in compliance with the License.
.\" You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE or http://www.opensolaris.org/os/licensing. See the License for the specific language governing permissions and limitations under the License.
.\" When distributing Covered Code, include this CDDL HEADER in each file and include the License file at usr/src/OPENSOLARIS.LICENSE. If applicable, add the following below this CDDL HEADER, with the fields enclosed by brackets "[]" replaced with your own identifying information: Portions Copyright [yyyy] [name of copyright owner]
-.TH REALPATH 3C "Oct 9, 2003"
+.TH REALPATH 3C "Dec 20, 2014"
.SH NAME
realpath \- resolve pathname
.SH SYNOPSIS
@@ -17,10 +18,11 @@ realpath \- resolve pathname
\fBchar *\fR\fBrealpath\fR(\fBconst char *restrict\fR \fIfile_name\fR,
\fBchar *restrict\fR \fIresolved_name\fR);
+
+\fBchar *\fR\fBcanonicalize_file_name\fR(\fBconst char *\fR\fIpath\fR);
.fi
.SH DESCRIPTION
-.sp
.LP
The \fBrealpath()\fR function derives, from the pathname pointed to by
\fIfile_name\fR, an absolute pathname that names the same file, whose
@@ -28,15 +30,18 @@ resolution does not involve "\fB\&.\fR", "\fB\&..\fR", or symbolic links. The
generated pathname is stored as a null-terminated string, up to a maximum of
{\fBPATH_MAX\fR} bytes (defined in \fBlimits.h\fR(3HEAD)), in the buffer
pointed to by \fIresolved_name\fR.
-.SH RETURN VALUES
.sp
.LP
+The \fBcanonicalize_file_name()\fR function is equivalent to calling
+\fBrealpath\fR(\fIpath\fR, \fINULL\fR). This function is only provided for
+compatibility.
+.SH RETURN VALUES
+.LP
On successful completion, \fBrealpath()\fR returns a pointer to the resolved
name. Otherwise, \fBrealpath()\fR returns a null pointer and sets \fBerrno\fR
to indicate the error, and the contents of the buffer pointed to by
\fIresolved_name\fR are left in an indeterminate state.
.SH ERRORS
-.sp
.LP
The \fBrealpath()\fR function will fail if:
.sp
@@ -137,7 +142,6 @@ Insufficient storage space is available.
.RE
.SH USAGE
-.sp
.LP
The \fBrealpath()\fR function operates on null-terminated strings.
.sp
@@ -149,7 +153,6 @@ resolved path.
The \fBrealpath()\fR function might fail to return to the current directory if
an error occurs.
.SH ATTRIBUTES
-.sp
.LP
See \fBattributes\fR(5) for descriptions of the following attributes:
.sp
@@ -167,7 +170,6 @@ MT-Level MT-Safe
.TE
.SH SEE ALSO
-.sp
.LP
\fBgetcwd\fR(3C), \fBlimits.h\fR(3HEAD), \fBsysconf\fR(3C),
\fBattributes\fR(5), \fBstandards\fR(5)
diff --git a/usr/src/man/man3c/smt_pause.3c b/usr/src/man/man3c/smt_pause.3c
new file mode 100644
index 0000000000..2a890c4977
--- /dev/null
+++ b/usr/src/man/man3c/smt_pause.3c
@@ -0,0 +1,38 @@
+.\"
+.\" This file and its contents are supplied under the terms of the
+.\" Common Development and Distribution License ("CDDL"), version 1.0.
+.\" You may only use this file in accordance with the terms of version
+.\" 1.0 of the CDDL.
+.\"
+.\" A full copy of the text of the CDDL should have accompanied this
+.\" source. A copy of the CDDL is also available via the Internet at
+.\" http://www.illumos.org/license/CDDL.
+.\"
+.\"
+.\" Copyright (c) 2014, Joyent, Inc.
+.\"
+.Dd "Dec 22, 2014"
+.Dt SMT_PAUSE 3C
+.Os
+.Sh NAME
+.Nm smt_pause
+.Nd hardware-aware busy wait
+.Sh SYNOPSIS
+.In synch.h
+.Ft void
+.Fo smt_pause
+.Fa void
+.Fc
+.Sh DESCRIPTION
+The
+.Fn smt_pause
+function performs a busy-wait for an implementation defined period of
+time. On hardware platforms that support it, it notifies the hardware
+that this is occurring in an effort to minimize resource usage. This is
+commonly used in the implementation of spin loops.
+.Sh INTERFACE STABILITY
+.Sy Committed
+.Sh MT-LEVEL
+.Sy MT-Safe
+.Sh SEE ALSO
+.Xr attributes 5
diff --git a/usr/src/man/man3c/string.3c b/usr/src/man/man3c/string.3c
index 4c31ca5f81..cc934221e3 100644
--- a/usr/src/man/man3c/string.3c
+++ b/usr/src/man/man3c/string.3c
@@ -1,5 +1,6 @@
'\" te
.\" Copyright 2014 Garrett D'Amore <garrett@damore.org>
+.\" Copyright (c) 2014, Joyent, Inc.
.\" Copyright (c) 2008, Sun Microsystems, Inc. All Rights Reserved.
.\" Copyright 1989 AT&T
.\" Portions Copyright (c) 1994 Man-cgi 1.15, Panagiotis Christias (christia@softlab.ntua.gr)
@@ -12,12 +13,13 @@
.\" The contents of this file are subject to the terms of the Common Development and Distribution License (the "License"). You may not use this file except in compliance with the License.
.\" You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE or http://www.opensolaris.org/os/licensing. See the License for the specific language governing permissions and limitations under the License.
.\" When distributing Covered Code, include this CDDL HEADER in each file and include the License file at usr/src/OPENSOLARIS.LICENSE. If applicable, add the following below this CDDL HEADER, with the fields enclosed by brackets "[]" replaced with your own identifying information: Portions Copyright [yyyy] [name of copyright owner]
-.TH STRING 3C "Jun 21, 2013"
+.TH STRING 3C "Dec 20, 2014"
.SH NAME
string, strcasecmp, strcasecmp_l, strncasecmp, strncasecmp_l, strcat, strncat,
-strlcat, strchr, strrchr,
-strcmp, strncmp, strcpy, strncpy, strlcpy, strcspn, strspn, strdup, strlen,
-strnlen, strpbrk, strsep, strstr, strtok, strtok_r \- string operations
+strlcat, strchr, strchrnul, strrchr, strcmp, strncmp, stpcpy, stpncpy, strcpy,
+strncpy, strlcpy, strcspn, strspn, strdup, strndup, strdupa, strndupa, strlen,
+strnlen, strpbrk, strsep, strstr, strnstr, strcasestr, strtok, strtok_r \-
+string operations
.SH SYNOPSIS
.LP
.nf
@@ -69,6 +71,14 @@ strnlen, strpbrk, strsep, strstr, strtok, strtok_r \- string operations
.fi
.LP
.nf
+\fBchar *\fR\fBstpcpy\fR(\fBchar *restrict\fR \fIs1\fR, \fBconst char *restrict\fR \fIs2\fR);
+.fi
+.LP
+.nf
+\fBchar *\fR\fBstpncpy\fR(\fBchar *restrict\fR \fIs1\fR, \fBconst char *restrict\fR \fIs2\fR, \fBsize_t\fR \fIn\fR);
+.fi
+.LP
+.nf
\fBchar *\fR\fBstrcpy\fR(\fBchar *restrict\fR \fIs1\fR, \fBconst char *restrict\fR \fIs2\fR);
.fi
.LP
@@ -93,6 +103,18 @@ strnlen, strpbrk, strsep, strstr, strtok, strtok_r \- string operations
.fi
.LP
.nf
+\fBchar *\fR\fBstrndup\fR(\fBconst char *\fR\fIs1\fR, \fBsize_t\fR \fIn\fR);
+.fi
+.LP
+.nf
+\fBchar *\fR\fBstrdupa\fR(\fBconst char *\fR\fIs1\fR);
+.fi
+.LP
+.nf
+\fBchar *\fR\fBstrndupa\fR(\fBconst char *\fR\fIs1\fR, \fBsize_t\fR \fIn\fR);
+.fi
+.LP
+.nf
\fBsize_t\fR \fBstrlen\fR(\fBconst char *\fR\fIs\fR);
.fi
.LP
@@ -113,6 +135,18 @@ strnlen, strpbrk, strsep, strstr, strtok, strtok_r \- string operations
.fi
.LP
.nf
+\fBchar *\fR\fBstrnstr\fR(\fBconst char *\fR\fIs1\fR, \fBconst char *\fR\fIs2\fR, \fBsize_t\fR \fIn\fR);
+.fi
+.LP
+.nf
+\fBchar *\fR\fBstrcasestr\fR(\fBconst char *\fR\fIs1\fR, \fBconst char *\fR\fIs2\fR);
+.fi
+.LP
+.nf
+\fBchar *\fR\fBstrcasestr_l\fR(\fBconst char *\fR\fIs1\fR, \fBconst char *\fR\fIs2\fR, \fBlocale_t\fR \fIloc\fR);
+.fi
+.LP
+.nf
\fBchar *\fR\fBstrtok\fR(\fBchar *restrict\fR \fIs1\fR, \fBconst char *restrict\fR \fIs2\fR);
.fi
.LP
@@ -129,6 +163,10 @@ strnlen, strpbrk, strsep, strstr, strtok, strtok_r \- string operations
.fi
.LP
.nf
+\fBconst char *\fR\fBstrchrnul\fR(\fBconst char *\fR\fIs\fR, \fBint\fR \fIc\fR);
+.fi
+.LP
+.nf
\fBconst char *\fR\fBstrpbrk\fR(\fBconst char *\fR\fIs1\fR, \fBconst char *\fR\fIs2\fR);
.fi
.LP
@@ -160,13 +198,13 @@ strnlen, strpbrk, strsep, strstr, strtok, strtok_r \- string operations
.SH DESCRIPTION
.LP
The arguments \fIs\fR, \fIs1\fR, and \fIs2\fR point to strings (arrays of
-characters terminated by a null character). The \fBstrcat()\fR,
-\fBstrncat()\fR, \fBstrlcat()\fR, \fBstrcpy()\fR, \fBstrncpy()\fR,
-\fBstrlcpy()\fR, \fBstrsep()\fR, \fBstrtok()\fR, and \fBstrtok_r()\fR functions
-all alter their first argument. Additionally, the \fBstrcat()\fR and
-\fBstrcpy()\fR functions do not check for overflow of the array.
+characters terminated by a null character). The \fBstrcat()\fR, \fBstrncat()\fR,
+\fBstrlcat()\fR, \fBstrcpy()\fR, \fBstpcpy()\fR, \fBstpncpy()\fR,
+\fBstrncpy()\fR, \fBstrlcpy()\fR, \fBstrsep()\fR, \fBstrtok()\fR, and
+\fBstrtok_r()\fR functions all alter their first argument. Additionally, the
+\fBstrcat()\fR, \fBstpcpy()\fR, and \fBstrcpy()\fR functions do not check for
+overflow of the array.
.SS "\fBstrcasecmp()\fR, \fBstrncasecmp()\fR"
-.sp
.LP
The \fBstrcasecmp()\fR and \fBstrncasecmp()\fR functions are case-insensitive
versions of \fBstrcmp()\fR and \fBstrncmp()\fR respectively, described below.
@@ -220,13 +258,16 @@ if (strlcat(dst, src, dstsize) >= dstsize)
return \(mi1;
.fi
.in -2
-.SS "\fBstrchr()\fR, \fBstrrchr()\fR"
+.SS "\fBstrchr()\fR, \fBstrrchr()\fR, \fBstrchrnul()\fR"
.LP
The \fBstrchr()\fR function returns a pointer to the first occurrence of
\fIc\fR (converted to a \fBchar\fR) in string \fIs\fR, or a null pointer if
\fIc\fR does not occur in the string. The \fBstrrchr()\fR function returns a
pointer to the last occurrence of \fIc\fR. The null character terminating a
-string is considered to be part of the string.
+string is considered to be part of the string. The \fBstrchrnul()\fR function
+behaves similarly to \fBstrchr()\fR, except when the character \fBc\fR is not
+found, it returns a pointer to the null terminator of the string \fBs\fR and not
+a null pointer.
.SS "\fBstrcmp()\fR, \fBstrncmp()\fR"
.LP
The \fBstrcmp()\fR function compares two strings byte-by-byte, according to the
@@ -260,23 +301,35 @@ if (strlcpy(dst, src, dstsize) >= dstsize)
return \(mi1;
.fi
.in -2
-
+.SS "\fBstpcpy()\fR, \fBstpncpy()\fR"
+.LP
+The \fBstpcpy()\fR and \fBstpncpy()\fR functions behave identically to
+\fBstrcpy()\fR and \fBstrncpy()\fR respectively; however, instead of returning a
+pointer to the beginning of \fIs1\fR, they return a pointer to the terminating
+null character.
.SS "\fBstrcspn()\fR, \fBstrspn()\fR"
.LP
The \fBstrcspn()\fR function returns the length of the initial segment of
string \fIs1\fR that consists entirely of characters not from string \fIs2\fR.
The \fBstrspn()\fR function returns the length of the initial segment of string
\fIs1\fR that consists entirely of characters from string \fIs2\fR.
-.SS "\fBstrdup()\fR"
+.SS "\fBstrdup()\fR, \fBstrndup()\fR, \fBstrdupa()\fR, \fBstrndupa()\fR"
.LP
The \fBstrdup()\fR function returns a pointer to a new string that is a
duplicate of the string pointed to by \fIs1\fR. The returned pointer can be
passed to \fBfree()\fR. The space for the new string is obtained using
\fBmalloc\fR(3C). If the new string cannot be created, a null pointer is
returned and \fBerrno\fR may be set to \fBENOMEM\fR to indicate that the
-storage space available is insufficient.
+storage space available is insufficient. The \fBstrndup()\fR function is
+identical to \fBstrdup()\fR, execept it copies at most \fIn\fR bytes from
+\fBs1\fR and ensures the copied string is awlays null terminated.
+.LP
+The functions \fBstrdupa()\fR and \fBstrndupa()\fR behave identically to
+\fBstrdup()\fr and \fBstrndup()\fR respectively; however, instead of allocating
+memory using \fBmalloc\fR(3C), they use \fBalloca\fR(3C). These functions are
+provided for compatibility only, their use is strongly discouraged due to their
+use of \fBalloca\fR(3C).
.SS "\fBstrlen()\fR, \fBstrnlen()\fR"
-.sp
The \fBstrlen()\fR function returns the number of bytes in \fIs\fR, not
including the terminating null character.
.LP
@@ -303,13 +356,22 @@ detected by comparing the location referenced by the pointer returned by
\fBstrsep()\fR to `\e0'.
.LP
If *\fIstringp\fR is initially \fINULL\fR, \fBstrsep()\fR returns \fINULL\fR.
-.SS "\fBstrstr()\fR"
+.SS "\fBstrstr()\fR, \fBstrnstr()\fR, \fBstrcasestr()\fR, \fBstrcasestr_l()\fR"
.LP
The \fBstrstr()\fR function locates the first occurrence of the string \fIs2\fR
(excluding the terminating null character) in string \fIs1\fR and returns a
pointer to the located string, or a null pointer if the string is not found. If
\fIs2\fR points to a string with zero length (that is, the string \fB""\fR),
-the function returns \fIs1\fR.
+the function returns \fIs1\fR. The \fBstrnstr()\fR function performs the same
+search as \fBstrstr()\fR, but only considers up to \fIn\fR bytes of \fIs1\fR.
+Bytes following a null byte are not compared.
+.sp
+.LP
+The \fBstrcasestr()\fR and \fBstrcasestr_l()\fR functions are similar to
+\fBstrstr()\fR, but both functions ignore the case of both \fBs1\fR and
+\fBs2\fR. Where as the \fBstrcasestr()\fR function operates in the current
+locale, the \fBstrcasestr_l()\fR function operates in the locale specified by
+\fIloc\fR.
.SS "\fBstrtok()\fR"
.LP
A sequence of calls to \fBstrtok()\fR breaks the string pointed to by \fIs1\fR
@@ -487,8 +549,8 @@ The
\fBstrlcat()\fR, \fBstrlcpy()\fR, and \fBstrsep()\fR functions are Committed.
All the rest are Standard.
.LP
-The \fBstrtok()\fR and \fBstrdup()\fR functions are MT-Safe. The remaining
-functions are Async-Signal-Safe.
+The \fBstrtok()\fR, \fBstrdup()\fR, and \fBstrndup()\fR functions are MT-Safe.
+The remaining functions are Async-Signal-Safe.
.LP
For all except \fBstrlcat()\fR, \fBstrlcpy()\fR, and \fBstrsep()\fR, see
\fBstandards\fR(5).
diff --git a/usr/src/man/man3c/unsetenv.3c b/usr/src/man/man3c/unsetenv.3c
index 806206a720..3fc11e8b87 100644
--- a/usr/src/man/man3c/unsetenv.3c
+++ b/usr/src/man/man3c/unsetenv.3c
@@ -8,7 +8,7 @@
.\" The contents of this file are subject to the terms of the Common Development and Distribution License (the "License"). You may not use this file except in compliance with the License.
.\" You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE or http://www.opensolaris.org/os/licensing. See the License for the specific language governing permissions and limitations under the License.
.\" When distributing Covered Code, include this CDDL HEADER in each file and include the License file at usr/src/OPENSOLARIS.LICENSE. If applicable, add the following below this CDDL HEADER, with the fields enclosed by brackets "[]" replaced with your own identifying information: Portions Copyright [yyyy] [name of copyright owner]
-.TH UNSETENV 3C "Nov 1, 2003"
+.TH UNSETENV 3C "Dec 20, 2014"
.SH NAME
unsetenv \- remove an environment variable
.SH SYNOPSIS
@@ -20,7 +20,6 @@ unsetenv \- remove an environment variable
.fi
.SH DESCRIPTION
-.sp
.LP
The \fBunsetenv()\fR function removes an environment variable from the
environment of the calling process. The \fIname\fR argument points to a string
@@ -34,12 +33,10 @@ If the application modifies \fIenviron\fR or the pointers to which it points,
the behavior of \fBunsetenv()\fR is undefined. The \fBunsetenv()\fR function
updates the list of pointers to which \fIenviron\fR points.
.SH RETURN VALUES
-.sp
.LP
Upon successful completion, 0 is returned. Otherwise, -1 is returned,
\fBerrno\fR set to indicate the error, and the environment is left unchanged.
.SH ERRORS
-.sp
.LP
The \fBunsetenv()\fR function will fail if:
.sp
@@ -53,7 +50,6 @@ to a string containing an '=' character.
.RE
.SH ATTRIBUTES
-.sp
.LP
See \fBattributes\fR(5) for descriptions of the following attributes:
.sp
@@ -71,6 +67,6 @@ MT-Level MT-Safe
.TE
.SH SEE ALSO
-.sp
.LP
-\fBgetenv\fR(3C), \fBsetenv\fR(3C), \fBattributes\fR(5), \fBstandards\fR(5)
+\fBclearenv\fR(3C), \fBgetenv\fR(3C), \fBsetenv\fR(3C), \fBattributes\fR(5),
+\fBstandards\fR(5)
diff --git a/usr/src/man/man3lib/libc.3lib b/usr/src/man/man3lib/libc.3lib
index 38f86d50c8..827bf53f28 100644
--- a/usr/src/man/man3lib/libc.3lib
+++ b/usr/src/man/man3lib/libc.3lib
@@ -156,13 +156,15 @@ l l .
\fBbsearch\fR
\fBbtowc\fR \fBbtowc_l\fR
\fBbzero\fR \fBcalloc\fR
+\fBcanonicalize_file_name\fR
\fBcatclose\fR \fBcatgets\fR
\fBcatopen\fR \fBcfgetispeed\fR
\fBcfgetospeed\fR \fBcfsetispeed\fR
\fBcfsetospeed\fR \fBcftime\fR
\fBchdir\fR \fBchmod\fR
\fBchown\fR \fBchroot\fR
-\fBclearerr\fR \fBclock\fR
+\fBclearerr\fR \fBclearenv\fR
+\fBclock\fR
\fBclock_getres\fR \fBclock_gettime\fR
\fBclock_nanosleep\fR \fBclock_settime\fR
\fBclose\fR \fBclosedir\fR
@@ -220,16 +222,19 @@ l l .
\fBfaccessat\fR
\fBfacl\fR \fBfattach\fR
\fBfchdir\fR \fBfchmod\fR
+\fBfchmodat\fR
\fBfchown\fR \fBfchownat\fR
\fBfchroot\fR \fBfclose\fR
-\fBfcntl\fR \fBfconvert\fR
-\fBfcvt\fR \fBfdatasync\fR
-\fBfdetach\fR
+\fBfcloseall\fR \fBfcntl\fR
+\fBfconvert\fR \fBfcvt\fR
+\fBfdatasync\fR \fBfdetach\fR
\fBfdopen\fR \fBfdopendir\fR
\fBfdwalk\fR \fBfeof\fR
\fBferror\fR \fBfflush\fR
-\fBffs\fR \fBfgetattr\fR
-\fBfgetc\fR
+\fBffs\fR \fBffsl\fR
+\fBffsll\fR \fBfls\fR
+\fBflsl\fR \fBflsll\fR
+\fBfgetattr\fR \fBfgetc\fR
\fBfgetgrent\fR \fBfgetgrent_r\fR
\fBfgetpos\fR \fBfgetpwent\fR
\fBfgetpwent_r\fR \fBfgets\fR
@@ -286,6 +291,7 @@ l l .
\fBgetloadavg\fR \fBgetlogin\fR
\fBgetlogin_r\fR \fBgetmntany\fR
\fBgetmntent\fR \fBgetmsg\fR
+\fBget_nprocs\fR \fBget_nprocs_conf\fR
\fBgetnetgrent\fR \fBgetnetgrent_r\fR
\fBgetopt\fR \fBgetopt_clip\fR
\fBgetopt_long\fR \fBgetopt_long_only\fR
@@ -295,7 +301,8 @@ l l .
\fBgetpgid\fR \fBgetpgrp\fR
\fBgetpid\fR \fBgetpmsg\fR
\fBgetppid\fR \fBgetppriv\fR
-\fBgetpriority\fR \fBgetprojid\fR
+\fBgetpriority\fR \fbgetprogname\fR
+\fBgetprojid\fR
\fBgetpw\fR \fBgetpwent\fR
\fBgetpwent_r\fR \fBgetpwnam\fR
\fBgetpwnam_r\fR \fBgetpwuid\fR
@@ -379,8 +386,8 @@ l l .
\fBlcong48\fR \fBldexp\fR
\fBldivide\fR \fBlexp10\fR
\fBlfind\fR \fBlfmt\fR
-\fBlink\fR \fBlio_listio\fR
-\fBllabs\fR
+\fBlink\fR \fBlinkat\fR
+\fBlio_listio\fR \fBllabs\fR
\fBlldiv\fR \fBllog10\fR
\fBllseek\fR \fBlltostr\fR
\fBlocaleconv\fR \fBlocaltime\fR
@@ -406,10 +413,13 @@ l l .
\fBmembar_producer\fR \fBmemccpy\fR
\fBmemchr\fR \fBmemcmp\fR
\fBmemcntl\fR \fBmemcpy\fR
-\fBmeminfo\fR \fBmemmove\fR
+\fBmeminfo\fR \fBmemmem\fR
+\fBmemmove\fR
\fBmemset\fR \fBmincore\fR
-\fBmkdir\fR \fBmkfifo\fR
-\fBmknod\fR \fBmkstemp\fR
+\fBmkdir\fR \fBmkdirat\fR
+\fBmkfifo\fR \fBmkfifoat\fR
+\fBmknod\fR \fBmknodat\fR
+\fBmkstemp\fR
\fBmktemp\fR \fBmktime\fR
\fBmlock\fR \fBmlockall\fR
\fBmmap\fR \fBmmapobj\fR
@@ -574,6 +584,7 @@ l l .
\fBre_comp\fR \fBre_exec\fR
\fBread\fR \fBreaddir\fR
\fBreaddir_r\fR \fBreadlink\fR
+\fBreadlinkat\fR
\fBreadv\fR \fBrealloc\fR
\fBrealpath\fR \fBreboot\fR
\fBregcmp\fR \fBregcomp\fR
@@ -623,7 +634,8 @@ l l .
\fBsetlogmask\fR \fBsetnetgrent\fR
\fBsetpflags\fR \fBsetpgid\fR
\fBsetpgrp\fR \fBsetppriv\fR
-\fBsetpriority\fR \fBsetpwent\fR
+\fBsetpriority\fR \fBsetprogname\fR
+\fBsetpwent\fR
\fBsetrctl\fR \fBsetregid\fR
\fBsetreuid\fR \fBsetrlimit\fR
\fBsetsid\fR \fBsetspent\fR
@@ -651,7 +663,8 @@ l l .
\fBsigstack\fR \fBsigsuspend\fR
\fBsigtimedwait\fR \fBsigwait\fR
\fBsigwaitinfo\fR \fBsingle_to_decimal\fR
-\fBsleep\fR \fBsnprintf\fR
+\fBsleep\fR \fBsmt_pause\fR
+\fBsnprintf\fR
\fBsprintf\fR \fBsrand\fR
\fBsrand48\fR \fBsrandom\fR
\fBsscanf\fR \fBssignal\fR
@@ -670,10 +683,10 @@ l l .
\fBstrftime\fR \fBstrftime_l\fR
\fBstring_to_decimal\fR
\fBstrlcat\fR \fBstrlcpy\fR
-\fBstrlen\fR
-\fBstrncasecmp\fR \fBstrncasecmp_l\fR
-\fBstrncat\fR \fBstrncmp\fR
-\fBstrncpy\fR \fBstrpbrk\fR
+\fBstrlen\fR \fBstrncasecmp\fR
+\fBstrncasecmp_l\fR \fBstrncat\fR
+\fBstrncmp\fR \fBstrncpy\fR
+\fBstrnstr\fR \fBstrpbrk\fR
\fBstrptime\fR \fBstrptime_l\fR
\fBstrrchr\fR \fBstrsep\fR
\fBstrsignal\fR \fBstrspn\fR
@@ -687,6 +700,7 @@ l l .
\fBswab\fR \fBswapcontext\fR
\fBswapctl\fR \fBswprintf\fR
\fBswscanf\fR \fBsymlink\fR
+\fBsymlinkat\fR
\fBsync\fR \fBsync_instruction_memory\fR
\fBsysconf\fR \fBsysfs\fR
\fBsysinfo\fR \fBsyslog\fR
@@ -1007,13 +1021,13 @@ to avoid conflicting with an application that might define its own version of
\fBgetpwent()\fR with completely different semantics. Standard-conforming
applications may not define and use function names with leading underscores.
.LP
-Solaris system libraries are now built with direct binding. This means that a
+illumos system libraries are now built with direct binding. This means that a
system library that calls \fBgetpwent()\fR will bind directly to the instance
of \fBgetpwent()\fR in \fBlibc\fR, even if the application to which it is
linked defines a different \fBgetpwent()\fR for its own use. The application
binds to its instance of \fBgetpwent()\fR and there is no resulting conflict.
The direct binding mechanism is equally available to libraries not delivered
-with Solaris.
+with illumos.
.LP
As a result of this evolution, most of the leading-underscore synonym symbols
have been removed from \fBlibc\fR. This means that applications that call
diff --git a/usr/src/man/man9f/Intro.9f b/usr/src/man/man9f/Intro.9f
index 96957ac4df..ba32b2978e 100644
--- a/usr/src/man/man9f/Intro.9f
+++ b/usr/src/man/man9f/Intro.9f
@@ -8,7 +8,6 @@
.SH NAME
Intro, intro \- introduction to DDI/DKI functions
.SH DESCRIPTION
-.sp
.LP
Section 9F describes the kernel functions available for use by device drivers.
See \fBIntro\fR(9E) for an overview of device driver interfaces.
@@ -124,7 +123,6 @@ which can be referred to for further information.
Every driver MUST include <\fBsys/ddi.h\fR> and <\fBsys/sunddi.h\fR>, in that
order, and as the last files the driver includes.
.SH STREAMS KERNEL FUNCTION SUMMARY
-.sp
.LP
The following table summarizes the STREAMS functions described in this section.
.sp
@@ -137,7 +135,7 @@ Routine Type
_
\fBadjmsg\fR DDI/DKI
\fBallocb\fR DDI/DKI
-\fBallocb_tmpl\fR Solaris DDI
+\fBallocb_tmpl\fR illumos DDI
\fBbackq\fR DDI/DKI
\fBbcanput\fR DDI/DKI
\fBbcanputnext\fR DDI/DKI
@@ -147,10 +145,10 @@ _
\fBclrbuf\fR DDI/DKI
\fBcopyb\fR DDI/DKI
\fBcopymsg\fR DDI/DKI
-\fBDB_BASE\fR Solaris DDI
-\fBDB_LIM\fR Solaris DDI
-\fBDB_REF\fR Solaris DDI
-\fBDB_TYPE\fR Solaris DDI
+\fBDB_BASE\fR illumos DDI
+\fBDB_LIM\fR illumos DDI
+\fBDB_REF\fR illumos DDI
+\fBDB_TYPE\fR illumos DDI
\fBdatamsg\fR DDI/DKI
\fBdupb\fR DDI/DKI
\fBdupmsg\fR DDI/DKI
@@ -163,28 +161,28 @@ _
\fBfreemsg\fR DDI/DKI
\fBfreezestr\fR DDI/DKI
\fBgetq\fR DDI/DKI
-\fBIOC_CONVER_FROM\fR Solaris DDI
+\fBIOC_CONVER_FROM\fR illumos DDI
\fBinsq\fR DDI/DKI
\fBlinkb\fR DDI/DKI
-\fBMBLKHEAD\fR Solaris DDI
-\fBMBLKIN\fR Solaris DDI
-\fBMBLKL\fR Solaris DDI
-\fBMBLKSIZE\fR Solaris DDI
-\fBMBLKTAIL\fR Solaris DDI
-\fBmcopyin\fR Solaris DDI
-\fBmcopymsg\fR Solaris DDI
-\fBmcopyout\fR Solaris DDI
-\fBmerror\fR Solaris DDI
-\fBmexchange\fR Solaris DDI
-\fBmioc2ack\fR Solaris DDI
-\fBmiocack\fR Solaris DDI
-\fBmexchange\fR Solaris DDI
-\fBmiocpullup\fR Solaris DDI
-\fBmkiocb\fR Solaris DDI
+\fBMBLKHEAD\fR illumos DDI
+\fBMBLKIN\fR illumos DDI
+\fBMBLKL\fR illumos DDI
+\fBMBLKSIZE\fR illumos DDI
+\fBMBLKTAIL\fR illumos DDI
+\fBmcopyin\fR illumos DDI
+\fBmcopymsg\fR illumos DDI
+\fBmcopyout\fR illumos DDI
+\fBmerror\fR illumos DDI
+\fBmexchange\fR illumos DDI
+\fBmioc2ack\fR illumos DDI
+\fBmiocack\fR illumos DDI
+\fBmexchange\fR illumos DDI
+\fBmiocpullup\fR illumos DDI
+\fBmkiocb\fR illumos DDI
\fBmsgdsize\fR DDI/DKI
\fBmsgpullup\fR DDI/DKI
-\fBmsgsize\fR Solaris DDI
-\fBmt-streams\fR Solaris DDI
+\fBmsgsize\fR illumos DDI
+\fBmt-streams\fR illumos DDI
\fBnoenable\fR DDI/DKI
\fBOTHERQ\fR DDI/DKI
\fBpullupmsg\fR DDI/DKI
@@ -195,19 +193,19 @@ _
\fBputnext\fR DDI/DKI
\fBputnextctl\fR DDI/DKI
\fBputq\fR DDI/DKI
-\fBqassociate\fR Solaris DDI
-\fBqbufcall\fR Solaris DDI
+\fBqassociate\fR illumos DDI
+\fBqbufcall\fR illumos DDI
\fBqenable\fR DDI/DKI
\fBqprocson\fR DDI/DKI
\fBqprocsoff\fR DDI/DKI
\fBqreply\fR DDI/DKI
\fBqsize\fR DDI/DKI
-\fBqtimeout\fR Solaris DDI
-\fBqunbufcall\fR Solaris DDI
-\fBquntimeout\fR Solaris DDI
-\fBqwait\fR Solaris DDI
-\fBqwait_sig\fR Solaris DDI
-\fBqwriter\fR Solaris DDI
+\fBqtimeout\fR illumos DDI
+\fBqunbufcall\fR illumos DDI
+\fBquntimeout\fR illumos DDI
+\fBqwait\fR illumos DDI
+\fBqwait_sig\fR illumos DDI
+\fBqwriter\fR illumos DDI
\fBRD\fR DDI/DKI
\fBrmvb\fR DDI/DKI
\fBrmvq\fR DDI/DKI
@@ -234,8 +232,8 @@ l l .
Routine Type
_
\fBASSERT\fR DDI/DKI
-\fBanocancel\fR Solaris DDI
-\fBaphysio\fR Solaris DDI
+\fBanocancel\fR illumos DDI
+\fBaphysio\fR illumos DDI
\fBatomic_add\fR DDI/DKI
\fBatomic_and\fR DDI/DKI
\fBatomic_bits\fR DDI/DKI
@@ -247,14 +245,14 @@ _
\fBatomic_swap\fR DDI/DKI
\fBbcmp\fR DDI/DKI
\fBbcopy\fR DDI/DKI
-\fBbioclone\fR Solaris DDI
+\fBbioclone\fR illumos DDI
\fBbiodone\fR DDI/DKI
-\fBbiofini\fR Solaris DDI
-\fBbioinit\fR Solaris DDI
-\fBbiomodified\fR Solaris DDI
-\fBbiosize\fR Solaris DDI
-\fBbioerror\fR Solaris DDI
-\fBbioreset\fR Solaris DDI
+\fBbiofini\fR illumos DDI
+\fBbioinit\fR illumos DDI
+\fBbiomodified\fR illumos DDI
+\fBbiosize\fR illumos DDI
+\fBbioerror\fR illumos DDI
+\fBbioreset\fR illumos DDI
\fBbiowait\fR DDI/DKI
\fBbp_copyin\fR DDI/DKI
\fBbp_copyout\fR DDI/DKI
@@ -264,604 +262,606 @@ _
\fBbtopr\fR DDI/DKI
\fBbzero\fR DDI/DKI
\fBcmn_err\fR DDI/DKI
-\fBcondvar\fR Solaris DDI
+\fBcondvar\fR illumos DDI
\fBcopyin\fR DDI/DKI
\fBcopyout\fR DDI/DKI
-\fBcsx_AccessConfigurationRegister\fR Solaris DDI
-\fBcsx_ConvertSize\fR Solaris DDI
-\fBcsx_ConvertSpeed\fR Solaris DDI
-\fBcsx_CS_DDI_Info\fR Solaris DDI
-\fBcsx_DeregisterClient\fR Solaris DDI
-\fBcsx_DupHandle\fR Solaris DDI
-\fBcsx_Error2Text\fR Solaris DDI
-\fBcsx_Event2Text\fR Solaris DDI
-\fBcsx_FreeHandle\fR Solaris DDI
-\fBcsx_Get8\fR Solaris DDI
-\fBcsx_GetFirstClient\fR Solaris DDI
-\fBcsx_GetFirstTuple\fR Solaris DDI
-\fBcsx_GetHandleOffset\fR Solaris DDI
-\fBcsx_GetMappedAddr\fR Solaris DDI
-\fBcsx_GetStatus\fR Solaris DDI
-\fBcsx_GetTupleData\fR Solaris DDI
-\fBcsx_MakeDeviceNode\fR Solaris DDI
-\fBcsx_MapLogSocket\fR Solaris DDI
-\fBcsx_MapMemPage\fR Solaris DDI
-\fBcsx_ModifyConfiguration\fR Solaris DDI
-\fBcsx_ModifyWindow\fR Solaris DDI
-\fBcsx_Parse_CISTPL_BATTERY\fR Solaris DDI
-\fBcsx_Parse_CISTPL_BYTEORDER\fR Solaris DDI
-\fBcsx_Parse_CISTPL_CFTABLE_ENTRY\fR Solaris DDI
-\fBcsx_Parse_CISTPL_CONFIG\fR Solaris DDI
-\fBcsx_Parse_CISTPL_DATE\fR Solaris DDI
-\fBcsx_Parse_CISTPL_DEVICE\fR Solaris DDI
-\fBcsx_Parse_CISTPL_DEVICEGEO\fR Solaris DDI
-\fBcsx_Parse_CISTPL_DEVICEGEO_A\fR Solaris DDI
-\fBcsx_Parse_CISTPL_FORMAT\fR Solaris DDI
-\fBcsx_Parse_CISTPL_FUNCE\fR Solaris DDI
-\fBcsx_Parse_CISTPL_FUNCID\fR Solaris DDI
-\fBcsx_Parse_CISTPL_GEOMETRY\fR Solaris DDI
-\fBcsx_Parse_CISTPL_JEDEC_C\fR Solaris DDI
-\fBcsx_Parse_CISTPL_LINKTARGET\fR Solaris DDI
-\fBcsx_Parse_CISTPL_LONGLINK_A\fR Solaris DDI
-\fBcsx_Parse_CISTPL_LONGLINK_MFC\fR Solaris DDI
-\fBcsx_Parse_CISTPL_MANFID\fR Solaris DDI
-\fBcsx_Parse_CISTPL_ORG\fR Solaris DDI
-\fBcsx_Parse_CISTPL_SPCL\fR Solaris DDI
-\fBcsx_Parse_CISTPL_SWIL\fR Solaris DDI
-\fBcsx_Parse_CISTPL_VERS_1\fR Solaris DDI
-\fBcsx_Parse_CISTPL_VERS_2\fR Solaris DDI
-\fBcsx_ParseTuple\fR Solaris DDI
-\fBcsx_Put8\fR Solaris DDI
-\fBcsx_RegisterClient\fR Solaris DDI
-\fBcsx_ReleaseConfiguration\fR Solaris DDI
-\fBcsx_RepGet8\fR Solaris DDI
-\fBcsx_RepPut8\fR Solaris DDI
-\fBcsx_RequestConfiguration\fR Solaris DDI
-\fBcsx_RequestIO\fR Solaris DDI
-\fBcsx_RequestIRQ\fR Solaris DDI
-\fBcsx_RequestSocketMask\fR Solaris DDI
-\fBcsx_RequestWindow\fR Solaris DDI
-\fBcsx_ResetFunction\fR Solaris DDI
-\fBcsx_SetEventMask\fR Solaris DDI
-\fBcsx_SetHandleOffset\fR Solaris DDI
-\fBcsx_ValidateCIS\fR Solaris DDI
-\fBcv_broadcast\fR Solaris DDI
-\fBcv_destroy\fR Solaris DDI
-\fBcv_init\fR Solaris DDI
-\fBcv_signal\fR Solaris DDI
-\fBcv_timedwait\fR Solaris DDI
-\fBcv_wait\fR Solaris DDI
-\fBcv_wait_sig\fR Solaris DDI
-\fBddi_add_event_handler\fR Solaris DDI
-\fBddi_add_intr\fR Solaris DDI
-\fBddi_add_softintr\fR Solaris DDI
-\fBddi_binding_name\fR Solaris DDI
-\fBddi_btop\fR Solaris DDI
-\fBddi_btopr\fR Solaris DDI
-\fBddi_can_receive_sig\fR Solaris DDI
-\fBddi_check_acc_handle\fR Solaris DDI
-\fBddi_copyin\fR Solaris DDI
-\fBddi_copyout\fR Solaris DDI
-\fBddi_create_minor_node\fR Solaris DDI
-\fBddi_cred\fR Solaris DDI
-\fBddi_dev_is_sid\fR Solaris DDI
-\fBddi_dev_nintrs\fR Solaris DDI
-\fBddi_dev_nregs\fR Solaris DDI
-\fBddi_dev_regsize\fR Solaris DDI
-\fBddi_device_copy\fR Solaris DDI
-\fBddi_device_zero\fR Solaris DDI
-\fBddi_devmap_segmap\fR Solaris DDI
-\fBddi_dma_addr_bind_handle\fR Solaris DDI
-\fBddi_dma_alloc_handle\fR Solaris DDI
-\fBddi_dma_buf_bind_handle\fR Solaris DDI
-\fBddi_dma_burstsizes\fR Solaris DDI
-\fBddi_dma_free_handle\fR Solaris DDI
-\fBddi_dma_getwin\fR Solaris DDI
-\fBddi_dma_mem_alloc\fR Solaris DDI
-\fBddi_dma_mem_free\fR Solaris DDI
-\fBddi_dma_nextcookie\fR Solaris DDI
-\fBddi_dma_numwin\fR Solaris DDI
-\fBddi_dma_set_sbus64\fR Solaris DDI
-\fBddi_dma_sync\fR Solaris DDI
-\fBddi_dma_unbind_handle\fR Solaris DDI
-\fBddi_dmae\fR Solaris x86 DDI
-\fBddi_dmae_1stparty\fR Solaris x86 DDI
-\fBddi_dmae_alloc\fR Solaris x86 DDI
-\fBddi_dmae_disable\fR Solaris x86 DDI
-\fBddi_dmae_enable\fR Solaris x86 DDI
-\fBddi_dmae_getattr\fR Solaris x86 DDI
-\fBddi_dmae_getcnt\fR Solaris x86 DDI
-\fBddi_dmae_getlim\fR Solaris x86 DDI
-\fBddi_dmae_prog\fR Solaris x86 DDI
-\fBddi_dmae_release\fR Solaris x86 DDI
-\fBddi_dmae_stop\fR Solaris x86 DDI
-\fBddi_driver_major\fR Solaris DDI
-\fBddi_driver_name\fR Solaris DDI
-\fBddi_enter_critical\fR Solaris DDI
-\fBddi_exit_critical\fR Solaris DDI
-\fBddi_ffs\fR Solaris DDI
-\fBddi_fls\fR Solaris DDI
-\fBddi_fm_acc_err_clear\fR Solaris DDI
-\fBddi_fm_acc_err_get\fR Solaris DDI
-\fBddi_fm_ereport_post\fR Solaris DDI
-\fBddi_fm_handler_register\fR Solaris DDI
-\fBddi_fm_init\fR Solaris DDI
-\fBddi_fm_service_impact\fR Solaris DDI
-\fBddi_get16\fR Solaris DDI
-\fBddi_get32\fR Solaris DDI
-\fBddi_get64\fR Solaris DDI
-\fBddi_get8\fR Solaris DDI
-\fBddi_get_cred\fR Solaris DDI
-\fBddi_get_devstate\fR Solaris DDI
-\fBddi_get_driver_private\fR Solaris DDI
-\fBddi_get_eventcookie\fR Solaris DDI
-\fBddi_get_iblock_cookie\fR Solaris DDI
-\fBddi_get_iminor\fR Solaris DDI
-\fBddi_get_instance\fR Solaris DDI
-\fBddi_get_kt_did\fR Solaris DDI
-\fBddi_get_lbolt\fR Solaris DDI
-\fBddi_get_name\fR Solaris DDI
-\fBddi_get_parent\fR Solaris DDI
-\fBddi_get_pid\fR Solaris DDI
-\fBddi_get_soft_iblock_cookie\fR Solaris DDI
-\fBddi_get_soft_state\fR Solaris DDI
-\fBddi_getb\fR Solaris DDI
-\fBddi_getl\fR Solaris DDI
-\fBddi_getll\fR Solaris DDI
-\fBddi_getlongprop\fR Solaris DDI
-\fBddi_getlongprop_buf\fR Solaris DDI
-\fBddi_getprop\fR Solaris DDI
-\fBddi_getproplen\fR Solaris DDI
-\fBddi_getw\fR Solaris DDI
-\fBddi_intr_add_handler\fR Solaris DDI
-\fBddi_intr_add_softint\fR Solaris DDI
-\fBddi_intr_alloc\fR Solaris DDI
-\fBddi_intr_block_disable\fR Solaris DDI
-\fBddi_intr_block_enable\fR Solaris DDI
-\fBddi_intr_clr_mask\fR Solaris DDI
-\fBddi_intr_dup_handler\fR Solaris DDI
-\fBddi_intr_disable\fR Solaris DDI
-\fBddi_intr_enable\fR Solaris DDI
-\fBddi_intr_free\fR Solaris DDI
-\fBddi_intr_get_cap\fR Solaris DDI
-\fBddi_intr_get_hilevel_pri\fR Solaris DDI
-\fBddi_intr_get_navail\fR Solaris DDI
-\fBddi_intr_get_nintrs\fR Solaris DDI
-\fBddi_intr_get_pending\fR Solaris DDI
-\fBddi_intr_get_pri\fR Solaris DDI
-\fBddi_intr_get_softint_pri\fR Solaris DDI
-\fBddi_intr_get_supported_types\fR Solaris DDI
-\fBddi_intr_remove_handler\fR Solaris DDI
-\fBddi_intr_remove_softint\fR Solaris DDI
-\fBddi_intr_set_cap\fR Solaris DDI
-\fBddi_intr_set_mask\fR Solaris DDI
-\fBddi_intr_set_pri\fR Solaris DDI
-\fBddi_intr_set_softint_pri\fR Solaris DDI
-\fBddi_intr_trigger_softint\fR Solaris DDI
-\fBddi_io_get16\fR Solaris DDI
-\fBddi_io_get32\fR Solaris DDI
-\fBddi_io_get8\fR Solaris DDI
-\fBddi_io_getb\fR Solaris DDI
-\fBddi_io_getl\fR Solaris DDI
-\fBddi_io_getw\fR Solaris DDI
-\fBddi_io_put16\fR Solaris DDI
-\fBddi_io_put32\fR Solaris DDI
-\fBddi_io_put8\fR Solaris DDI
-\fBddi_io_putb\fR Solaris DDI
-\fBddi_io_putl\fR Solaris DDI
-\fBddi_io_putw\fR Solaris DDI
-\fBddi_io_rep_get16\fR Solaris DDI
-\fBddi_io_rep_get32\fR Solaris DDI
-\fBddi_io_rep_get8\fR Solaris DDI
-\fBddi_io_rep_getb\fR Solaris DDI
-\fBddi_io_rep_getl\fR Solaris DDI
-\fBddi_io_rep_getw\fR Solaris DDI
-\fBddi_io_rep_put16\fR Solaris DDI
-\fBddi_io_rep_put32\fR Solaris DDI
-\fBddi_io_rep_put8\fR Solaris DDI
-\fBddi_io_rep_putb\fR Solaris DDI
-\fBddi_io_rep_putl\fR Solaris DDI
-\fBddi_io_rep_putw\fR Solaris DDI
-\fBddi_iomin\fR Solaris DDI
-\fBddi_log_sysevent\fR Solaris DDI
-\fBddi_map_regs\fR Solaris DDI
-\fBddi_mapdev\fR Solaris DDI
-\fBddi_mapdev_intercept\fR Solaris DDI
-\fBddi_mapdev_nointercept\fR Solaris DDI
-\fBddi_mapdev_set_device_acc_attr\fR Solaris DDI
-\fBddi_mem_get16\fR Solaris DDI
-\fBddi_mem_get32\fR Solaris DDI
-\fBddi_mem_get64\fR Solaris DDI
-\fBddi_mem_get8\fR Solaris DDI
-\fBddi_mem_getb\fR Solaris DDI
-\fBddi_mem_getl\fR Solaris DDI
-\fBddi_mem_getll\fR Solaris DDI
-\fBddi_mem_getw\fR Solaris DDI
-\fBddi_mem_put16\fR Solaris DDI
-\fBddi_mem_put32\fR Solaris DDI
-\fBddi_mem_put64\fR Solaris DDI
-\fBddi_mem_put8\fR Solaris DDI
-\fBddi_mem_putb\fR Solaris DDI
-\fBddi_mem_putl\fR Solaris DDI
-\fBddi_mem_putll\fR Solaris DDI
-\fBddi_mem_putw\fR Solaris DDI
-\fBddi_mem_rep_get16\fR Solaris DDI
-\fBddi_mem_rep_get32\fR Solaris DDI
-\fBddi_mem_rep_get64\fR Solaris DDI
-\fBddi_mem_rep_get8\fR Solaris DDI
-\fBddi_mem_rep_getb\fR Solaris DDI
-\fBddi_mem_rep_getl\fR Solaris DDI
-\fBddi_mem_rep_getll\fR Solaris DDI
-\fBddi_mem_rep_getw\fR Solaris DDI
-\fBddi_mem_rep_put16\fR Solaris DDI
-\fBddi_mem_rep_put32\fR Solaris DDI
-\fBddi_mem_rep_put64\fR Solaris DDI
-\fBddi_mem_rep_put8\fR Solaris DDI
-\fBddi_mem_rep_putb\fR Solaris DDI
-\fBddi_mem_rep_putl\fR Solaris DDI
-\fBddi_mem_rep_putll\fR Solaris DDI
-\fBddi_mem_rep_putw\fR Solaris DDI
-\fBddi_mmap_get_model\fR Solaris DDI
-\fBddi_model_convert_from\fR Solaris DDI
-\fBddi_modopen\fR Solaris DDI
-\fBddi_no_info\fR Solaris DDI
-\fBddi_node_name\fR Solaris DDI
-\fBddi_peek16\fR Solaris DDI
-\fBddi_peek32\fR Solaris DDI
-\fBddi_peek64\fR Solaris DDI
-\fBddi_peek8\fR Solaris DDI
-\fBddi_peekc\fR Solaris DDI
-\fBddi_peekd\fR Solaris DDI
-\fBddi_peekl\fR Solaris DDI
-\fBddi_peeks\fR Solaris DDI
-\fBddi_periodic_add\fR Solaris DDI
-\fBddi_periodic_delete\fR Solaris DDI
-\fBddi_poke16\fR Solaris DDI
-\fBddi_poke32\fR Solaris DDI
-\fBddi_poke64\fR Solaris DDI
-\fBddi_poke8\fR Solaris DDI
-\fBddi_pokec\fR Solaris DDI
-\fBddi_poked\fR Solaris DDI
-\fBddi_pokel\fR Solaris DDI
-\fBddi_pokes\fR Solaris DDI
-\fBddi_prop_create\fR Solaris DDI
-\fBddi_prop_exists\fR Solaris DDI
-\fBddi_prop_free\fR Solaris DDI
-\fBddi_prop_get_int\fR Solaris DDI
-\fBddi_prop_lookup\fR Solaris DDI
-\fBddi_prop_lookup_byte_array\fR Solaris DDI
-\fBddi_prop_lookup_int_array\fR Solaris DDI
-\fBddi_prop_lookup_string\fR Solaris DDI
-\fBddi_prop_lookup_string_array\fR Solaris DDI
-\fBddi_prop_modify\fR Solaris DDI
-\fBddi_prop_op\fR Solaris DDI
-\fBddi_prop_remove\fR Solaris DDI
-\fBddi_prop_remove_all\fR Solaris DDI
-\fBddi_prop_undefine\fR Solaris DDI
-\fBddi_prop_update\fR Solaris DDI
-\fBddi_prop_update_byte_array\fR Solaris DDI
-\fBddi_prop_update_int\fR Solaris DDI
-\fBddi_prop_update_int_array\fR Solaris DDI
-\fBddi_prop_update_string\fR Solaris DDI
-\fBddi_prop_update_string_array\fR Solaris DDI
-\fBddi_ptob\fR Solaris DDI
-\fBddi_put16\fR Solaris DDI
-\fBddi_put32\fR Solaris DDI
-\fBddi_put64\fR Solaris DDI
-\fBddi_put8\fR Solaris DDI
-\fBddi_putb\fR Solaris DDI
-\fBddi_putl\fR Solaris DDI
-\fBddi_putll\fR Solaris DDI
-\fBddi_putw\fR Solaris DDI
-\fBddi_regs_map_free\fR Solaris DDI
-\fBddi_regs_map_setup\fR Solaris DDI
-\fBddi_remove_event_handler\fR Solaris DDI
-\fBddi_remove_intr\fR Solaris DDI
-\fBddi_remove_minor_node\fR Solaris DDI
-\fBddi_remove_softintr\fR Solaris DDI
-\fBddi_removing_power\fR Solaris DDI
-\fBddi_rep_get16\fR Solaris DDI
-\fBddi_rep_get32\fR Solaris DDI
-\fBddi_rep_get64\fR Solaris DDI
-\fBddi_rep_get8\fR Solaris DDI
-\fBddi_rep_getb\fR Solaris DDI
-\fBddi_rep_getl\fR Solaris DDI
-\fBddi_rep_getll\fR Solaris DDI
-\fBddi_rep_getw\fR Solaris DDI
-\fBddi_rep_put16\fR Solaris DDI
-\fBddi_rep_put32\fR Solaris DDI
-\fBddi_rep_put64\fR Solaris DDI
-\fBddi_rep_put8\fR Solaris DDI
-\fBddi_rep_putb\fR Solaris DDI
-\fBddi_rep_putl\fR Solaris DDI
-\fBddi_rep_putll\fR Solaris DDI
-\fBddi_rep_putw\fR Solaris DDI
-\fBddi_report_dev\fR Solaris DDI
-\fBddi_root_node\fR Solaris DDI
-\fBddi_segmap\fR Solaris DDI
-\fBddi_segmap_setup\fR Solaris DDI
-\fBddi_set_driver_private\fR Solaris DDI
-\fBddi_slaveonly\fR Solaris DDI
-\fBddi_soft_state\fR Solaris DDI
-\fBddi_soft_state_fini\fR Solaris DDI
-\fBddi_soft_state_free\fR Solaris DDI
-\fBddi_soft_state_init\fR Solaris DDI
-\fBddi_soft_state_zalloc\fR Solaris DDI
-\fBddi_strlol\fR Solaris DDI
-\fBddi_strloul\fR Solaris DDI
-\fBddi_trigger_softintr\fR Solaris DDI
-\fBddi_umem_alloc\fR Solaris DDI
-\fBddi_umem_free\fR Solaris DDI
-\fBddi_umem_iosetup\fR Solaris DDI
-\fBddi_umem_lock\fR Solaris DDI
-\fBddi_unmap_regs\fR Solaris DDI
+\fBcsx_AccessConfigurationRegister\fR illumos DDI
+\fBcsx_ConvertSize\fR illumos DDI
+\fBcsx_ConvertSpeed\fR illumos DDI
+\fBcsx_CS_DDI_Info\fR illumos DDI
+\fBcsx_DeregisterClient\fR illumos DDI
+\fBcsx_DupHandle\fR illumos DDI
+\fBcsx_Error2Text\fR illumos DDI
+\fBcsx_Event2Text\fR illumos DDI
+\fBcsx_FreeHandle\fR illumos DDI
+\fBcsx_Get8\fR illumos DDI
+\fBcsx_GetFirstClient\fR illumos DDI
+\fBcsx_GetFirstTuple\fR illumos DDI
+\fBcsx_GetHandleOffset\fR illumos DDI
+\fBcsx_GetMappedAddr\fR illumos DDI
+\fBcsx_GetStatus\fR illumos DDI
+\fBcsx_GetTupleData\fR illumos DDI
+\fBcsx_MakeDeviceNode\fR illumos DDI
+\fBcsx_MapLogSocket\fR illumos DDI
+\fBcsx_MapMemPage\fR illumos DDI
+\fBcsx_ModifyConfiguration\fR illumos DDI
+\fBcsx_ModifyWindow\fR illumos DDI
+\fBcsx_Parse_CISTPL_BATTERY\fR illumos DDI
+\fBcsx_Parse_CISTPL_BYTEORDER\fR illumos DDI
+\fBcsx_Parse_CISTPL_CFTABLE_ENTRY\fR illumos DDI
+\fBcsx_Parse_CISTPL_CONFIG\fR illumos DDI
+\fBcsx_Parse_CISTPL_DATE\fR illumos DDI
+\fBcsx_Parse_CISTPL_DEVICE\fR illumos DDI
+\fBcsx_Parse_CISTPL_DEVICEGEO\fR illumos DDI
+\fBcsx_Parse_CISTPL_DEVICEGEO_A\fR illumos DDI
+\fBcsx_Parse_CISTPL_FORMAT\fR illumos DDI
+\fBcsx_Parse_CISTPL_FUNCE\fR illumos DDI
+\fBcsx_Parse_CISTPL_FUNCID\fR illumos DDI
+\fBcsx_Parse_CISTPL_GEOMETRY\fR illumos DDI
+\fBcsx_Parse_CISTPL_JEDEC_C\fR illumos DDI
+\fBcsx_Parse_CISTPL_LINKTARGET\fR illumos DDI
+\fBcsx_Parse_CISTPL_LONGLINK_A\fR illumos DDI
+\fBcsx_Parse_CISTPL_LONGLINK_MFC\fR illumos DDI
+\fBcsx_Parse_CISTPL_MANFID\fR illumos DDI
+\fBcsx_Parse_CISTPL_ORG\fR illumos DDI
+\fBcsx_Parse_CISTPL_SPCL\fR illumos DDI
+\fBcsx_Parse_CISTPL_SWIL\fR illumos DDI
+\fBcsx_Parse_CISTPL_VERS_1\fR illumos DDI
+\fBcsx_Parse_CISTPL_VERS_2\fR illumos DDI
+\fBcsx_ParseTuple\fR illumos DDI
+\fBcsx_Put8\fR illumos DDI
+\fBcsx_RegisterClient\fR illumos DDI
+\fBcsx_ReleaseConfiguration\fR illumos DDI
+\fBcsx_RepGet8\fR illumos DDI
+\fBcsx_RepPut8\fR illumos DDI
+\fBcsx_RequestConfiguration\fR illumos DDI
+\fBcsx_RequestIO\fR illumos DDI
+\fBcsx_RequestIRQ\fR illumos DDI
+\fBcsx_RequestSocketMask\fR illumos DDI
+\fBcsx_RequestWindow\fR illumos DDI
+\fBcsx_ResetFunction\fR illumos DDI
+\fBcsx_SetEventMask\fR illumos DDI
+\fBcsx_SetHandleOffset\fR illumos DDI
+\fBcsx_ValidateCIS\fR illumos DDI
+\fBcv_broadcast\fR illumos DDI
+\fBcv_destroy\fR illumos DDI
+\fBcv_init\fR illumos DDI
+\fBcv_reltimedwait\fR illumos DDI
+\fBcv_reltimedwait_sig\fR illumos DDI
+\fBcv_signal\fR illumos DDI
+\fBcv_timedwait\fR illumos DDI
+\fBcv_timedwait_sig\fR illumos DDI
+\fBcv_wait\fR illumos DDI
+\fBcv_wait_sig\fR illumos DDI
+\fBddi_add_event_handler\fR illumos DDI
+\fBddi_add_intr\fR illumos DDI
+\fBddi_add_softintr\fR illumos DDI
+\fBddi_binding_name\fR illumos DDI
+\fBddi_btop\fR illumos DDI
+\fBddi_btopr\fR illumos DDI
+\fBddi_can_receive_sig\fR illumos DDI
+\fBddi_check_acc_handle\fR illumos DDI
+\fBddi_copyin\fR illumos DDI
+\fBddi_copyout\fR illumos DDI
+\fBddi_create_minor_node\fR illumos DDI
+\fBddi_cred\fR illumos DDI
+\fBddi_dev_is_sid\fR illumos DDI
+\fBddi_dev_nintrs\fR illumos DDI
+\fBddi_dev_nregs\fR illumos DDI
+\fBddi_dev_regsize\fR illumos DDI
+\fBddi_device_copy\fR illumos DDI
+\fBddi_device_zero\fR illumos DDI
+\fBddi_devmap_segmap\fR illumos DDI
+\fBddi_dma_addr_bind_handle\fR illumos DDI
+\fBddi_dma_alloc_handle\fR illumos DDI
+\fBddi_dma_buf_bind_handle\fR illumos DDI
+\fBddi_dma_burstsizes\fR illumos DDI
+\fBddi_dma_free_handle\fR illumos DDI
+\fBddi_dma_getwin\fR illumos DDI
+\fBddi_dma_mem_alloc\fR illumos DDI
+\fBddi_dma_mem_free\fR illumos DDI
+\fBddi_dma_nextcookie\fR illumos DDI
+\fBddi_dma_numwin\fR illumos DDI
+\fBddi_dma_set_sbus64\fR illumos DDI
+\fBddi_dma_sync\fR illumos DDI
+\fBddi_dma_unbind_handle\fR illumos DDI
+\fBddi_dmae\fR illumos x86 DDI
+\fBddi_dmae_1stparty\fR illumos x86 DDI
+\fBddi_dmae_alloc\fR illumos x86 DDI
+\fBddi_dmae_disable\fR illumos x86 DDI
+\fBddi_dmae_enable\fR illumos x86 DDI
+\fBddi_dmae_getattr\fR illumos x86 DDI
+\fBddi_dmae_getcnt\fR illumos x86 DDI
+\fBddi_dmae_getlim\fR illumos x86 DDI
+\fBddi_dmae_prog\fR illumos x86 DDI
+\fBddi_dmae_release\fR illumos x86 DDI
+\fBddi_dmae_stop\fR illumos x86 DDI
+\fBddi_driver_major\fR illumos DDI
+\fBddi_driver_name\fR illumos DDI
+\fBddi_enter_critical\fR illumos DDI
+\fBddi_exit_critical\fR illumos DDI
+\fBddi_ffs\fR illumos DDI
+\fBddi_fls\fR illumos DDI
+\fBddi_fm_acc_err_clear\fR illumos DDI
+\fBddi_fm_acc_err_get\fR illumos DDI
+\fBddi_fm_ereport_post\fR illumos DDI
+\fBddi_fm_handler_register\fR illumos DDI
+\fBddi_fm_init\fR illumos DDI
+\fBddi_fm_service_impact\fR illumos DDI
+\fBddi_get16\fR illumos DDI
+\fBddi_get32\fR illumos DDI
+\fBddi_get64\fR illumos DDI
+\fBddi_get8\fR illumos DDI
+\fBddi_get_cred\fR illumos DDI
+\fBddi_get_devstate\fR illumos DDI
+\fBddi_get_driver_private\fR illumos DDI
+\fBddi_get_eventcookie\fR illumos DDI
+\fBddi_get_iblock_cookie\fR illumos DDI
+\fBddi_get_iminor\fR illumos DDI
+\fBddi_get_instance\fR illumos DDI
+\fBddi_get_kt_did\fR illumos DDI
+\fBddi_get_lbolt\fR illumos DDI
+\fBddi_get_name\fR illumos DDI
+\fBddi_get_parent\fR illumos DDI
+\fBddi_get_pid\fR illumos DDI
+\fBddi_get_soft_iblock_cookie\fR illumos DDI
+\fBddi_get_soft_state\fR illumos DDI
+\fBddi_getb\fR illumos DDI
+\fBddi_getl\fR illumos DDI
+\fBddi_getll\fR illumos DDI
+\fBddi_getlongprop\fR illumos DDI
+\fBddi_getlongprop_buf\fR illumos DDI
+\fBddi_getprop\fR illumos DDI
+\fBddi_getproplen\fR illumos DDI
+\fBddi_getw\fR illumos DDI
+\fBddi_intr_add_handler\fR illumos DDI
+\fBddi_intr_add_softint\fR illumos DDI
+\fBddi_intr_alloc\fR illumos DDI
+\fBddi_intr_block_disable\fR illumos DDI
+\fBddi_intr_block_enable\fR illumos DDI
+\fBddi_intr_clr_mask\fR illumos DDI
+\fBddi_intr_dup_handler\fR illumos DDI
+\fBddi_intr_disable\fR illumos DDI
+\fBddi_intr_enable\fR illumos DDI
+\fBddi_intr_free\fR illumos DDI
+\fBddi_intr_get_cap\fR illumos DDI
+\fBddi_intr_get_hilevel_pri\fR illumos DDI
+\fBddi_intr_get_navail\fR illumos DDI
+\fBddi_intr_get_nintrs\fR illumos DDI
+\fBddi_intr_get_pending\fR illumos DDI
+\fBddi_intr_get_pri\fR illumos DDI
+\fBddi_intr_get_softint_pri\fR illumos DDI
+\fBddi_intr_get_supported_types\fR illumos DDI
+\fBddi_intr_remove_handler\fR illumos DDI
+\fBddi_intr_remove_softint\fR illumos DDI
+\fBddi_intr_set_cap\fR illumos DDI
+\fBddi_intr_set_mask\fR illumos DDI
+\fBddi_intr_set_pri\fR illumos DDI
+\fBddi_intr_set_softint_pri\fR illumos DDI
+\fBddi_intr_trigger_softint\fR illumos DDI
+\fBddi_io_get16\fR illumos DDI
+\fBddi_io_get32\fR illumos DDI
+\fBddi_io_get8\fR illumos DDI
+\fBddi_io_getb\fR illumos DDI
+\fBddi_io_getl\fR illumos DDI
+\fBddi_io_getw\fR illumos DDI
+\fBddi_io_put16\fR illumos DDI
+\fBddi_io_put32\fR illumos DDI
+\fBddi_io_put8\fR illumos DDI
+\fBddi_io_putb\fR illumos DDI
+\fBddi_io_putl\fR illumos DDI
+\fBddi_io_putw\fR illumos DDI
+\fBddi_io_rep_get16\fR illumos DDI
+\fBddi_io_rep_get32\fR illumos DDI
+\fBddi_io_rep_get8\fR illumos DDI
+\fBddi_io_rep_getb\fR illumos DDI
+\fBddi_io_rep_getl\fR illumos DDI
+\fBddi_io_rep_getw\fR illumos DDI
+\fBddi_io_rep_put16\fR illumos DDI
+\fBddi_io_rep_put32\fR illumos DDI
+\fBddi_io_rep_put8\fR illumos DDI
+\fBddi_io_rep_putb\fR illumos DDI
+\fBddi_io_rep_putl\fR illumos DDI
+\fBddi_io_rep_putw\fR illumos DDI
+\fBddi_iomin\fR illumos DDI
+\fBddi_log_sysevent\fR illumos DDI
+\fBddi_map_regs\fR illumos DDI
+\fBddi_mapdev\fR illumos DDI
+\fBddi_mapdev_intercept\fR illumos DDI
+\fBddi_mapdev_nointercept\fR illumos DDI
+\fBddi_mapdev_set_device_acc_attr\fR illumos DDI
+\fBddi_mem_get16\fR illumos DDI
+\fBddi_mem_get32\fR illumos DDI
+\fBddi_mem_get64\fR illumos DDI
+\fBddi_mem_get8\fR illumos DDI
+\fBddi_mem_getb\fR illumos DDI
+\fBddi_mem_getl\fR illumos DDI
+\fBddi_mem_getll\fR illumos DDI
+\fBddi_mem_getw\fR illumos DDI
+\fBddi_mem_put16\fR illumos DDI
+\fBddi_mem_put32\fR illumos DDI
+\fBddi_mem_put64\fR illumos DDI
+\fBddi_mem_put8\fR illumos DDI
+\fBddi_mem_putb\fR illumos DDI
+\fBddi_mem_putl\fR illumos DDI
+\fBddi_mem_putll\fR illumos DDI
+\fBddi_mem_putw\fR illumos DDI
+\fBddi_mem_rep_get16\fR illumos DDI
+\fBddi_mem_rep_get32\fR illumos DDI
+\fBddi_mem_rep_get64\fR illumos DDI
+\fBddi_mem_rep_get8\fR illumos DDI
+\fBddi_mem_rep_getb\fR illumos DDI
+\fBddi_mem_rep_getl\fR illumos DDI
+\fBddi_mem_rep_getll\fR illumos DDI
+\fBddi_mem_rep_getw\fR illumos DDI
+\fBddi_mem_rep_put16\fR illumos DDI
+\fBddi_mem_rep_put32\fR illumos DDI
+\fBddi_mem_rep_put64\fR illumos DDI
+\fBddi_mem_rep_put8\fR illumos DDI
+\fBddi_mem_rep_putb\fR illumos DDI
+\fBddi_mem_rep_putl\fR illumos DDI
+\fBddi_mem_rep_putll\fR illumos DDI
+\fBddi_mem_rep_putw\fR illumos DDI
+\fBddi_mmap_get_model\fR illumos DDI
+\fBddi_model_convert_from\fR illumos DDI
+\fBddi_modopen\fR illumos DDI
+\fBddi_no_info\fR illumos DDI
+\fBddi_node_name\fR illumos DDI
+\fBddi_peek16\fR illumos DDI
+\fBddi_peek32\fR illumos DDI
+\fBddi_peek64\fR illumos DDI
+\fBddi_peek8\fR illumos DDI
+\fBddi_peekc\fR illumos DDI
+\fBddi_peekd\fR illumos DDI
+\fBddi_peekl\fR illumos DDI
+\fBddi_peeks\fR illumos DDI
+\fBddi_periodic_add\fR illumos DDI
+\fBddi_periodic_delete\fR illumos DDI
+\fBddi_poke16\fR illumos DDI
+\fBddi_poke32\fR illumos DDI
+\fBddi_poke64\fR illumos DDI
+\fBddi_poke8\fR illumos DDI
+\fBddi_pokec\fR illumos DDI
+\fBddi_poked\fR illumos DDI
+\fBddi_pokel\fR illumos DDI
+\fBddi_pokes\fR illumos DDI
+\fBddi_prop_create\fR illumos DDI
+\fBddi_prop_exists\fR illumos DDI
+\fBddi_prop_free\fR illumos DDI
+\fBddi_prop_get_int\fR illumos DDI
+\fBddi_prop_lookup\fR illumos DDI
+\fBddi_prop_lookup_byte_array\fR illumos DDI
+\fBddi_prop_lookup_int_array\fR illumos DDI
+\fBddi_prop_lookup_string\fR illumos DDI
+\fBddi_prop_lookup_string_array\fR illumos DDI
+\fBddi_prop_modify\fR illumos DDI
+\fBddi_prop_op\fR illumos DDI
+\fBddi_prop_remove\fR illumos DDI
+\fBddi_prop_remove_all\fR illumos DDI
+\fBddi_prop_undefine\fR illumos DDI
+\fBddi_prop_update\fR illumos DDI
+\fBddi_prop_update_byte_array\fR illumos DDI
+\fBddi_prop_update_int\fR illumos DDI
+\fBddi_prop_update_int_array\fR illumos DDI
+\fBddi_prop_update_string\fR illumos DDI
+\fBddi_prop_update_string_array\fR illumos DDI
+\fBddi_ptob\fR illumos DDI
+\fBddi_put16\fR illumos DDI
+\fBddi_put32\fR illumos DDI
+\fBddi_put64\fR illumos DDI
+\fBddi_put8\fR illumos DDI
+\fBddi_putb\fR illumos DDI
+\fBddi_putl\fR illumos DDI
+\fBddi_putll\fR illumos DDI
+\fBddi_putw\fR illumos DDI
+\fBddi_regs_map_free\fR illumos DDI
+\fBddi_regs_map_setup\fR illumos DDI
+\fBddi_remove_event_handler\fR illumos DDI
+\fBddi_remove_intr\fR illumos DDI
+\fBddi_remove_minor_node\fR illumos DDI
+\fBddi_remove_softintr\fR illumos DDI
+\fBddi_removing_power\fR illumos DDI
+\fBddi_rep_get16\fR illumos DDI
+\fBddi_rep_get32\fR illumos DDI
+\fBddi_rep_get64\fR illumos DDI
+\fBddi_rep_get8\fR illumos DDI
+\fBddi_rep_getb\fR illumos DDI
+\fBddi_rep_getl\fR illumos DDI
+\fBddi_rep_getll\fR illumos DDI
+\fBddi_rep_getw\fR illumos DDI
+\fBddi_rep_put16\fR illumos DDI
+\fBddi_rep_put32\fR illumos DDI
+\fBddi_rep_put64\fR illumos DDI
+\fBddi_rep_put8\fR illumos DDI
+\fBddi_rep_putb\fR illumos DDI
+\fBddi_rep_putl\fR illumos DDI
+\fBddi_rep_putll\fR illumos DDI
+\fBddi_rep_putw\fR illumos DDI
+\fBddi_report_dev\fR illumos DDI
+\fBddi_root_node\fR illumos DDI
+\fBddi_segmap\fR illumos DDI
+\fBddi_segmap_setup\fR illumos DDI
+\fBddi_set_driver_private\fR illumos DDI
+\fBddi_slaveonly\fR illumos DDI
+\fBddi_soft_state\fR illumos DDI
+\fBddi_soft_state_fini\fR illumos DDI
+\fBddi_soft_state_free\fR illumos DDI
+\fBddi_soft_state_init\fR illumos DDI
+\fBddi_soft_state_zalloc\fR illumos DDI
+\fBddi_strlol\fR illumos DDI
+\fBddi_strloul\fR illumos DDI
+\fBddi_trigger_softintr\fR illumos DDI
+\fBddi_umem_alloc\fR illumos DDI
+\fBddi_umem_free\fR illumos DDI
+\fBddi_umem_iosetup\fR illumos DDI
+\fBddi_umem_lock\fR illumos DDI
+\fBddi_unmap_regs\fR illumos DDI
\fBdelay\fR DDI/DKI
-\fBdevmap_default_access\fR Solaris DDI
-\fBdevmap_devmem_setup\fR Solaris DDI
-\fBdevmap_do_ctxmgt\fR Solaris DDI
-\fBdevmap_load\fR Solaris DDI
-\fBdevmap_set_ctx_timeout\fR Solaris DDI
-\fBdevmap_setup\fR Solaris DDI
-\fBdevmap_umem_setup\fR Solaris DDI
-\fBdevmap_unload\fR Solaris DDI
-\fBdisksort\fR Solaris DDI
-\fBdlbindack\fR Solaris DDI
+\fBdevmap_default_access\fR illumos DDI
+\fBdevmap_devmem_setup\fR illumos DDI
+\fBdevmap_do_ctxmgt\fR illumos DDI
+\fBdevmap_load\fR illumos DDI
+\fBdevmap_set_ctx_timeout\fR illumos DDI
+\fBdevmap_setup\fR illumos DDI
+\fBdevmap_umem_setup\fR illumos DDI
+\fBdevmap_unload\fR illumos DDI
+\fBdisksort\fR illumos DDI
+\fBdlbindack\fR illumos DDI
\fBdrv_getparm\fR DDI/DKI
\fBdrv_hztousec\fR DDI/DKI
\fBdrv_priv\fR DDI/DKI
\fBdrv_usectohz\fR DDI/DKI
\fBdrv_usecwait\fR DDI/DKI
-\fBfree_pktiopb\fR Solaris DDI
+\fBfree_pktiopb\fR illumos DDI
\fBfreerbuf\fR DDI/DKI
-\fBget_pktiopb\fR Solaris DDI
+\fBget_pktiopb\fR illumos DDI
\fBgeterror\fR DDI/DKI
\fBgethrtime\fR DDI/DKI
\fBgetmajor\fR DDI/DKI
\fBgetminor\fR DDI/DKI
\fBgetrbuf\fR DDI/DKI
-\fBgld\fR Solaris DDI
+\fBgld\fR illumos DDI
\fBhat_getkpfnum\fR DKI only
-\fBid32_alloc\fR Solaris DDI
-\fBinb\fR Solaris x86 DDI
-\fBinl\fR Solaris x86 DDI
-\fBinw\fR Solaris x86 DDI
-\fBkiconv\fR Solaris DDI
-\fBkiconv_close\fR Solaris DDI
-\fBkiconv_open\fR Solaris DDI
-\fBkiconvstr\fR Solaris DDI
+\fBid32_alloc\fR illumos DDI
+\fBinb\fR illumos x86 DDI
+\fBinl\fR illumos x86 DDI
+\fBinw\fR illumos x86 DDI
+\fBkiconv\fR illumos DDI
+\fBkiconv_close\fR illumos DDI
+\fBkiconv_open\fR illumos DDI
+\fBkiconvstr\fR illumos DDI
\fBkmem_alloc\fR DDI/DKI
-\fBkmem_cache_create\fR Solaris DDI
+\fBkmem_cache_create\fR illumos DDI
\fBkmem_free\fR DDI/DKI
\fBkmem_zalloc\fR DDI/DKI
-\fBkstat_create\fR Solaris DDI
-\fBkstat_delete\fR Solaris DDI
-\fBkstat_install\fR Solaris DDI
-\fBkstat_named_init\fR Solaris DDI
-\fBkstat_queue\fR Solaris DDI
-\fBkstat_runq_back_to_waitq\fR Solaris DDI
-\fBkstat_runq_enter\fR Solaris DDI
-\fBkstat_runq_exit\fR Solaris DDI
-\fBkstat_waitq_enter\fR Solaris DDI
-\fBkstat_waitq_exit\fR Solaris DDI
-\fBkstat_waitq_to_runq\fR Solaris DDI
-\fBldi_add_event_handler\fR Solaris DDI
-\fBldi_aread\fR Solaris DDI
-\fBldi_devmap\fR Solaris DDI
-\fBldi_dump\fR Solaris DDI
-\fBldi_ev_finalize\fR Solaris DDI
-\fBldi_ev_get_cookie\fR Solaris DDI
-\fBldi_ev_get_type\fR Solaris DDI
-\fBldi_ev_notify\fR Solaris DDI
-\fBldi_ev_register_callbacks\fR Solaris DDI
-\fBldi_ev_remove_callbacks\fR Solaris DDI
-\fBldi_get_dev\fR Solaris DDI
-\fBldi_get_eventcookie\fR Solaris DDI
-\fBldi_get_size\fR Solaris DDI
-\fBldi_ident_from_dev\fR Solaris DDI
-\fBldi_ioctl\fR Solaris DDI
-\fBldi_open_by_dev\fR Solaris DDI
-\fBldi_poll\fR Solaris DDI
-\fBldi_prop_exists\fR Solaris DDI
-\fBldi_prop_get_int\fR Solaris DDI
-\fBldi_prop_get_lookup_int_array\fR Solaris DDI
-\fBldi_putmsg\fR Solaris DDI
-\fBldi_read\fR Solaris DDI
-\fBldi_remove_event_handler\fR Solaris DDI
-\fBldi_strategy\fR Solaris DDI
-\fBmakecom_g0\fR Solaris DDI
-\fBmakecom_g0_s\fR Solaris DDI
-\fBmakecom_g1\fR Solaris DDI
-\fBmakecom_g5\fR Solaris DDI
+\fBkstat_create\fR illumos DDI
+\fBkstat_delete\fR illumos DDI
+\fBkstat_install\fR illumos DDI
+\fBkstat_named_init\fR illumos DDI
+\fBkstat_queue\fR illumos DDI
+\fBkstat_runq_back_to_waitq\fR illumos DDI
+\fBkstat_runq_enter\fR illumos DDI
+\fBkstat_runq_exit\fR illumos DDI
+\fBkstat_waitq_enter\fR illumos DDI
+\fBkstat_waitq_exit\fR illumos DDI
+\fBkstat_waitq_to_runq\fR illumos DDI
+\fBldi_add_event_handler\fR illumos DDI
+\fBldi_aread\fR illumos DDI
+\fBldi_devmap\fR illumos DDI
+\fBldi_dump\fR illumos DDI
+\fBldi_ev_finalize\fR illumos DDI
+\fBldi_ev_get_cookie\fR illumos DDI
+\fBldi_ev_get_type\fR illumos DDI
+\fBldi_ev_notify\fR illumos DDI
+\fBldi_ev_register_callbacks\fR illumos DDI
+\fBldi_ev_remove_callbacks\fR illumos DDI
+\fBldi_get_dev\fR illumos DDI
+\fBldi_get_eventcookie\fR illumos DDI
+\fBldi_get_size\fR illumos DDI
+\fBldi_ident_from_dev\fR illumos DDI
+\fBldi_ioctl\fR illumos DDI
+\fBldi_open_by_dev\fR illumos DDI
+\fBldi_poll\fR illumos DDI
+\fBldi_prop_exists\fR illumos DDI
+\fBldi_prop_get_int\fR illumos DDI
+\fBldi_prop_get_lookup_int_array\fR illumos DDI
+\fBldi_putmsg\fR illumos DDI
+\fBldi_read\fR illumos DDI
+\fBldi_remove_event_handler\fR illumos DDI
+\fBldi_strategy\fR illumos DDI
+\fBmakecom_g0\fR illumos DDI
+\fBmakecom_g0_s\fR illumos DDI
+\fBmakecom_g1\fR illumos DDI
+\fBmakecom_g5\fR illumos DDI
\fBmakedevice\fR DDI/DKI
\fBmax\fR DDI/DKI
\fBmax\fR DDI/DKI
-\fBmembar_ops\fR Solaris DDI
-\fBmemchr\fR Solaris DDI
-\fBminphys\fR Solaris DDI
-\fBmod_info\fR Solaris DDI
-\fBmod_install\fR Solaris DDI
-\fBmod_remove\fR Solaris DDI
-\fBmutex_destroy\fR Solaris DDI
-\fBmutex_enter\fR Solaris DDI
-\fBmutex_exit\fR Solaris DDI
-\fBmutex_init\fR Solaris DDI
-\fBmutex_owned\fR Solaris DDI
-\fBmutex_tryenter\fR Solaris DDI
-\fBnochpoll\fR Solaris DDI
+\fBmembar_ops\fR illumos DDI
+\fBmemchr\fR illumos DDI
+\fBminphys\fR illumos DDI
+\fBmod_info\fR illumos DDI
+\fBmod_install\fR illumos DDI
+\fBmod_remove\fR illumos DDI
+\fBmutex_destroy\fR illumos DDI
+\fBmutex_enter\fR illumos DDI
+\fBmutex_exit\fR illumos DDI
+\fBmutex_init\fR illumos DDI
+\fBmutex_owned\fR illumos DDI
+\fBmutex_tryenter\fR illumos DDI
+\fBnochpoll\fR illumos DDI
\fBnodev\fR DDI/DKI
\fBnulldev\fR DDI/DKI
-\fBnumtos\fR Solaris DDI
-\fBnvlist_add_boolean\fR Solaris DDI
-\fBnvlist_alloc\fR Solaris DDI
-\fBnvlist_lookup_boolean\fR Solaris DDI
-\fBnvlist_lookup_nvpair\fR Solaris DDI
-\fBnvlist_next_nvpair\fR Solaris DDI
-\fBnvlist_remove\fR Solaris DDI
-\fBnvlist_value_byte\fR Solaris DDI
-\fBoutb\fR Solaris x86 DDI
-\fBoutl\fR Solaris x86 DDI
-\fBoutw\fR Solaris x86 DDI
-\fBpci_config_get16\fR Solaris DDI
-\fBpci_config_get32\fR Solaris DDI
-\fBpci_config_get64\fR Solaris DDI
-\fBpci_config_get8\fR Solaris DDI
-\fBpci_config_getb\fR Solaris DDI
-\fBpci_config_getl\fR Solaris DDI
-\fBpci_config_getw\fR Solaris DDI
-\fBpci_config_put16\fR Solaris DDI
-\fBpci_config_put32\fR Solaris DDI
-\fBpci_config_put64\fR Solaris DDI
-\fBpci_config_put8\fR Solaris DDI
-\fBpci_config_putb\fR Solaris DDI
-\fBpci_config_putl\fR Solaris DDI
-\fBpci_config_putw\fR Solaris DDI
-\fBpci_config_setup\fR Solaris DDI
-\fBpci_config_teardown\fR Solaris DDI
-\fBpci_ereport_setup\fR Solaris DDI
-\fBpci_report_pmcap\fR Solaris DDI
-\fBpci_save_config_regs\fR Solaris DDI
-\fBphysio\fR Solaris DDI
-\fBpm_busy_component\fR Solaris DDI
-\fBpm_power_has_changed\fR Solaris DDI
-\fBpm_raise_power\fR Solaris DDI
-\fBpm_trans_check\fR Solaris DDI
+\fBnumtos\fR illumos DDI
+\fBnvlist_add_boolean\fR illumos DDI
+\fBnvlist_alloc\fR illumos DDI
+\fBnvlist_lookup_boolean\fR illumos DDI
+\fBnvlist_lookup_nvpair\fR illumos DDI
+\fBnvlist_next_nvpair\fR illumos DDI
+\fBnvlist_remove\fR illumos DDI
+\fBnvlist_value_byte\fR illumos DDI
+\fBoutb\fR illumos x86 DDI
+\fBoutl\fR illumos x86 DDI
+\fBoutw\fR illumos x86 DDI
+\fBpci_config_get16\fR illumos DDI
+\fBpci_config_get32\fR illumos DDI
+\fBpci_config_get64\fR illumos DDI
+\fBpci_config_get8\fR illumos DDI
+\fBpci_config_getb\fR illumos DDI
+\fBpci_config_getl\fR illumos DDI
+\fBpci_config_getw\fR illumos DDI
+\fBpci_config_put16\fR illumos DDI
+\fBpci_config_put32\fR illumos DDI
+\fBpci_config_put64\fR illumos DDI
+\fBpci_config_put8\fR illumos DDI
+\fBpci_config_putb\fR illumos DDI
+\fBpci_config_putl\fR illumos DDI
+\fBpci_config_putw\fR illumos DDI
+\fBpci_config_setup\fR illumos DDI
+\fBpci_config_teardown\fR illumos DDI
+\fBpci_ereport_setup\fR illumos DDI
+\fBpci_report_pmcap\fR illumos DDI
+\fBpci_save_config_regs\fR illumos DDI
+\fBphysio\fR illumos DDI
+\fBpm_busy_component\fR illumos DDI
+\fBpm_power_has_changed\fR illumos DDI
+\fBpm_raise_power\fR illumos DDI
+\fBpm_trans_check\fR illumos DDI
\fBpollwakeup\fR DDI/DKI
-\fBpci_config_teardown\fR Solaris DDI
-\fBpci_config_teardown\fR Solaris DDI
-\fBpriv_getbyname\fR Solaris DDI
-\fBpriv_policy\fR Solaris DDI
-\fBproc_signal\fR Solaris DDI
-\fBproc_unref\fR Solaris DDI
+\fBpci_config_teardown\fR illumos DDI
+\fBpci_config_teardown\fR illumos DDI
+\fBpriv_getbyname\fR illumos DDI
+\fBpriv_policy\fR illumos DDI
+\fBproc_signal\fR illumos DDI
+\fBproc_unref\fR illumos DDI
\fBptob\fR DDI/DKI
-\fBrepinsb\fR Solaris x86 DDI
-\fBrepinsd\fR Solaris x86 DDI
-\fBrepinsw\fR Solaris x86 DDI
-\fBrepoutsb\fR Solaris x86 DDI
-\fBrepoutsd\fR Solaris x86 DDI
-\fBrepoutsw\fR Solaris x86 DDI
+\fBrepinsb\fR illumos x86 DDI
+\fBrepinsd\fR illumos x86 DDI
+\fBrepinsw\fR illumos x86 DDI
+\fBrepoutsb\fR illumos x86 DDI
+\fBrepoutsd\fR illumos x86 DDI
+\fBrepoutsw\fR illumos x86 DDI
\fBrmalloc\fR DDI/DKI
\fBrmalloc_wait\fR DDI/DKI
\fBrmallocmap\fR DDI/DKI
\fBrmallocmap_wait\fR DDI/DKI
\fBrmfree\fR DDI/DKI
\fBrmfreemap\fR DDI/DKI
-\fBrw_destroy\fR Solaris DDI
-\fBrw_downgrade\fR Solaris DDI
-\fBrw_enter\fR Solaris DDI
-\fBrw_exit\fR Solaris DDI
-\fBrw_init\fR Solaris DDI
-\fBrw_read_locked\fR Solaris DDI
-\fBrw_tryenter\fR Solaris DDI
-\fBrw_tryupgrade\fR Solaris DDI
-\fBscsi_abort\fR Solaris DDI
-\fBscsi_alloc_consistent_buf\fR Solaris DDI
-\fBscsi_cname\fR Solaris DDI
-\fBscsi_destroy_pkt\fR Solaris DDI
-\fBscsi_dmafree\fR Solaris DDI
-\fBscsi_dmaget\fR Solaris DDI
-\fBscsi_dname\fR Solaris DDI
-\fBscsi_errmsg\fR Solaris DDI
-\fBscsi_ext_sense_fields\fR Solaris DDI
-\fBscsi_find_sense_descr\fR Solaris DDI
-\fBscsi_free_consistent_buf\fR Solaris DDI
-\fBscsi_get_device_type_scsi_options\fR Solaris DDI
-\fBscsi_get_device_type_string\fR Solaris DDI
-\fBscsi_hba_attach_setup\fR Solaris DDI
-\fBscsi_hba_detach\fR Solaris DDI
-\fBscsi_hba_fini\fR Solaris DDI
-\fBscsi_hba_init\fR Solaris DDI
-\fBscsi_hba_lookup_capstr\fR Solaris DDI
-\fBscsi_hba_pkt_alloc\fR Solaris DDI
-\fBscsi_hba_pkt_free\fR Solaris DDI
-\fBscsi_hba_probe\fR Solaris DDI
-\fBscsi_hba_tran_alloc\fR Solaris DDI
-\fBscsi_hba_tran_free\fR Solaris DDI
-\fBscsi_ifgetcap\fR Solaris DDI
-\fBscsi_ifsetcap\fR Solaris DDI
-\fBscsi_init_pkt\fR Solaris DDI
-\fBscsi_log\fR Solaris DDI
-\fBscsi_mname\fR Solaris DDI
-\fBscsi_pktalloc\fR Solaris DDI
-\fBscsi_pktfree\fR Solaris DDI
-\fBscsi_poll\fR Solaris DDI
-\fBscsi_probe\fR Solaris DDI
-\fBscsi_resalloc\fR Solaris DDI
-\fBscsi_reset\fR Solaris DDI
-\fBscsi_reset_notify\fR Solaris DDI
-\fBscsi_resfree\fR Solaris DDI
-\fBscsi_rname\fR Solaris DDI
-\fBscsi_sense_key\fR Solaris DDI
-\fBscsi_setup_cdb\fR Solaris DDI
-\fBscsi_slave\fR Solaris DDI
-\fBscsi_sname\fR Solaris DDI
-\fBscsi_sync_pkt\fR Solaris DDI
-\fBscsi_transport\fR Solaris DDI
-\fBscsi_unprobe\fR Solaris DDI
-\fBscsi_unslave\fR Solaris DDI
-\fBscsi_validate_sense\fR Solaris DDI
-\fBscsi_vu_errmsg\fR Solaris DDI
-\fBsema_destroy\fR Solaris DDI
-\fBsema_init\fR Solaris DDI
-\fBsema_p\fR Solaris DDI
-\fBsema_p_sig\fR Solaris DDI
-\fBsema_tryp\fR Solaris DDI
-\fBsema_v\fR Solaris DDI
-\fBsprintf\fR Solaris DDI
-\fBstoi\fR Solaris DDI
-\fBstrchr\fR Solaris DDI
-\fBstrcmp\fR Solaris DDI
-\fBstrcpy\fR Solaris DDI
-\fBstrlen\fR Solaris DDI
-\fBstrncmp\fR Solaris DDI
-\fBstrncpy\fR Solaris DDI
-\fBSTRUCT_DECL\fR Solaris DDI
+\fBrw_destroy\fR illumos DDI
+\fBrw_downgrade\fR illumos DDI
+\fBrw_enter\fR illumos DDI
+\fBrw_exit\fR illumos DDI
+\fBrw_init\fR illumos DDI
+\fBrw_read_locked\fR illumos DDI
+\fBrw_tryenter\fR illumos DDI
+\fBrw_tryupgrade\fR illumos DDI
+\fBscsi_abort\fR illumos DDI
+\fBscsi_alloc_consistent_buf\fR illumos DDI
+\fBscsi_cname\fR illumos DDI
+\fBscsi_destroy_pkt\fR illumos DDI
+\fBscsi_dmafree\fR illumos DDI
+\fBscsi_dmaget\fR illumos DDI
+\fBscsi_dname\fR illumos DDI
+\fBscsi_errmsg\fR illumos DDI
+\fBscsi_ext_sense_fields\fR illumos DDI
+\fBscsi_find_sense_descr\fR illumos DDI
+\fBscsi_free_consistent_buf\fR illumos DDI
+\fBscsi_get_device_type_scsi_options\fR illumos DDI
+\fBscsi_get_device_type_string\fR illumos DDI
+\fBscsi_hba_attach_setup\fR illumos DDI
+\fBscsi_hba_detach\fR illumos DDI
+\fBscsi_hba_fini\fR illumos DDI
+\fBscsi_hba_init\fR illumos DDI
+\fBscsi_hba_lookup_capstr\fR illumos DDI
+\fBscsi_hba_pkt_alloc\fR illumos DDI
+\fBscsi_hba_pkt_free\fR illumos DDI
+\fBscsi_hba_probe\fR illumos DDI
+\fBscsi_hba_tran_alloc\fR illumos DDI
+\fBscsi_hba_tran_free\fR illumos DDI
+\fBscsi_ifgetcap\fR illumos DDI
+\fBscsi_ifsetcap\fR illumos DDI
+\fBscsi_init_pkt\fR illumos DDI
+\fBscsi_log\fR illumos DDI
+\fBscsi_mname\fR illumos DDI
+\fBscsi_pktalloc\fR illumos DDI
+\fBscsi_pktfree\fR illumos DDI
+\fBscsi_poll\fR illumos DDI
+\fBscsi_probe\fR illumos DDI
+\fBscsi_resalloc\fR illumos DDI
+\fBscsi_reset\fR illumos DDI
+\fBscsi_reset_notify\fR illumos DDI
+\fBscsi_resfree\fR illumos DDI
+\fBscsi_rname\fR illumos DDI
+\fBscsi_sense_key\fR illumos DDI
+\fBscsi_setup_cdb\fR illumos DDI
+\fBscsi_slave\fR illumos DDI
+\fBscsi_sname\fR illumos DDI
+\fBscsi_sync_pkt\fR illumos DDI
+\fBscsi_transport\fR illumos DDI
+\fBscsi_unprobe\fR illumos DDI
+\fBscsi_unslave\fR illumos DDI
+\fBscsi_validate_sense\fR illumos DDI
+\fBscsi_vu_errmsg\fR illumos DDI
+\fBsema_destroy\fR illumos DDI
+\fBsema_init\fR illumos DDI
+\fBsema_p\fR illumos DDI
+\fBsema_p_sig\fR illumos DDI
+\fBsema_tryp\fR illumos DDI
+\fBsema_v\fR illumos DDI
+\fBsprintf\fR illumos DDI
+\fBstoi\fR illumos DDI
+\fBstrchr\fR illumos DDI
+\fBstrcmp\fR illumos DDI
+\fBstrcpy\fR illumos DDI
+\fBstrlen\fR illumos DDI
+\fBstrncmp\fR illumos DDI
+\fBstrncpy\fR illumos DDI
+\fBSTRUCT_DECL\fR illumos DDI
\fBswab\fR DDI/DKI
-\fBtaskq\fR Solaris DDI
+\fBtaskq\fR illumos DDI
\fBtimeout\fR DDI/DKI
-\fBu8_strcmp\fR Solaris DDI
-\fBu8_textprep_str\fR Solaris DDI
-\fBu8_validate\fR Solaris DDI
-\fBuconv_u16tou32\fR Solaris DDI
+\fBu8_strcmp\fR illumos DDI
+\fBu8_textprep_str\fR illumos DDI
+\fBu8_validate\fR illumos DDI
+\fBuconv_u16tou32\fR illumos DDI
\fBuiomove\fR DDI/DKI
\fBuntimeout\fR DDI/DKI
\fBureadc\fR DDI/DKI
-\fBusb_alloc_request\fR Solaris DDI
-\fBusb_client_attach\fR Solaris DDI
-\fBusb_clr_feature\fR Solaris DDI
-\fBusb_create_pm_components\fR Solaris DDI
-\fBusb_get_addr\fR Solaris DDI
-\fBusb_get_alt_if\fR Solaris DDI
-\fBusb_get_cfg\fR Solaris DDI
-\fBusb_get_current_frame_number\fR Solaris DDI
-\fBusb_get_dev_data\fR Solaris DDI
-\fBusb_get_max_pkts_per_ioc_request\fR Solaris DDI
-\fBusb_get_status\fR Solaris DDI
-\fBusb_get_string_desc\fR Solaris DDI
-\fBusb_handle_remote_wakeup\fR Solaris DDI
-\fBusb_lookup_ep_data\fR Solaris DDI
-\fBusb_parse_data\fR Solaris DDI
-\fBusb_pipe_bulk_xfer\fR Solaris DDI
-\fBusb_pipe_close\fR Solaris DDI
-\fBusb_pipe_ctrl_xfer\fR Solaris DDI
-\fBusb_pipe_drain_reqs\fR Solaris DDI
-\fBusb_pipe_get_max_bulk_transfer_size\fR Solaris DDI
-\fBusb_pipe_get_state\fR Solaris DDI
-\fBusb_pipe_intr_xfer\fR Solaris DDI
-\fBusb_pipe_isoc_xfer\fR Solaris DDI
-\fBusb_pipe_open\fR Solaris DDI
-\fBusb_pipe_reset\fR Solaris DDI
-\fBusb_pipe_set_private\fR Solaris DDI
-\fBusb_register_hotplug_cbs\fR Solaris DDI
-\fBusb_reset_device\fR Solaris DDI
+\fBusb_alloc_request\fR illumos DDI
+\fBusb_client_attach\fR illumos DDI
+\fBusb_clr_feature\fR illumos DDI
+\fBusb_create_pm_components\fR illumos DDI
+\fBusb_get_addr\fR illumos DDI
+\fBusb_get_alt_if\fR illumos DDI
+\fBusb_get_cfg\fR illumos DDI
+\fBusb_get_current_frame_number\fR illumos DDI
+\fBusb_get_dev_data\fR illumos DDI
+\fBusb_get_max_pkts_per_ioc_request\fR illumos DDI
+\fBusb_get_status\fR illumos DDI
+\fBusb_get_string_desc\fR illumos DDI
+\fBusb_handle_remote_wakeup\fR illumos DDI
+\fBusb_lookup_ep_data\fR illumos DDI
+\fBusb_parse_data\fR illumos DDI
+\fBusb_pipe_bulk_xfer\fR illumos DDI
+\fBusb_pipe_close\fR illumos DDI
+\fBusb_pipe_ctrl_xfer\fR illumos DDI
+\fBusb_pipe_drain_reqs\fR illumos DDI
+\fBusb_pipe_get_max_bulk_transfer_size\fR illumos DDI
+\fBusb_pipe_get_state\fR illumos DDI
+\fBusb_pipe_intr_xfer\fR illumos DDI
+\fBusb_pipe_isoc_xfer\fR illumos DDI
+\fBusb_pipe_open\fR illumos DDI
+\fBusb_pipe_reset\fR illumos DDI
+\fBusb_pipe_set_private\fR illumos DDI
+\fBusb_register_hotplug_cbs\fR illumos DDI
+\fBusb_reset_device\fR illumos DDI
\fBuwritec\fR DDI/DKI
-\fBva_arg\fR Solaris DDI
-\fBva_end\fR Solaris DDI
-\fBva_start\fR Solaris DDI
+\fBva_arg\fR illumos DDI
+\fBva_end\fR illumos DDI
+\fBva_start\fR illumos DDI
\fBvcmn_err\fR DDI/DKI
-\fBvsprintf\fR Solaris DDI
+\fBvsprintf\fR illumos DDI
.TE
.SH SEE ALSO
-.sp
.LP
\fBIntro\fR(9E), \fBmutex\fR(9F)
diff --git a/usr/src/man/man9f/condvar.9f b/usr/src/man/man9f/condvar.9f
index 2bb1b85ce0..6766ed8d5b 100644
--- a/usr/src/man/man9f/condvar.9f
+++ b/usr/src/man/man9f/condvar.9f
@@ -1,5 +1,6 @@
'\" te
.\" Copyright (c) 2003, Sun Microsystems, Inc. All Rights Reserved
+.\" Copyright (c) 2014, Joyent, Inc.
.\" The contents of this file are subject to the terms of the Common Development and Distribution License (the "License"). You may not use this file except in compliance with the License.
.\" You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE or http://www.opensolaris.org/os/licensing. See the License for the specific language governing permissions and limitations under the License.
.\" When distributing Covered Code, include this CDDL HEADER in each file and include the License file at usr/src/OPENSOLARIS.LICENSE. If applicable, add the following below this CDDL HEADER, with the fields enclosed by brackets "[]" replaced with your own identifying information: Portions Copyright [yyyy] [name of copyright owner]
@@ -52,12 +53,22 @@ cv_timedwait, cv_timedwait_sig \- condition variable routines
\fBclock_t\fR \fBcv_timedwait_sig\fR(\fBkcondvar_t *\fR\fIcvp\fR, \fBkmutex_t *\fR\fImp\fR, \fBclock_t\fR \fItimeout\fR);
.fi
+.LP
+.nf
+\fBclock_t\fR \fBcv_reltimedwait\fR(\fBkcondvar_t *\fR\fIcvp\fR, \fBkmutex_t *\fR\fImp\fR, \fBclock_t\fR \fIdelta\fR,
+ \fBtime_res_t\fR \fIres\fR);
+.fi
+
+.LP
+.nf
+\fBclock_t\fR \fBcv_reltimedwait_sig\fR(\fBkcondvar_t *\fR\fIcvp\fR, \fBkmutex_t *\fR\fImp\fR, \fBclock_t\fR \fIdelta\fR,
+ \fBtime_res_t\fR \fIres\fR);
+.fi
+
.SH INTERFACE LEVEL
-.sp
.LP
Solaris DDI specific (Solaris DDI).
.SH PARAMETERS
-.sp
.ne 2
.na
\fB\fIcvp\fR\fR
@@ -114,8 +125,56 @@ A time, in absolute ticks since boot, when \fBcv_timedwait()\fR or
\fBcv_timedwait_sig()\fR should return.
.RE
-.SH DESCRIPTION
.sp
+.ne 2
+.na
+\fB\fIres\fR\fR
+.ad
+.RS 11n
+A value which describes the requested accuracy of the timeout argument.
+The system may anticipate or defer the timeout based on the requested
+accuracy to prevent unnecessary wakeups. The following identifiers are
+valid arguments for this type:
+.LP
+.RS 4n
+.B TR_NANOSEC
+.RS 16n
+Nanosecond granularity
+.RE
+.RE
+.RS 4n
+.B TR_MICROSEC
+.RS 16n
+Microsecond granularity
+.RE
+.RE
+.RS 4n
+.B TR_MILLISEC
+.RS 16n
+Millisecond granularity
+.RE
+.RE
+.RS 4n
+.B TR_SEC
+.RS 16n
+Second granularity
+.RE
+.RE
+.RS 4n
+.B TR_CLOCK_TICK
+.RS 16n
+Granularity of a kernel clock tick, commonly 100 or 1000 Hz.
+.RE
+.RE
+.LP
+Note that the granularity of these functions is in clock ticks,
+therefore the only values which will have an effect are:
+.B TR_SEC
+and
+.B TR_CLOCK_TICK .
+.RE
+
+.SH DESCRIPTION
.LP
Condition variables are a standard form of thread synchronization. They are
designed to be used with mutual exclusion locks (mutexes). The associated mutex
@@ -168,16 +227,32 @@ being signaled after the timeout time has been reached, or \fB0\fR if a signal
For both \fBcv_timedwait()\fR and \fBcv_timedwait_sig()\fR, time is in absolute
clock ticks since the last system reboot. The current time may be found by
calling \fBddi_get_lbolt\fR(9F).
-.SH RETURN VALUES
.sp
+.LP
+The functions
+.B cv_reltimedwait()
+and
+.B cv_reltimedwait_sig()
+behave similarly to
+.B cv_timedwait() and
+.B cv_timedwait_sig()
+respectively, except instead of taking a time in absolute clock ticks,
+they take a relative number of clock ticks to wait. In addition, both
+functions take an additional argument
+.I res,
+which specifies the desired granularity that the system should default
+to, generally the value
+.B TR_CLOCK_TICK .
+.SH RETURN VALUES
.ne 2
.na
\fB\fB0\fR\fR
.ad
.RS 9n
-For \fBcv_wait_sig()\fR and \fBcv_timedwait_sig()\fR indicates that the
-condition was not necessarily signaled and the function returned because a
-signal (as in \fBkill\fR(2)) was pending.
+For \fBcv_wait_sig()\fR, \fBcv_timedwait_sig()\fR, and
+\fBcv_reltimedwait_sig()\fR indicates that the condition was not necessarily
+signaled and the function returned because a signal (as in \fBkill\fR(2)) was
+pending.
.RE
.sp
@@ -186,9 +261,9 @@ signal (as in \fBkill\fR(2)) was pending.
\fB\fB\(mi1\fR\fR
.ad
.RS 9n
-For \fBcv_timedwait()\fR and \fBcv_timedwait_sig()\fR indicates that the
-condition was not necessarily signaled and the function returned because the
-timeout time was reached.
+For \fBcv_timedwait()\fR, \fBcv_timedwait_sig()\fR, \fBcv_reltimedwait()\fR, and
+\fBcv_reltimedwait_sig()\fR, indicates that the condition was not necessarily
+signaled and the function returned because the timeout time was reached.
.RE
.sp
@@ -197,23 +272,24 @@ timeout time was reached.
\fB\fB>0\fR\fR
.ad
.RS 9n
-For \fBcv_wait_sig()\fR, \fBcv_timedwait()\fR or \fBcv_timedwait_sig()\fR
-indicates that the condition was met and the function returned due to a call to
-\fBcv_signal()\fR or \fBcv_broadcast()\fR, or due to a premature wakeup (see
-NOTES).
+For \fBcv_wait_sig()\fR, \fBcv_timedwait()\fR, \fBcv_timedwait_sig()\fR,
+\fBcv_reltimedwait()\fR, and \fBcv_reltimedwait_sig()\fR, indicates that the
+condition was met and the function returned due to a call to \fBcv_signal()\fR
+or \fBcv_broadcast()\fR, or due to a premature wakeup (see NOTES).
.RE
.SH CONTEXT
-.sp
.LP
These functions can be called from user, kernel or interrupt context. In most
-cases, however, \fBcv_wait()\fR, \fBcv_timedwait()\fR, \fBcv_wait_sig()\fR, and
-\fBcv_timedwait_sig()\fR should not be called from interrupt context, and
+cases, however, \fBcv_wait()\fR, \fBcv_timedwait()\fR, \fBcv_wait_sig()\fR,
+\fBcv_timedwait_sig()\fR, \fBcv_reltimedwait()\fR, and
+\fBcv_reltimedwait_sig()\fR, should not be called from interrupt context, and
cannot be called from a high-level interrupt context.
.sp
.LP
-If \fBcv_wait()\fR, \fBcv_timedwait()\fR, \fBcv_wait_sig()\fR, or
-\fBcv_timedwait_sig()\fR are used from interrupt context, lower-priority
+If \fBcv_wait()\fR, \fBcv_timedwait()\fR, \fBcv_wait_sig()\fR,
+\fBcv_timedwait_sig()\fR, \fBcv_reltimedwait()\fR, or
+\fBcv_reltimedwait_sig()\fR, are used from interrupt context, lower-priority
interrupts will not be serviced during the wait. This means that if the thread
that will eventually perform the wakeup becomes blocked on anything that
requires the lower-priority interrupt, the system will hang.
@@ -264,16 +340,16 @@ mutex_exit(&un->un_lock);
.in -2
.SH NOTES
-.sp
.LP
It is possible for \fBcv_wait()\fR, \fBcv_wait_sig()\fR, \fBcv_timedwait()\fR,
-and \fBcv_timedwait_sig()\fR to return prematurely, that is, not due to a call
-to \fBcv_signal()\fR or \fBcv_broadcast()\fR. This occurs most commonly in the
-case of \fBcv_wait_sig()\fR and \fBcv_timedwait_sig()\fR when the thread is
-stopped and restarted by job control signals or by a debugger, but can happen
-in other cases as well, even for \fBcv_wait()\fR. Code that calls these
-functions must always recheck the reason for blocking and call again if the
-reason for blocking is still true.
+\fBcv_timedwait_sig()\fR, \fBcv_reltimedwait()\fR, and
+\fBcv_reltimedwait_sig()\fR to return prematurely, that is, not due to a call to
+\fBcv_signal()\fR or \fBcv_broadcast()\fR. This occurs most commonly in the case
+of \fBcv_wait_sig()\fR and \fBcv_timedwait_sig()\fR when the thread is stopped
+and restarted by job control signals or by a debugger, but can happen in other
+cases as well, even for \fBcv_wait()\fR. Code that calls these functions must
+always recheck the reason for blocking and call again if the reason for blocking
+is still true.
.sp
.LP
If your driver needs to wait on behalf of processes that have real-time
@@ -284,13 +360,13 @@ priority inversions.
.LP
Not all threads can receive signals from user level processes. In cases where
such reception is impossible (such as during execution of \fBclose\fR(9E) due
-to \fBexit\fR(2)), \fBcv_wait_sig()\fR behaves as \fBcv_wait()\fR, and
-\fBcv_timedwait_sig()\fR behaves as \fBcv_timedwait()\fR. To avoid unkillable
+to \fBexit\fR(2)), \fBcv_wait_sig()\fR behaves as \fBcv_wait()\fR,
+\fBcv_timedwait_sig()\fR behaves as \fBcv_timedwait()\fR, and
+\fBcv_reltimedwait_sig()\fR behaves as \fBcv_reltimedwait()\fR. To avoid unkillable
processes, users of these functions may need to protect against waiting
indefinitely for events that might not occur. The \fBddi_can_receive_sig\fR(9F)
function is provided to detect when signal reception is possible.
.SH SEE ALSO
-.sp
.LP
\fBkill\fR(2), \fBddi_can_receive_sig\fR(9F), \fBddi_get_lbolt\fR(9F),
\fBmutex\fR(9F), \fBmutex_init\fR(9F)
diff --git a/usr/src/pkg/manifests/SUNWcs.man1.inc b/usr/src/pkg/manifests/SUNWcs.man1.inc
index 93d0f393b2..cf41d20103 100644
--- a/usr/src/pkg/manifests/SUNWcs.man1.inc
+++ b/usr/src/pkg/manifests/SUNWcs.man1.inc
@@ -107,6 +107,7 @@ file path=usr/share/man/man1/keylogout.1
file path=usr/share/man/man1/kill.1
file path=usr/share/man/man1/kmfcfg.1
file path=usr/share/man/man1/ksh93.1
+file path=usr/share/man/man1/kvmstat.1
file path=usr/share/man/man1/ld.so.1.1
file path=usr/share/man/man1/let.1
file path=usr/share/man/man1/limit.1
diff --git a/usr/src/pkg/manifests/system-kernel.man2.inc b/usr/src/pkg/manifests/system-kernel.man2.inc
index 0648bcd32f..c1b9076963 100644
--- a/usr/src/pkg/manifests/system-kernel.man2.inc
+++ b/usr/src/pkg/manifests/system-kernel.man2.inc
@@ -178,6 +178,7 @@ link path=usr/share/man/man2/faccessat.2 target=access.2
link path=usr/share/man/man2/facl.2 target=acl.2
link path=usr/share/man/man2/fchdir.2 target=chdir.2
link path=usr/share/man/man2/fchmod.2 target=chmod.2
+link path=usr/share/man/man2/fchmodat.2 target=chmod.2
link path=usr/share/man/man2/fchown.2 target=chown.2
link path=usr/share/man/man2/fchownat.2 target=chown.2
link path=usr/share/man/man2/fchroot.2 target=chroot.2
@@ -189,6 +190,7 @@ link path=usr/share/man/man2/forkx.2 target=fork.2
link path=usr/share/man/man2/fstat.2 target=stat.2
link path=usr/share/man/man2/fstatat.2 target=stat.2
link path=usr/share/man/man2/fstatvfs.2 target=statvfs.2
+link path=usr/share/man/man2/futimens.2 target=utimes.2
link path=usr/share/man/man2/futimesat.2 target=utimes.2
link path=usr/share/man/man2/getaudit_addr.2 target=getaudit.2
link path=usr/share/man/man2/getegid.2 target=getuid.2
@@ -202,11 +204,15 @@ link path=usr/share/man/man2/getprojid.2 target=settaskid.2
link path=usr/share/man/man2/getrctl.2 target=setrctl.2
link path=usr/share/man/man2/gettaskid.2 target=settaskid.2
link path=usr/share/man/man2/intro.2 target=Intro.2
+link path=usr/share/man/man2/linkat.2 target=link.2
link path=usr/share/man/man2/lchown.2 target=chown.2
link path=usr/share/man/man2/lstat.2 target=stat.2
+link path=usr/share/man/man2/mkdirat.2 target=mkdir.2
+link path=usr/share/man/man2/mknodat.2 target=mknod.2
link path=usr/share/man/man2/openat.2 target=open.2
link path=usr/share/man/man2/pathconf.2 target=fpathconf.2
link path=usr/share/man/man2/pipe2.2 target=pipe.2
+link path=usr/share/man/man2/ppoll.2 target=poll.2
link path=usr/share/man/man2/pread.2 target=read.2
link path=usr/share/man/man2/pset_assign.2 target=pset_create.2
link path=usr/share/man/man2/pset_destroy.2 target=pset_create.2
@@ -214,6 +220,7 @@ link path=usr/share/man/man2/pset_getattr.2 target=pset_setattr.2
link path=usr/share/man/man2/putacct.2 target=getacct.2
link path=usr/share/man/man2/putpmsg.2 target=putmsg.2
link path=usr/share/man/man2/pwrite.2 target=write.2
+link path=usr/share/man/man2/readlinkat.2 target=readlink.2
link path=usr/share/man/man2/readv.2 target=read.2
link path=usr/share/man/man2/renameat.2 target=rename.2
link path=usr/share/man/man2/sbrk.2 target=brk.2
@@ -234,8 +241,10 @@ link path=usr/share/man/man2/setustack.2 target=getustack.2
link path=usr/share/man/man2/shmat.2 target=shmop.2
link path=usr/share/man/man2/shmdt.2 target=shmop.2
link path=usr/share/man/man2/sigsendset.2 target=sigsend.2
+link path=usr/share/man/man2/symlinkat.2 target=symlink.2
link path=usr/share/man/man2/umount2.2 target=umount.2
link path=usr/share/man/man2/unlinkat.2 target=unlink.2
+link path=usr/share/man/man2/utimensat.2 target=utimes.2
link path=usr/share/man/man2/vforkx.2 target=vfork.2
link path=usr/share/man/man2/wracct.2 target=getacct.2
link path=usr/share/man/man2/writev.2 target=write.2
diff --git a/usr/src/pkg/manifests/system-library.man3c.inc b/usr/src/pkg/manifests/system-library.man3c.inc
index 8e0c16eefb..0440f9bc40 100644
--- a/usr/src/pkg/manifests/system-library.man3c.inc
+++ b/usr/src/pkg/manifests/system-library.man3c.inc
@@ -56,6 +56,7 @@ file path=usr/share/man/man3c/catgets.3c
file path=usr/share/man/man3c/catopen.3c
file path=usr/share/man/man3c/cfgetispeed.3c
file path=usr/share/man/man3c/cfsetispeed.3c
+file path=usr/share/man/man3c/clearenv.3c
file path=usr/share/man/man3c/clock.3c
file path=usr/share/man/man3c/clock_nanosleep.3c
file path=usr/share/man/man3c/clock_settime.3c
@@ -108,6 +109,7 @@ file path=usr/share/man/man3c/euclen.3c
file path=usr/share/man/man3c/exit.3c
file path=usr/share/man/man3c/fattach.3c
file path=usr/share/man/man3c/fclose.3c
+file path=usr/share/man/man3c/fcloseall.3c
file path=usr/share/man/man3c/fdatasync.3c
file path=usr/share/man/man3c/fdetach.3c
file path=usr/share/man/man3c/fdopen.3c
@@ -155,12 +157,14 @@ file path=usr/share/man/man3c/getloadavg.3c
file path=usr/share/man/man3c/getlogin.3c
file path=usr/share/man/man3c/getmntent.3c
file path=usr/share/man/man3c/getnetgrent.3c
+file path=usr/share/man/man3c/get_nprocs.3c
file path=usr/share/man/man3c/getopt.3c
file path=usr/share/man/man3c/getpagesize.3c
file path=usr/share/man/man3c/getpagesizes.3c
file path=usr/share/man/man3c/getpass.3c
file path=usr/share/man/man3c/getpeerucred.3c
file path=usr/share/man/man3c/getpriority.3c
+file path=usr/share/man/man3c/getprogname.3c
file path=usr/share/man/man3c/getpw.3c
file path=usr/share/man/man3c/getpwnam.3c
file path=usr/share/man/man3c/getrusage.3c
@@ -310,12 +314,14 @@ file path=usr/share/man/man3c/pthread_key_create.3c
file path=usr/share/man/man3c/pthread_key_delete.3c
file path=usr/share/man/man3c/pthread_kill.3c
file path=usr/share/man/man3c/pthread_mutex_getprioceiling.3c
+file path=usr/share/man/man3c/pthread_mutex_consistent.3c
file path=usr/share/man/man3c/pthread_mutex_init.3c
file path=usr/share/man/man3c/pthread_mutex_lock.3c
file path=usr/share/man/man3c/pthread_mutex_timedlock.3c
file path=usr/share/man/man3c/pthread_mutexattr_getprioceiling.3c
file path=usr/share/man/man3c/pthread_mutexattr_getprotocol.3c
file path=usr/share/man/man3c/pthread_mutexattr_getpshared.3c
+file path=usr/share/man/man3c/pthread_mutexattr_getrobust.3c
file path=usr/share/man/man3c/pthread_mutexattr_gettype.3c
file path=usr/share/man/man3c/pthread_mutexattr_init.3c
file path=usr/share/man/man3c/pthread_once.3c
@@ -399,6 +405,7 @@ file path=usr/share/man/man3c/sigsetops.3c
file path=usr/share/man/man3c/sigstack.3c
file path=usr/share/man/man3c/sigwaitinfo.3c
file path=usr/share/man/man3c/sleep.3c
+file path=usr/share/man/man3c/smt_pause.3c
file path=usr/share/man/man3c/ssignal.3c
file path=usr/share/man/man3c/stack_getbounds.3c
file path=usr/share/man/man3c/stack_inbounds.3c
@@ -663,6 +670,7 @@ link path=usr/share/man/man3c/bindtextdomain.3c target=gettext.3c
link path=usr/share/man/man3c/btowc_l.3c target=btowc.3c
link path=usr/share/man/man3c/bzero.3c target=bstring.3c
link path=usr/share/man/man3c/calloc.3c target=malloc.3c
+link path=usr/share/man/man3c/canonicalize_file_name.3c target=realpath.3c
link path=usr/share/man/man3c/catclose.3c target=catopen.3c
link path=usr/share/man/man3c/cfgetospeed.3c target=cfgetispeed.3c
link path=usr/share/man/man3c/cfsetospeed.3c target=cfsetispeed.3c
@@ -732,6 +740,8 @@ link path=usr/share/man/man3c/fcvt.3c target=ecvt.3c
link path=usr/share/man/man3c/fdopendir.3c target=opendir.3c
link path=usr/share/man/man3c/fdwalk.3c target=closefrom.3c
link path=usr/share/man/man3c/feof.3c target=ferror.3c
+link path=usr/share/man/man3c/ffsl.3c target=ffs.3c
+link path=usr/share/man/man3c/ffsll.3c target=ffs.3c
link path=usr/share/man/man3c/fgetgrent.3c target=getgrnam.3c
link path=usr/share/man/man3c/fgetgrent_r.3c target=getgrnam.3c
link path=usr/share/man/man3c/fgetpwent.3c target=getpwnam.3c
@@ -744,6 +754,9 @@ link path=usr/share/man/man3c/fgetws.3c target=getws.3c
link path=usr/share/man/man3c/file_to_decimal.3c target=string_to_decimal.3c
link path=usr/share/man/man3c/fileno.3c target=ferror.3c
link path=usr/share/man/man3c/finite.3c target=isnand.3c
+link path=usr/share/man/man3c/fls.3c target=ffs.3c
+link path=usr/share/man/man3c/flsl.3c target=ffs.3c
+link path=usr/share/man/man3c/flsll.3c target=ffs.3c
link path=usr/share/man/man3c/fpclass.3c target=isnand.3c
link path=usr/share/man/man3c/fpgetmask.3c target=fpgetround.3c
link path=usr/share/man/man3c/fpgetsticky.3c target=fpgetround.3c
@@ -781,6 +794,7 @@ link path=usr/share/man/man3c/gethrvtime.3c target=gethrtime.3c
link path=usr/share/man/man3c/getlogin_r.3c target=getlogin.3c
link path=usr/share/man/man3c/getmntany.3c target=getmntent.3c
link path=usr/share/man/man3c/getnetgrent_r.3c target=getnetgrent.3c
+link path=usr/share/man/man3c/get_nprocs_conf.3c target=get_nprocs.3c
link path=usr/share/man/man3c/getpassphrase.3c target=getpass.3c
link path=usr/share/man/man3c/getpwent.3c target=getpwnam.3c
link path=usr/share/man/man3c/getpwent_r.3c target=getpwnam.3c
@@ -912,9 +926,11 @@ link path=usr/share/man/man3c/memccpy.3c target=memory.3c
link path=usr/share/man/man3c/memchr.3c target=memory.3c
link path=usr/share/man/man3c/memcmp.3c target=memory.3c
link path=usr/share/man/man3c/memcpy.3c target=memory.3c
+link path=usr/share/man/man3c/memmem.3c target=memory.3c
link path=usr/share/man/man3c/memmove.3c target=memory.3c
link path=usr/share/man/man3c/memset.3c target=memory.3c
link path=usr/share/man/man3c/minor.3c target=makedev.3c
+link path=usr/share/man/man3c/mkfifoat.3c target=mkfifo.3c
link path=usr/share/man/man3c/mkdtemp.3c target=mkstemp.3c
link path=usr/share/man/man3c/mkostemp.3c target=mkstemp.3c
link path=usr/share/man/man3c/mkostemps.3c target=mkstemp.3c
@@ -1046,6 +1062,8 @@ link path=usr/share/man/man3c/pthread_mutexattr_setprotocol.3c \
target=pthread_mutexattr_getprotocol.3c
link path=usr/share/man/man3c/pthread_mutexattr_setpshared.3c \
target=pthread_mutexattr_getpshared.3c
+link path=usr/share/man/man3c/pthread_mutexattr_setrobust.3c \
+ target=pthread_mutexattr_getrobust.3c
link path=usr/share/man/man3c/pthread_mutexattr_settype.3c \
target=pthread_mutexattr_gettype.3c
link path=usr/share/man/man3c/pthread_rwlock_destroy.3c \
@@ -1153,6 +1171,7 @@ link path=usr/share/man/man3c/setlinebuf.3c target=setbuffer.3c
link path=usr/share/man/man3c/setlogmask.3c target=syslog.3c
link path=usr/share/man/man3c/setnetgrent.3c target=getnetgrent.3c
link path=usr/share/man/man3c/setpriority.3c target=getpriority.3c
+link path=usr/share/man/man3c/setprogname.3c target=getprogname.3c
link path=usr/share/man/man3c/setpwent.3c target=getpwnam.3c
link path=usr/share/man/man3c/setspent.3c target=getspnam.3c
link path=usr/share/man/man3c/setstate.3c target=random.3c
@@ -1188,15 +1207,21 @@ link path=usr/share/man/man3c/sscanf.3c target=scanf.3c
link path=usr/share/man/man3c/stderr.3c target=stdio.3c
link path=usr/share/man/man3c/stdin.3c target=stdio.3c
link path=usr/share/man/man3c/stdout.3c target=stdio.3c
+link path=usr/share/man/man3c/stpcpy.3c target=string.3c
+link path=usr/share/man/man3c/stpncpy.3c target=string.3c
link path=usr/share/man/man3c/strcasecmp.3c target=string.3c
link path=usr/share/man/man3c/strcasecmp_l.3c target=string.3c
+link path=usr/share/man/man3c/strcasestr.3c target=string.3c
+link path=usr/share/man/man3c/strcasestr_l.3c target=string.3c
link path=usr/share/man/man3c/strcat.3c target=string.3c
link path=usr/share/man/man3c/strchr.3c target=string.3c
+link path=usr/share/man/man3c/strchrnul.3c target=string.3c
link path=usr/share/man/man3c/strcmp.3c target=string.3c
link path=usr/share/man/man3c/strcoll_l.3c target=strcoll.3c
link path=usr/share/man/man3c/strcpy.3c target=string.3c
link path=usr/share/man/man3c/strcspn.3c target=string.3c
link path=usr/share/man/man3c/strdup.3c target=string.3c
+link path=usr/share/man/man3c/strdupa.3c target=string.3c
link path=usr/share/man/man3c/strerror_r.3c target=strerror.3c
link path=usr/share/man/man3c/strfmon_l.3c target=strfmon.3c
link path=usr/share/man/man3c/strftime_l.3c target=strftime.3c
@@ -1208,7 +1233,10 @@ link path=usr/share/man/man3c/strncasecmp_l.3c target=string.3c
link path=usr/share/man/man3c/strncat.3c target=string.3c
link path=usr/share/man/man3c/strncmp.3c target=string.3c
link path=usr/share/man/man3c/strncpy.3c target=string.3c
+link path=usr/share/man/man3c/strndup.3c target=string.3c
+link path=usr/share/man/man3c/strndupa.3c target=string.3c
link path=usr/share/man/man3c/strnlen.3c target=string.3c
+link path=usr/share/man/man3c/strnstr.3c target=string.3c
link path=usr/share/man/man3c/strpbrk.3c target=string.3c
link path=usr/share/man/man3c/strptime_l.3c target=strptime.3c
link path=usr/share/man/man3c/strrchr.3c target=string.3c