diff options
| author | Jacob McDonnell <jacob@jacobmcdonnell.com> | 2026-04-25 19:55:15 -0400 |
|---|---|---|
| committer | Jacob McDonnell <jacob@jacobmcdonnell.com> | 2026-04-25 19:55:15 -0400 |
| commit | 253e67c8b3a72b3a4757fdbc5845297628db0a4a (patch) | |
| tree | adf53b66087aa30dfbf8bf391a1dadb044c3bf4d /static/netbsd/man3/affinity.3 | |
| parent | a9157ce950dfe2fc30795d43b9d79b9d1bffc48b (diff) | |
docs: Added All NetBSD Manuals
Diffstat (limited to 'static/netbsd/man3/affinity.3')
| -rw-r--r-- | static/netbsd/man3/affinity.3 | 141 |
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 |
