| KCPUSET(9) | Kernel Developer's Manual | KCPUSET(9) |
kcpuset, kcpuset_create,
kcpuset_destroy,
kcpuset_clone, kcpuset_copy,
kcpuset_use, kcpuset_unuse,
kcpuset_copyin,
kcpuset_copyout, kcpuset_zero,
kcpuset_fill, kcpuset_set,
kcpuset_clear, kcpuset_isset,
kcpuset_isotherset,
kcpuset_iszero, kcpuset_match,
kcpuset_intersect,
kcpuset_merge, kcpuset_remove,
kcpuset_ffs,
kcpuset_ffs_intersecting,
kcpuset_countset,
kcpuset_atomic_set,
kcpuset_atomic_clear,
kcpuset_atomicly_intersect,
kcpuset_atomicly_merge,
kcpuset_atomicly_remove,
kcpuset_export_32 —
#include <sys/kcpuset.h>
void
kcpuset_create(kcpuset_t
**retkcp, bool
zero);
void
kcpuset_destroy(kcpuset_t
*kcp);
void
kcpuset_clone(kcpuset_t
**retkcp, const kcpuset_t
*skcp);
void
kcpuset_copy(kcpuset_t
*dkcp, const kcpuset_t
*skcp);
void
kcpuset_use(kcpuset_t
*kcp);
void
kcpuset_unuse(kcpuset_t
*kcp, kcpuset_t
**lst);
int
kcpuset_copyin(const
cpuset_t *ucp, kcpuset_t
*kcp, size_t
len);
int
kcpuset_copyout(kcpuset_t
*kcp, cpuset_t
*ucp, size_t
len);
void
kcpuset_zero(kcpuset_t
*kcp);
void
kcpuset_fill(kcpuset_t
*kcp);
void
kcpuset_set(kcpuset_t
*kcp, cpuid_t
cpu);
void
kcpuset_clear(kcpuset_t
*kcp, cpuid_t
cpu);
bool
kcpuset_isset(const
kcpuset_t * kcp, cpuid_t
cpu);
bool
kcpuset_isotherset(const
kcpuset_t * kcp, cpuid_t
cpu);
bool
kcpuset_iszero(const
kcpuset_t *kcp);
bool
kcpuset_intersecting_p(const
kcpuset_t *kcp1, const
kcpuset_t *kcp2);
bool
kcpuset_match(const
kcpuset_t *kcp1, const
kcpuset_t *kcp2);
void
kcpuset_intersect(kcpuset_t
*kcp1, const kcpuset_t
*kcp2);
void
kcpuset_merge(kcpuset_t
*kcp1, const kcpuset_t
*kcp2);
void
kcpuset_remove(kcpuset_t
*kcp1, const kcpuset_t
*kcp2);
cpuid_t
kcpuset_ffs(const
kcpuset_t *kcp);
cpuid_t
kcpuset_ffs_intersecting(const
kcpuset_t *kcp1, const
kcpuset_t *kcp2);
int
kcpuset_countset(const
kcpuset_t *kcp);
void
kcpuset_atomic_set(kcpuset_t
*kcp, cpuid_t
cpu);
void
kcpuset_atomic_clear(kcpuset_t
*kcp, cpuid_t
cpu);
void
kcpuset_atomicly_intersect(kcpuset_t
*kcp1, const kcpuset_t
*kcp2);
void
kcpuset_atomicly_merge(kcpuset_t
*kcp1, const kcpuset_t
*kcp2);
void
kcpuset_atomicly_remove(kcpuset_t
*kcp1, const kcpuset_t
*kcp2);
void
kcpuset_export_u32(const
kcpuset_t *kcp, uint32_t
*bitfield, size_t
len);
kcpuset subsystem provides
support for dynamic processor sets. Conceptually
kcpuset can be understood to be the kernel equivalent
of the user space cpuset(3)
interface.
kcpuset_create(retkcp,
zero)kcpuset_create() function creates a dynamic
CPU set and stores the result to retkcp. If the
boolean zero is not false, the allocated set is also
initialized to zero.kcpuset_destroy(kcp)kcpuset_copy(dkcp,
skcp)kcpuset_clone(retkcp,
skcp)kcpuset_use(kcp)kcpuset_create() sets the reference count to
1.kcpuset_unuse(kcp,
lst)NULL, then instead of destroying,
kcp will be added to the lst
list for a deferred destruction.kcpuset_copyin(ucp,
kcp, len)kcpuset_copyout(kcp,
ucp, len)kcpuset_zero(kcp)kcpuset_fill(kcp)kcpuset_set(kcp,
cpu)kcpuset_clear(kcp,
cpu)kcpuset_isset(kcp,
cpu)kcpuset_isotherset(kcp,
cpu)kcpuset_iszero(kcp)kcpuset_match(kcp1,
kcp2)kcpuset_intersect(kcp1,
kcp2)kcpuset_merge(kcp1,
kcp2)kcpuset_remove(kcp1,
kcp2)kcpuset_ffs(kcp)kcpuset_ffs_intersecting(kcp1,
kcp2)kcpuset_countset(kcp)kcpuset_atomic_set(kcp,
cpu)kcpuset_atomic_set() function operates as
kcpuset_set(), but the operation is atomic; see
atomic_ops(3) for more
details.kcpuset_atomic_clear(kcp,
cpu)kcpuset_atomicly_intersect(kcp1,
kcp2)kcpuset_atomicly_intersect() function operates
as kcpuset_intersect(), but the operation is
performed using atomic operations; see
atomic_ops(3) for more
details.kcpuset_atomicly_merge(kcp1,
kcp2)kcpuset_atomicly_merge() function operates as
kcpuset_merge(), but the operation is performed
using atomic operations; see
atomic_ops(3) for more
details.kcpuset_atomicly_remove(kcp1,
kcp2)kcpuset_atomicly_remove() function operates as
kcpuset_remove(), but the operation is performed
using atomic operations; see
atomic_ops(3) for more
details.kcpuset_export_u32(kcp,
bitfield, len)kcpuset subsystem is implemented within
sys/kern/subr_kcpuset.c.
kcpuset subsystem first appeared in
NetBSD 6.0.
| July 17, 2013 | NetBSD 9.4 |