set_thread_area -
スレッド局所記憶 (TLS)
領域を設定する
#include <linux/unistd.h>
#include <asm/ldt.h>
int set_thread_area(struct user_desc *u_info);
注:
このシステムコールには
glibc
のラッパー関数は存在しない。「注意」の節を参照。
set_thread_area()
は、カレントスレッドのスレッド局所記憶
(thread-local storage; TLS)
配列の中のエントリーを設定する。
set_thread_area()
により設定される TLS
配列のエントリーは、ユーザーから引き数として渡される
u_info->entry_number
の値に対応している。値が範囲内にある場合、
set_thread_area() は
u_info
で指された TLS
ディスクリプターをスレッドの
TLS 配列にコピーする。
entry_number として -1
が渡された場合、
set_thread_area() は未使用 (free) の TLS
エントリーを使用する。
未使用の 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)
この man ページは Linux
man-pages
プロジェクトのリリース
3.79 の一部
である。プロジェクトの説明とバグ報告に関する情報は
http://www.kernel.org/doc/man-pages/
に書かれている。