SET_THREAD_AREA(2)

ИМЯ
set_thread_area - назначение области локального хранилища нити TLS

ОБЗОР
#include <linux/unistd.h>
#include <asm/ldt.h>

int set_thread_area(struct user_desc *u_info);

ОПИСАНИЕ
set_thread_area() устанавливает элемент в массиве области локального хранилища текущей нити (TLS, Thread Local Storage). Индекс элемента массива TLS, устанавливаемого set_thread_area(), соответствует значению u_info->entry_number, переданного пользователем. Если это значение находится в допустимых пределах, то set_thread_area() копирует соответствующий описатель, на который указывает u_info, в массив TLS нити.

Когда set_thread_area() передаётся entry_number со значением -1, то используется свободный элемент TLS. Если set_thread_area() находит свободный элемент TLS, то значение u_info->entry_number устанавливается после возврата для показа того, какой же элемент был изменён.

ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ
При нормальном завершении работы set_thread_area() возвращает 0 и -1 в случае проблем, а также присваивает errno соответствующее значение.

ОШИБКИ

EINVAL
    u_info->entry_number вне допустимых границ.

EFAULT
    u_info является некорректным указателем.

ESRCH
    Невозможно найти свободный элемент TLS.

ВЕРСИИ
Вызов set_thread_area() впервые появился в Linux 2.5.29.

СООТВЕТСТВИЕ СТАНДАРТАМ
set_thread_area() есть только в Linux, и он не должен использоваться в переносимых программах.

ЗАМЕЧАНИЯ
В glibc нет обёртки для данного системного вызова; запускайте его с помощью syscall(2).

СМОТРИТЕ ТАКЖЕ
get_thread_area(2)