summaryrefslogtreecommitdiff
path: root/static/netbsd/man3/affinity.3
diff options
context:
space:
mode:
authorJacob McDonnell <jacob@jacobmcdonnell.com>2026-04-25 19:55:15 -0400
committerJacob McDonnell <jacob@jacobmcdonnell.com>2026-04-25 19:55:15 -0400
commit253e67c8b3a72b3a4757fdbc5845297628db0a4a (patch)
treeadf53b66087aa30dfbf8bf391a1dadb044c3bf4d /static/netbsd/man3/affinity.3
parenta9157ce950dfe2fc30795d43b9d79b9d1bffc48b (diff)
docs: Added All NetBSD Manuals
Diffstat (limited to 'static/netbsd/man3/affinity.3')
-rw-r--r--static/netbsd/man3/affinity.3141
1 files changed, 141 insertions, 0 deletions
diff --git a/static/netbsd/man3/affinity.3 b/static/netbsd/man3/affinity.3
new file mode 100644
index 00000000..50a3d604
--- /dev/null
+++ b/static/netbsd/man3/affinity.3
@@ -0,0 +1,141 @@
+.\" $NetBSD: affinity.3,v 1.10 2025/02/25 10:15:41 riastradh Exp $
+.\"
+.\" Copyright (c) 2008 The NetBSD Foundation, Inc.
+.\" All rights reserved.
+.\"
+.\" This code is derived from software contributed to The NetBSD Foundation
+.\" by Mindaugas Rasiukevicius <rmind at NetBSD org>.
+.\"
+.\" Redistribution and use in source and binary forms, with or without
+.\" modification, are permitted provided that the following conditions
+.\" are met:
+.\" 1. Redistributions of source code must retain the above copyright
+.\" notice, this list of conditions and the following disclaimer.
+.\" 2. Redistributions in binary form must reproduce the above copyright
+.\" notice, this list of conditions and the following disclaimer in the
+.\" documentation and/or other materials provided with the distribution.
+.\"
+.\" THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
+.\" ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
+.\" TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+.\" PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
+.\" BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+.\" CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+.\" SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+.\" INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+.\" CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+.\" ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+.\" POSSIBILITY OF SUCH DAMAGE.
+.\"
+.Dd February 21, 2025
+.Dt AFFINITY 3
+.Os
+.Sh NAME
+.Nm pthread_setaffinity_np ,
+.Nm pthread_getaffinity_np
+.Nd affinity of threads
+.Sh LIBRARY
+.Lb libpthread
+.Sh SYNOPSIS
+.In pthread.h
+.In sched.h
+.Ft int
+.Fn pthread_setaffinity_np "pthread_t thread" "size_t size" "cpuset_t *set"
+.Ft int
+.Fn pthread_getaffinity_np "pthread_t thread" "size_t size" "cpuset_t *set"
+.Sh DESCRIPTION
+Thread affinity allows to run the thread on specified CPU or CPUs only.
+.Pp
+The
+.Fn pthread_setaffinity_np
+function sets the affinity mask
+.Fa set
+for
+.Fa thread .
+At least one valid CPU must be set in the mask.
+.Pp
+The
+.Fn pthread_getaffinity_np
+function gets the affinity mask of
+.Fa thread
+into
+.Fa set .
+Note that
+.Fa set
+must be created and initialized using the
+.Xr cpuset 3
+functions.
+.Sh IMPLEMENTATION NOTES
+Setting CPU
+.Nm
+requires super-user privileges.
+Ordinary users can be allowed to control CPU affinity
+of their threads via the
+.Pa security.models.extensions.user_set_cpu_affinity
+.Xr sysctl 7 .
+See
+.Xr secmodel_extensions 9 .
+.Pp
+Portable applications should not use the
+.Fn pthread_setaffinity_np
+and
+.Fn pthread_getaffinity_np
+functions.
+.Sh RETURN VALUES
+The
+.Fn pthread_setaffinity_np
+and
+.Fn pthread_getaffinity_np
+functions return 0 on success.
+Otherwise, an error number is returned to indicate the error.
+.Sh EXAMPLES
+An example of code fragment, which sets the affinity for the current
+thread to the CPU whose ID is 0:
+.Bd -literal
+ cpuset_t *cset;
+ pthread_t pth;
+ cpuid_t ci;
+ int error;
+
+ cset = cpuset_create();
+ if (cset == NULL) {
+ err(EXIT_FAILURE, "cpuset_create");
+ }
+ ci = 0;
+ cpuset_set(ci, cset);
+
+ pth = pthread_self();
+ error = pthread_setaffinity_np(pth, cpuset_size(cset), cset);
+ if (error) {
+ errc(EXIT_FAILURE, error, "pthread_setaffinity_np failed");
+ }
+ cpuset_destroy(cset);
+.Ed
+.Sh COMPATIBILITY
+Both functions are non-standard extensions.
+.Sh ERRORS
+Both functions may fail if:
+.Bl -tag -width Er
+.It Bq Er EINVAL
+The specified
+.Fa set
+was invalid.
+.It Bq Er EPERM
+The calling process lacks the appropriate privileges to perform
+the operation.
+.It Bq Er ESRCH
+No thread could be found corresponding to the one specified by
+.Fa thread .
+.El
+.Sh NOTES
+There is an alternative processor sets interface, see
+.Xr pset 3 .
+However, thread affinity and processor sets are mutually exclusive,
+hence mixing of these interfaces is prohibited.
+.Sh SEE ALSO
+.Xr cpuset 3 ,
+.Xr pset 3 ,
+.Xr pthread_getschedparam 3 ,
+.Xr pthread_setschedparam 3 ,
+.Xr sched 3 ,
+.Xr schedctl 8