xref: /dragonfly/lib/libc/sys/lwp_setaffinity.2 (revision 1975d09e)
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 rfork 2 ,
135.Xr sched_getaffinity 2 ,
136.Xr sched_setaffinity 2 ,
137.Xr vfork 2 ,
138.Xr pthread_create 3 ,
139.Xr pthread_getaffinity_np 3 ,
140.Xr pthread_setaffinity_np 3
141.Sh HISTORY
142The
143.Fn lwp_setaffinity
144and
145.Fn lwp_getaffinity
146functions first appeared in
147.Dx 4.7 .
148