PTHREAD_ATTR_GET_NP(3) | Library Functions Manual | PTHREAD_ATTR_GET_NP(3)

# NAME

`pthread_attr_get_np`, `pthread_getattr_np` — get attributes of existing thread

# LIBRARY

POSIX Threads Library (libpthread, -lpthread)

# SYNOPSIS

`#include <pthread.h>`

int
`pthread_attr_get_np`(pthread_t thread, pthread_attr_t *attr);

int
`pthread_getattr_np`(pthread_t thread, pthread_attr_t *attr);

# DESCRIPTION

The `pthread_attr_get_np`() and `pthread_getattr_np`() functions can be used to retrieve attributes of a running thread. The result is stored to attr.

For `pthread_attr_get_np`() attr should be initialized prior to the call by using pthread_attr_init(3). `pthread_getattr_np`() does this automatically.

For both functions attr should be freed when it is not in use anymore with pthread_attr_destroy(3).

Most fields of attr are the same ones provided during thread creation time as a parameter to pthread_create(3). The exceptions include:

- The detach state -- a joinable thread may have detached itself after the creation.
- The guard size, which may vary if the application has allocated its own thread stack.
- The stack address and size; `pthread_attr_get_np`() will always return the thread's real stack address and size, regardless of the values in the original attributes structure.

The returned pthread_attr_t structure is supposed to be used in conjunction with the `pthread_attr_get*`() functions to retrieve individual values from the structure. When the returned attr is no longer needed, it should be destroyed by using pthread_attr_destroy(3).

# RETURN VALUES

Upon successful completion, `pthread_attr_get_np`() and `pthread_getattr_np`() return 0. Otherwise an error number is returned to indicate the error.

# COMPATIBILITY

The `pthread_attr_get_np`() and `pthread_getattr_np`() functions are non-standard extensions.

# ERRORS

The `pthread_attr_get_np`() and `pthread_getattr_np`() functions will fail if:

[`ENOMEM`]
  Insufficient memory.
[`ESRCH`]
  Non-existent thread.

# SEE ALSO

pthread(3), pthread_attr(3)

August 6, 2010 | NetBSD 11.0