Главная » 2017 » Ноябрь » 17 » man 2 arch_prctl
01:17
man 2 arch_prctl

SEO sprint - Всё для максимальной раскрутки!





ИМЯ


arch_prctl - настроить состояние нити (зависит от архитектуры)



ОБЗОР


#include <asm/prctl.h>
#include <sys/prctl.h>

int arch_prctl(int code, unsigned long addr);
int arch_prctl(int code, unsigned long *addr);



ОПИСАНИЕ


Функция arch_prctl() задаёт состояние процесса или нити, зависящие от архитектуры.
В аргументе code выбирается подфункция и ей передаётся значение addr; параметр
addr рассматривается либо как unsigned long при операциях «установки», либо как
unsigned long * при операциях «получения» значения.

Подфункции для x86-64:

ARCH_SET_FS
Установить 64-битную базу для регистра FS равной addr.

ARCH_GET_FS
Вернуть значение 64-битной базы для регистра FS текущей нити в ячейку
длинной unsigned long, заданную адресом addr.

ARCH_SET_GS
Установить 64-битную базу для регистра GS равной addr.

ARCH_GET_GS
Вернуть значение 64-битной базы для регистра GS текущей нити в ячейку
длинной unsigned long, заданную адресом addr.



ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ


При успешном выполнении arch_prctl() возвращает 0; при ошибке — -1, а в errno
задаётся причина ошибки.



ОШИБКИ


EFAULT В addr задан не выделенный адрес или вне адресного пространства процесса.

EINVAL code не является допустимой подкомандой.

EPERM addr лежит вне адресного пространства процесса.



СООТВЕТСТВИЕ СТАНДАРТАМ


arch_prctl() является расширением Linux/x86-64 и не должна использоваться в
переносимых программах.



ЗАМЕЧАНИЯ


В настоящее время arch_prctl() поддерживается только на Linux/x86-64 для 64-битных
программ.

64-битная база изменяется при загрузке нового 32-битного сегментного селектора.

ARCH_SET_GS выключена в некоторых ядрах.

Переключение контекстов для 64-битных сегментных баз — довольно затратная
операция. В качестве оптимизации, если используется 3-битные базовые адреса TLS,
самостоятельно. Это может быть исправлено в новых версиях glibc.

FS уже может использоваться библиотекой нитей. Программы, в которых используется
ARCH_SET_FS напрямую, весьма вероятно завершаться с ошибкой.



СМОТРИТЕ ТАКЖЕ


mmap(2), modify_ldt(2), prctl(2), set_thread_area(2)

Руководство программиста для AMD X86-64



Категория: (2) Системные вызовы ядра (функции языка Си) | Просмотров: 678 | Добавил: Администратор | Рейтинг: 0.0/0
Всего комментариев: 0
avatar