_LWP_CTL(2) | System Calls Manual | _LWP_CTL(2)

# NAME

`_lwp_ctl` —
prepare per-LWP communication area between kernel and userland

# LIBRARY

Standard C Library (libc, -lc)

# SYNOPSIS

`#include <sys/lwpctl.h>`
`#include <lwp.h>`

int
`_lwp_ctl`(int features, struct lwpctl **address);

# DESCRIPTION

`_lwp_ctl`() prepares per-LWP communication area for the calling LWP, and maps it into the calling process' address space. It takes the following arguments.

features
  The bitwise-OR of the following flags.
  `LWPCTL_FEATURE_CURCPU`
    Request lc_curcpu.
  `LWPCTL_FEATURE_PCTR`
    Request lc_pctr.
address
  The address to store a pointer to lwpctl structure for the calling LWP.

The per-LWP communication area is described by an lwpctl structure. It has following members, depending on features.

int lc_curcpu
  The integral identifier of the CPU on which the LWP is running, or `LWPCTL_CPU_NONE` when the LWP is not running on any CPU. It's updated by the kernel and should be considered as read-only for userland. It's available only if requested with the `LWPCTL_FEATURE_CURCPU` flag.
int lc_pctr
  The integer which is incremented on every context switches to the LWP. It can be used to detect preemption of the LWP. (thus its name "preemption counter".) It's updated by the kernel and should be considered as read-only for userland. It's available only if requested with the `LWPCTL_FEATURE_PCTR` flag.

# RETURN VALUES

`_lwp_ctl`() returns 0 on success. Otherwise, -1 is returned and errno is set to indicate the error.

# SEE ALSO

errno(2)

April 13, 2012 | NetBSD 9.2