summaryrefslogtreecommitdiffstats
path: root/man3/CPU_SET.3
diff options
context:
space:
mode:
Diffstat (limited to 'man3/CPU_SET.3')
-rw-r--r--man3/CPU_SET.3348
1 files changed, 0 insertions, 348 deletions
diff --git a/man3/CPU_SET.3 b/man3/CPU_SET.3
deleted file mode 100644
index 6c13a62..0000000
--- a/man3/CPU_SET.3
+++ /dev/null
@@ -1,348 +0,0 @@
-.\" Copyright (C) 2006 Michael Kerrisk
-.\" and Copyright (C) 2008 Linux Foundation, written by Michael Kerrisk
-.\" <mtk.manpages@gmail.com>
-.\"
-.\" SPDX-License-Identifier: Linux-man-pages-copyleft
-.\"
-.TH CPU_SET 3 2023-10-31 "Linux man-pages 6.7"
-.SH NAME
-CPU_SET, CPU_CLR, CPU_ISSET, CPU_ZERO, CPU_COUNT,
-CPU_AND, CPU_OR, CPU_XOR, CPU_EQUAL,
-CPU_ALLOC, CPU_ALLOC_SIZE, CPU_FREE,
-CPU_SET_S, CPU_CLR_S, CPU_ISSET_S, CPU_ZERO_S,
-CPU_COUNT_S, CPU_AND_S, CPU_OR_S, CPU_XOR_S, CPU_EQUAL_S \-
-macros for manipulating CPU sets
-.SH LIBRARY
-Standard C library
-.RI ( libc ", " \-lc )
-.SH SYNOPSIS
-.nf
-.BR "#define _GNU_SOURCE" " /* See feature_test_macros(7) */"
-.B #include <sched.h>
-.P
-.BI "void CPU_ZERO(cpu_set_t *" set );
-.P
-.BI "void CPU_SET(int " cpu ", cpu_set_t *" set );
-.BI "void CPU_CLR(int " cpu ", cpu_set_t *" set );
-.BI "int CPU_ISSET(int " cpu ", cpu_set_t *" set );
-.P
-.BI "int CPU_COUNT(cpu_set_t *" set );
-.P
-.BI "void CPU_AND(cpu_set_t *" destset ,
-.BI " cpu_set_t *" srcset1 ", cpu_set_t *" srcset2 );
-.BI "void CPU_OR(cpu_set_t *" destset ,
-.BI " cpu_set_t *" srcset1 ", cpu_set_t *" srcset2 );
-.BI "void CPU_XOR(cpu_set_t *" destset ,
-.BI " cpu_set_t *" srcset1 ", cpu_set_t *" srcset2 );
-.P
-.BI "int CPU_EQUAL(cpu_set_t *" set1 ", cpu_set_t *" set2 );
-.P
-.BI "cpu_set_t *CPU_ALLOC(int " num_cpus );
-.BI "void CPU_FREE(cpu_set_t *" set );
-.BI "size_t CPU_ALLOC_SIZE(int " num_cpus );
-.P
-.BI "void CPU_ZERO_S(size_t " setsize ", cpu_set_t *" set );
-.P
-.BI "void CPU_SET_S(int " cpu ", size_t " setsize ", cpu_set_t *" set );
-.BI "void CPU_CLR_S(int " cpu ", size_t " setsize ", cpu_set_t *" set );
-.BI "int CPU_ISSET_S(int " cpu ", size_t " setsize ", cpu_set_t *" set );
-.P
-.BI "int CPU_COUNT_S(size_t " setsize ", cpu_set_t *" set );
-.P
-.BI "void CPU_AND_S(size_t " setsize ", cpu_set_t *" destset ,
-.BI " cpu_set_t *" srcset1 ", cpu_set_t *" srcset2 );
-.BI "void CPU_OR_S(size_t " setsize ", cpu_set_t *" destset ,
-.BI " cpu_set_t *" srcset1 ", cpu_set_t *" srcset2 );
-.BI "void CPU_XOR_S(size_t " setsize ", cpu_set_t *" destset ,
-.BI " cpu_set_t *" srcset1 ", cpu_set_t *" srcset2 );
-.P
-.BI "int CPU_EQUAL_S(size_t " setsize ", cpu_set_t *" set1 \
-", cpu_set_t *" set2 );
-.fi
-.SH DESCRIPTION
-The
-.I cpu_set_t
-data structure represents a set of CPUs.
-CPU sets are used by
-.BR sched_setaffinity (2)
-and similar interfaces.
-.P
-The
-.I cpu_set_t
-data type is implemented as a bit mask.
-However, the data structure should be treated as opaque:
-all manipulation of CPU sets should be done via the macros
-described in this page.
-.P
-The following macros are provided to operate on the CPU set
-.IR set :
-.TP
-.BR CPU_ZERO ()
-Clears
-.IR set ,
-so that it contains no CPUs.
-.TP
-.BR CPU_SET ()
-Add CPU
-.I cpu
-to
-.IR set .
-.TP
-.BR CPU_CLR ()
-Remove CPU
-.I cpu
-from
-.IR set .
-.TP
-.BR CPU_ISSET ()
-Test to see if CPU
-.I cpu
-is a member of
-.IR set .
-.TP
-.BR CPU_COUNT ()
-Return the number of CPUs in
-.IR set .
-.P
-Where a
-.I cpu
-argument is specified, it should not produce side effects,
-since the above macros may evaluate the argument more than once.
-.P
-The first CPU on the system corresponds to a
-.I cpu
-value of 0, the next CPU corresponds to a
-.I cpu
-value of 1, and so on.
-No assumptions should be made about particular CPUs being
-available, or the set of CPUs being contiguous, since CPUs can
-be taken offline dynamically or be otherwise absent.
-The constant
-.B CPU_SETSIZE
-(currently 1024) specifies a value one greater than the maximum CPU
-number that can be stored in
-.IR cpu_set_t .
-.P
-The following macros perform logical operations on CPU sets:
-.TP
-.BR CPU_AND ()
-Store the intersection of the sets
-.I srcset1
-and
-.I srcset2
-in
-.I destset
-(which may be one of the source sets).
-.TP
-.BR CPU_OR ()
-Store the union of the sets
-.I srcset1
-and
-.I srcset2
-in
-.I destset
-(which may be one of the source sets).
-.TP
-.BR CPU_XOR ()
-Store the XOR of the sets
-.I srcset1
-and
-.I srcset2
-in
-.I destset
-(which may be one of the source sets).
-The XOR means the set of CPUs that are in either
-.I srcset1
-or
-.IR srcset2 ,
-but not both.
-.TP
-.BR CPU_EQUAL ()
-Test whether two CPU set contain exactly the same CPUs.
-.SS Dynamically sized CPU sets
-Because some applications may require the ability to dynamically
-size CPU sets (e.g., to allocate sets larger than that
-defined by the standard
-.I cpu_set_t
-data type), glibc nowadays provides a set of macros to support this.
-.P
-The following macros are used to allocate and deallocate CPU sets:
-.TP
-.BR CPU_ALLOC ()
-Allocate a CPU set large enough to hold CPUs
-in the range 0 to
-.IR num_cpus\-1 .
-.TP
-.BR CPU_ALLOC_SIZE ()
-Return the size in bytes of the CPU set that would be needed to
-hold CPUs in the range 0 to
-.IR num_cpus\-1 .
-This macro provides the value that can be used for the
-.I setsize
-argument in the
-.BR CPU_*_S ()
-macros described below.
-.TP
-.BR CPU_FREE ()
-Free a CPU set previously allocated by
-.BR CPU_ALLOC ().
-.P
-The macros whose names end with "_S" are the analogs of
-the similarly named macros without the suffix.
-These macros perform the same tasks as their analogs,
-but operate on the dynamically allocated CPU set(s) whose size is
-.I setsize
-bytes.
-.SH RETURN VALUE
-.BR CPU_ISSET ()
-and
-.BR CPU_ISSET_S ()
-return nonzero if
-.I cpu
-is in
-.IR set ;
-otherwise, it returns 0.
-.P
-.BR CPU_COUNT ()
-and
-.BR CPU_COUNT_S ()
-return the number of CPUs in
-.IR set .
-.P
-.BR CPU_EQUAL ()
-and
-.BR CPU_EQUAL_S ()
-return nonzero if the two CPU sets are equal; otherwise they return 0.
-.P
-.BR CPU_ALLOC ()
-returns a pointer on success, or NULL on failure.
-(Errors are as for
-.BR malloc (3).)
-.P
-.BR CPU_ALLOC_SIZE ()
-returns the number of bytes required to store a
-CPU set of the specified cardinality.
-.P
-The other functions do not return a value.
-.SH STANDARDS
-Linux.
-.SH HISTORY
-The
-.BR CPU_ZERO (),
-.BR CPU_SET (),
-.BR CPU_CLR (),
-and
-.BR CPU_ISSET ()
-macros were added in glibc 2.3.3.
-.P
-.BR CPU_COUNT ()
-first appeared in glibc 2.6.
-.P
-.BR CPU_AND (),
-.BR CPU_OR (),
-.BR CPU_XOR (),
-.BR CPU_EQUAL (),
-.BR CPU_ALLOC (),
-.BR CPU_ALLOC_SIZE (),
-.BR CPU_FREE (),
-.BR CPU_ZERO_S (),
-.BR CPU_SET_S (),
-.BR CPU_CLR_S (),
-.BR CPU_ISSET_S (),
-.BR CPU_AND_S (),
-.BR CPU_OR_S (),
-.BR CPU_XOR_S (),
-and
-.BR CPU_EQUAL_S ()
-first appeared in glibc 2.7.
-.SH NOTES
-To duplicate a CPU set, use
-.BR memcpy (3).
-.P
-Since CPU sets are bit masks allocated in units of long words,
-the actual number of CPUs in a dynamically
-allocated CPU set will be rounded up to the next multiple of
-.IR "sizeof(unsigned long)" .
-An application should consider the contents of these extra bits
-to be undefined.
-.P
-Notwithstanding the similarity in the names,
-note that the constant
-.B CPU_SETSIZE
-indicates the number of CPUs in the
-.I cpu_set_t
-data type (thus, it is effectively a count of the bits in the bit mask),
-while the
-.I setsize
-argument of the
-.BR CPU_*_S ()
-macros is a size in bytes.
-.P
-The data types for arguments and return values shown
-in the SYNOPSIS are hints what about is expected in each case.
-However, since these interfaces are implemented as macros,
-the compiler won't necessarily catch all type errors
-if you violate the suggestions.
-.SH BUGS
-On 32-bit platforms with glibc 2.8 and earlier,
-.BR CPU_ALLOC ()
-allocates twice as much space as is required, and
-.BR CPU_ALLOC_SIZE ()
-returns a value twice as large as it should.
-This bug should not affect the semantics of a program,
-but does result in wasted memory
-and less efficient operation of the macros that
-operate on dynamically allocated CPU sets.
-These bugs are fixed in glibc 2.9.
-.\" http://sourceware.org/bugzilla/show_bug.cgi?id=7029
-.SH EXAMPLES
-The following program demonstrates the use of some of the macros
-used for dynamically allocated CPU sets.
-.P
-.\" SRC BEGIN (CPU_SET.c)
-.EX
-#define _GNU_SOURCE
-#include <sched.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <unistd.h>
-\&
-#include <assert.h>
-\&
-int
-main(int argc, char *argv[])
-{
- cpu_set_t *cpusetp;
- size_t size, num_cpus;
-\&
- if (argc < 2) {
- fprintf(stderr, "Usage: %s <num\-cpus>\en", argv[0]);
- exit(EXIT_FAILURE);
- }
-\&
- num_cpus = atoi(argv[1]);
-\&
- cpusetp = CPU_ALLOC(num_cpus);
- if (cpusetp == NULL) {
- perror("CPU_ALLOC");
- exit(EXIT_FAILURE);
- }
-\&
- size = CPU_ALLOC_SIZE(num_cpus);
-\&
- CPU_ZERO_S(size, cpusetp);
- for (size_t cpu = 0; cpu < num_cpus; cpu += 2)
- CPU_SET_S(cpu, size, cpusetp);
-\&
- printf("CPU_COUNT() of set: %d\en", CPU_COUNT_S(size, cpusetp));
-\&
- CPU_FREE(cpusetp);
- exit(EXIT_SUCCESS);
-}
-.EE
-.\" SRC END
-.SH SEE ALSO
-.BR sched_setaffinity (2),
-.BR pthread_attr_setaffinity_np (3),
-.BR pthread_setaffinity_np (3),
-.BR cpuset (7)