summaryrefslogtreecommitdiff
path: root/usr/src/man/man3c/pthread_attr_get_np.3c
diff options
context:
space:
mode:
Diffstat (limited to 'usr/src/man/man3c/pthread_attr_get_np.3c')
-rw-r--r--usr/src/man/man3c/pthread_attr_get_np.3c198
1 files changed, 198 insertions, 0 deletions
diff --git a/usr/src/man/man3c/pthread_attr_get_np.3c b/usr/src/man/man3c/pthread_attr_get_np.3c
new file mode 100644
index 0000000000..8ffb28c0fc
--- /dev/null
+++ b/usr/src/man/man3c/pthread_attr_get_np.3c
@@ -0,0 +1,198 @@
+.\"
+.\" 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 2016 Joyent, Inc.
+.\"
+.Dd Feb 07, 2015
+.Dt PTHREAD_ATTR_GET_NP 3C
+.Os
+.Sh NAME
+.Nm pthread_attr_get_np
+.Nd get pthread attributes of a running thread
+.Sh SYNOPSIS
+.In pthread.h
+.Ft int
+.Fo pthread_attr_get_np
+.Fa "pthread_t thread"
+.Fa "pthread_attr_t *attr"
+.Fc
+.Sh DESCRIPTION
+The
+.Fn pthread_attr_get_np
+function provides a way to get the attributes of the thread
+.Fa thread
+after it has been created. This function is most commonly used to obtain
+the actual location and size of a thread's stack.
+.Pp
+The attributes pointer,
+.Fa attr ,
+will be filled in with the current attributes for the thread. The
+attributes should be allocated by a call to
+.Xr pthread_attr_init 3C
+prior to calling the
+.Fn pthrad_attr_get_np
+function. When
+.Fa attr
+is done being used, it should be destroyed through a call to
+.Xr pthread_attr_destroy 3C .
+.Pp
+The attributes of the thread
+.Fa thread
+will be the same as those passed in at the time
+.Xr pthread_create 3C
+was called (or the default set if none were specified), except that the
+following values will be updated:
+.Bl -tag -width Sy
+.It Sy Thread Stack Size
+If no explicit stack size was specified, then
+.Fa attr
+will contain the actual size of the stack.
+.Pp
+If the size of the stack was specified, then it may have been changed to
+ensure that the required alignment of the platform is satisfied.
+.It Sy The Stack Address
+If no stack address was specified, then
+.Fa attr
+will contain the actual address of the stack that the system allocated
+for the thread.
+.It Sy Thread Detach State
+The detach state, whether or not the thread may be joined by a call to
+.Xr pthread_join 3C ,
+may have changed since the process was created due to a call to
+.Xr pthread_detach 3C .
+.Fa attr
+will reflect the current setting of
+.Fa thread .
+.It Sy Thread Scheduling Parameter
+The scheduling parameter attribute will be updated with the current
+scheduling parameter of
+.Fa thread .
+This is the same information as available through
+.Xr pthread_getschedparam 3C
+and it is the preferred interface for obtaining that information.
+.It Sy Thread Scheduling Policy
+The scheduling policy attribute of
+.Fa attr
+will be updated with the current scheduling policy being applied to the
+thread. This may have changed, for example, due to a call to
+.Xr pthread_setschedparam 3C .
+As with the thread's scheduling parameter, the preferred interface for
+obtaining this information is by using
+.Xr pthread_getschedparam 3C .
+.It Sy Thread Guard Size
+The value of the guard size attribute for the thread will be updated to
+reflect the actual size of the guard installed for
+.Fa thread .
+For more information on the guard size of a thread and its purpose, see
+.Xr pthread_attr_getguardsize 3C .
+.El
+.Sh RETURN VALUES
+Upon successful completion, the
+.Fn pthread_attr_get_np
+and
+.Fn pthread_getattr_np
+functions return
+.Sy 0 .
+Otherwise, an error number is returned to indicate the error.
+.Sh EXAMPLES
+The following program demonstrates how to use these functions to get
+the location and stack size of a newly created thread.
+.Bd -literal
+#include <assert.h>
+#include <errno.h>
+#include <pthread.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+
+static pthread_t g_thr;
+
+void *
+print_stackinfo(void *arg)
+{
+ int ret;
+ pthread_attr_t attr;
+ pthread_t *thrp = arg;
+ void *stk;
+ size_t stksize;
+
+ if (pthread_attr_init(&attr) != 0) {
+ fprintf(stderr, "failed to init attr: %s\\n",
+ strerror(errno));
+ exit(1);
+ }
+
+ if (pthread_attr_get_np(*thrp, &attr) != 0) {
+ fprintf(stderr, "failed to get thread attributes: %s\\n",
+ strerror(errno));
+ exit(1);
+ }
+
+ ret = pthread_attr_getstackaddr(&attr, &stk);
+ assert(ret == 0);
+ ret = pthread_attr_getstacksize(&attr, &stksize);
+ assert(ret == 0);
+ (void) printf("stack base is at %p, it is %d bytes large\\n",
+ stk, stksize);
+ return (NULL);
+}
+
+int
+main(void)
+{
+ int ret;
+
+ if ((ret = pthread_create(&g_thr, NULL, print_stackinfo,
+ &g_thr) != 0)) {
+ fprintf(stderr, "failed to create a thread: %s\\n",
+ strerror(errno));
+ exit(1);
+ }
+
+ pthread_join(g_thr, NULL);
+ return (0);
+}
+.Ed
+.Sh ERRORS
+The
+.Fn pthread_attr_get_np
+function will fail if:
+.Bl -tag -width Er
+.It Er EINVAL
+The pthread_attr_t object
+.Fa attr
+was not properly initialized with a call to
+.Xr pthread_attr_init 3C .
+.It Er ESRCH
+No thread could be found corresponding to the specified thread ID,
+.Fa thread .
+.El
+.Sh INTERFACE STABILITY
+.Sy Committed
+.Sh MT-LEVEL
+.Sy MT-Safe
+.Sh SEE ALSO
+.Xr pthread_attr_destroy 3C ,
+.Xr pthread_attr_getdetachstate 3C ,
+.Xr pthread_attr_getguardsize 3C ,
+.Xr pthread_attr_getinheritsched 3C ,
+.Xr pthread_attr_getschedparam 3C ,
+.Xr pthread_attr_getschedpolicy 3C ,
+.Xr pthread_attr_getscope 3C ,
+.Xr pthread_attr_getstackaddr 3C ,
+.Xr pthread_attr_getstacksize 3C ,
+.Xr pthread_attr_init 3C ,
+.Xr pthread_create 3C ,
+.Xr pthread_detach 3C ,
+.Xr pthread_getschedparam 3C ,
+.Xr pthread_setschedparam 3C ,
+.Xr attributes 5 ,
+.Xr threads 5