2 .\" Copyright (c) 2016 The DragonFly Project.
3 .\" All rights reserved.
5 .\" 1. Redistributions of source code must retain the above copyright
6 .\" notice, this list of conditions and the following disclaimer.
7 .\" 2. Redistributions in binary form must reproduce the above copyright
8 .\" notice, this list of conditions and the following disclaimer in
9 .\" the documentation and/or other materials provided with the
11 .\" 3. Neither the name of The DragonFly Project nor the names of its
12 .\" contributors may be used to endorse or promote products derived
13 .\" from this software without specific, prior written permission.
15 .\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
16 .\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
17 .\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
18 .\" ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
19 .\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
20 .\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
21 .\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
22 .\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
23 .\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
24 .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
33 .Nm ATOMIC_CPUMASK_COPY ,
34 .Nm ATOMIC_CPUMASK_NANDBIT ,
35 .Nm ATOMIC_CPUMASK_NANDMASK ,
36 .Nm ATOMIC_CPUMASK_ORBIT ,
37 .Nm ATOMIC_CPUMASK_ORMASK ,
38 .Nm ATOMIC_CPUMASK_TESTANDCLR ,
39 .Nm ATOMIC_CPUMASK_TESTANDSET ,
45 .Nm CPUMASK_ASSALLONES ,
47 .Nm CPUMASK_ASSBMASK ,
48 .Nm CPUMASK_ASSNBMASK ,
50 .Nm CPUMASK_CMPMASKEQ ,
51 .Nm CPUMASK_CMPMASKNEQ ,
55 .Nm CPUMASK_NANDMASK ,
60 .Nm CPUMASK_TESTMASK ,
61 .Nm CPUMASK_TESTNZERO ,
62 .Nm CPUMASK_TESTZERO ,
64 .Nd Macros to manipulate cpumask_t fields
67 .Fo ATOMIC_CPUMASK_COPY
71 .Fo ATOMIC_CPUMASK_NANDBIT
75 .Fo ATOMIC_CPUMASK_NANDMASK
79 .Fo ATOMIC_CPUMASK_ORBIT
83 .Fo ATOMIC_CPUMASK_ORMASK
87 .Fo ATOMIC_CPUMASK_TESTANDCLR
91 .Fo ATOMIC_CPUMASK_TESTANDSET
113 .Fo CPUMASK_ASSALLONES
124 .Fo CPUMASK_ASSNBMASK
131 .Fo CPUMASK_CMPMASKEQ
135 .Fo CPUMASK_CMPMASKNEQ
172 .Fo CPUMASK_TESTNZERO
185 macros allow to safely manipulate the non standard type CPU bitmasks that uses
191 Declared CPU mask variables can be initialized using one of
192 .Dv CPUMASK_INITIALIZER_ALLONES ,
193 .Dv CPUMASK_INITIALIZER_ONLYONE
198 performs a "bit scan forward" assembler instruction over whole
202 performs a "bit scan reverse".
204 Keep in mind that macros like
206 might only work in 64-bit mask range as they are provided as a convenience to
207 build more sophisticated macros.
211 macros with ATOMIC prefix perform
213 operations on the given CPU mask.
215 When adding, modifying or removing CPUMASK macros, it is important to be
216 aware that these interfaces may be used by libraries, applications,
217 users or documentation.
222 requires adjustment of both
224 macros and kernel assembly sources because
226 are implemented as non variably-sized macros.