1.\" Copyright (c) 2017 The DragonFly Project. All rights reserved. 2.\" 3.\" This code is derived from software contributed to The DragonFly Project 4.\" by Sepherosa Ziehau <sepherosa@gmail.com>. 5.\" 6.\" Redistribution and use in source and binary forms, with or without 7.\" modification, are permitted provided that the following conditions 8.\" are met: 9.\" 10.\" 1. Redistributions of source code must retain the above copyright 11.\" notice, this list of conditions and the following disclaimer. 12.\" 2. Redistributions in binary form must reproduce the above copyright 13.\" notice, this list of conditions and the following disclaimer in 14.\" the documentation and/or other materials provided with the 15.\" distribution. 16.\" 3. Neither the name of The DragonFly Project nor the names of its 17.\" contributors may be used to endorse or promote products derived 18.\" from this software without specific, prior written permission. 19.\" 20.\" THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 21.\" ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 22.\" LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS 23.\" FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 24.\" COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, 25.\" INCIDENTAL, SPECIAL, EXEMPLARY OR CONSEQUENTIAL DAMAGES (INCLUDING, 26.\" BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 27.\" LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED 28.\" AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, 29.\" OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT 30.\" OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 31.\" SUCH DAMAGE. 32.\" 33.Dd January 14, 2017 34.Dt LWP_SETAFFINITY 2 35.Os 36.Sh NAME 37.Nm lwp_setaffinity , 38.Nm lwp_getaffinity 39.Nd set and get a LWP's CPU affinity mask 40.Sh LIBRARY 41.Lb libc 42.Sh SYNOPSIS 43.In sys/lwp.h 44.Ft int 45.Fn lwp_setaffinity "pid_t pid" "lwpid_t tid" "const cpumask_t *mask" 46.Ft int 47.Fn lwp_getaffinity "pid_t pid" "lwpid_t tid" "cpumask_t *mask" 48.Sh DESCRIPTION 49The 50.Fn lwp_setaffinity 51system call sets the CPU affinity mask of the LWP, 52which is identified by the 53.Fa pid 54and the 55.Fa tid , 56to the value specified by the 57.Fa mask . 58If the 59.Fa pid 60is zero, 61then the pid of the calling process is used. 62If the 63.Fa tid 64is less than zero, 65then all LWPs of the process identified by the 66.Fa pid 67are affected. 68If the LWP specified by the 69.Fa pid 70and the 71.Fa tid 72is the current LWP it will be migrated immediately, 73if necessary, otherwise it will be migrated by the scheduler later. 74.Pp 75A process created by 76.Xr fork 2 , 77.Xr vfork 2 , 78and 79.Xr rfork 2 80inherits the calling LWP's CPU affinity mask. 81Same applies to the LWPs created by 82.Xr lwp_create 2 , 83and the threads created by 84.Xr pthread_create 3 . 85.Pp 86.Fn lwp_getaffinity 87writes the affinity mask of the LWP, 88which is identified by the 89.Fa pid 90and the 91.Fa tid , 92to the cpumask_t structure pointed to by 93.Fa mask . 94If the 95.Fa pid 96is zero, 97then the pid of the calling process is used. 98If the 99.Fa tid 100is less than zero, 101then the first LWP of specified process is used. 102.Sh RETURN VALUES 103These system calls return \-1 on error and 1040 upon successful completion. 105.Sh ERRORS 106The 107.Fn lwp_setaffinity 108and 109.Fn lwp_getaffinity 110system calls will fail if: 111.Bl -tag -width Er 112.It Bq Er EFAULT 113The 114.Fa name 115parameter is outside the process's allocated address space. 116.It Bq Er EINVAL 117The 118.Fa pid 119parameter is negative. 120.It Bq Er ESRCH 121The LWP identified by the 122.Fa pid 123and the 124.Fa tid 125does not exist. 126.It Bq Er EPERM 127The 128.Fa mask 129does not contain a valid CPU. 130.El 131.Sh SEE ALSO 132.Xr fork 2 133.Xr lwp_create 2 134.Xr pthread_create 3 135.Xr pthread_getaffinity_np 3 136.Xr pthread_setaffinity_np 3 137.Xr rfork 2 138.Xr sched_getaffinity 2 139.Xr sched_setaffinity 2 140.Xr vfork 2 141.Sh HISTORY 142The 143.Fn lwp_setaffinity 144and 145.Fn lwp_getaffinity 146functions first appeared in 147.Dx 4.7 . 148