arch_prctl

Autres langues

Langue: ja

Version: 2003-02-02 (openSuse - 09/10/07)

Section: 2 (Appels système)

̾Á°

arch_prctl - ¥¢¡¼¥­¥Æ¥¯¥Á¥ã¸ÇÍ­¤Î¥¹¥ì¥Ã¥É¾õÂÖ¤òÀßÄꤹ¤ë

½ñ¼°

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

int arch_prctl(int code, unsigned long addr)

ÀâÌÀ

arch_prctl() ´Ø¿ô¤Ï¥¢¡¼¥­¥Æ¥¯¥Á¥ã¸ÇÍ­¤Î¥×¥í¥»¥¹¾õÂÖ¤Þ¤¿¤Ï¥¹¥ì¥Ã¥É¾õÂÖ¤òÀßÄꤹ¤ë¡£ code ¤ÏÉûµ¡Ç½¤òÁªÂò¤·¡¢°ú¤­¿ô addr ¤òÉûµ¡Ç½¤ËÅϤ¹¡£

x86-64 ¤ÎÉûµ¡Ç½¤Ï°Ê²¼¤ÎÄ̤ê:

ARCH_SET_FS
FS ¥ì¥¸¥¹¥¿¤Î 64 ¥Ó¥Ã¥È¥Ù¡¼¥¹¤ò addr ¤ËÀßÄꤹ¤ë¡£
ARCH_GET_FS
¸½ºß¤Î¥¹¥ì¥Ã¥É¤Î FS ¥ì¥¸¥¹¥¿¤Î 64 ¥Ó¥Ã¥È¥Ù¡¼¥¹Ãͤò¡¢ addr ¥Ñ¥é¥á¡¼¥¿¤Ç»Ø¤µ¤ì¤ë unsigned long ¤Ç»ØÄꤹ¤ë¡£
ARCH_SET_GS
GS ¥ì¥¸¥¹¥¿¤Î 64 ¥Ó¥Ã¥È¥Ù¡¼¥¹¤ò addr ¤ËÀßÄꤹ¤ë¡£
ARCH_GET_GS
¸½ºß¤Î¥¹¥ì¥Ã¥É¤Î GS ¥ì¥¸¥¹¥¿¤Î 64 ¥Ó¥Ã¥È¥Ù¡¼¥¹Ãͤò¡¢ addr ¥Ñ¥é¥á¡¼¥¿¤Ç»Ø¤µ¤ì¤ë unsigned long ¤Ç»ØÄꤹ¤ë¡£

ÊÖ¤êÃÍ

À®¸ù¤¹¤ë¤È¡¢ arch_prctl() ¤Ï 0 ¤òÊÖ¤¹¡£¥¨¥é¡¼¤Î¾ì¹ç¡¢-1 ¤òÊÖ¤·¡¢ errno ¤ò¥¨¥é¡¼¤ò¼¨¤¹ÃͤËÀßÄꤹ¤ë¡£

¥¨¥é¡¼

EFAULT
addr ¤¬¥¢¥ó¥Þ¥Ã¥×¤µ¤ì¤¿¥¢¥É¥ì¥¹¤ò»Ø¤·¤Æ¤¤¤ë¤«¡¢¥×¥í¥»¥¹¤Î¥¢¥É¥ì¥¹¶õ´Ö¤Î³°¤Ë¤¢¤ë¡£
EINVAL
code ¤¬Í­¸ú¤Ê¥µ¥Ö¥³¥Þ¥ó¥É¤Ç¤Ê¤¤¡£
EPERM
addr ¤¬¥×¥í¥»¥¹¤Î¥¢¥É¥ì¥¹¶õ´Ö¤Î³°¤Ë¤¢¤ë¡£

½àµò

arch_prctl() ¤Ï Linux/x86-64 ³ÈÄ¥¤Ç¤¢¤ê¡¢°Ü¿¢À­¤ò°Õ¿Þ¤·¤¿¥×¥í¥°¥é¥à¤Ç¤Ï»È¤¦¤Ù¤­¤Ç¤Ê¤¤¡£

Ãí°Õ

arch_prctl() ¤Ï¸½ºß¤Î¤È¤³¤í Linux/x86-64 ¾å¤Î 64 ¥Ó¥Ã¥È¥×¥í¥°¥é¥à¤Ç¤Î¤ß¥µ¥Ý¡¼¥È¤µ¤ì¤Æ¤¤¤ë¡£

¿·¤·¤¤ 32 ¥Ó¥Ã¥È¥»¥°¥á¥ó¥È¥»¥ì¥¯¥¿¤¬¥í¡¼¥É¤µ¤ì¤¿¾ì¹ç¡¢ 64 ¥Ó¥Ã¥È¥Ù¡¼¥¹¤ÏÊѹ¹¤µ¤ì¤ë¡£

ARCH_SET_GS ¤¬Ìµ¸ú¤Ë¤µ¤ì¤Æ¤¤¤ë¥«¡¼¥Í¥ë¤â¤¢¤ë¡£

64 ¥Ó¥Ã¥È¥»¥°¥á¥ó¥È¥Ù¡¼¥¹¤Î¥³¥ó¥Æ¥­¥¹¥È¥¹¥¤¥Ã¥Á¤Ï¡¢¤ä¤ä¹â²Á¤Ç¤¢¤ë¡£ LDT ¤ò modify_ldt(2) ¤ÇÀßÄꤷ¤Æ¥»¥°¥á¥ó¥È¥»¥ì¥¯¥¿¤ò»È¤¦¤«¡¢ 2.5 ¥«¡¼¥Í¥ë¤Î set_thread_area(2) ¥·¥¹¥Æ¥à¥³¡¼¥ë¤ò»È¤¦¤³¤È¤Ë¤è¤ê¡¢ 32 ¥Ó¥Ã¥È¥Ù¡¼¥¹¤òÀßÄꤹ¤ë¤È¤¤¤¦¹â®¤ÊÂåÂؼêÃʤ⤢¤ë¡£ 4GB ¤è¤êÂ礭¤Ê¥Ù¡¼¥¹¤òÀßÄꤷ¤¿¤¤¾ì¹ç¤Ë¤Î¤ß¡¢ arch_prctl() ¤¬É¬ÍפǤ¢¤ë¡£ ¥¢¥É¥ì¥¹¶õ´Ö¤ÎºÇ½é¤Î 2GB ¤Ë¤¢¤ë¥á¥â¥ê¤Ï¡¢ mmap(2) ¤Ë MAP_32BIT ¥Õ¥é¥°¤ò»ØÄꤷ¤Æ³ä¤êÅö¤Æ¤ë¤³¤È¤¬¤Ç¤­¤ë¡£

¥Ð¡¼¥¸¥ç¥ó 2.3.5 »þÅÀ¤Ç¤Ï¡¢glibc ¤Ë¤Ï arch_prctl() ¤Î¥×¥í¥È¥¿¥¤¥×¤¬¤Ê¤¤¡£ º£¤Î¤È¤³¤í¥æ¡¼¥¶¤Ï¼«Ê¬¼«¿È¤ÇÀë¸À¤¹¤ëɬÍפ¬¤¢¤ë¡£ ¤³¤ì¤Ï¾­Íè¤Î glibc ¤Î¥Ð¡¼¥¸¥ç¥ó¤Ç½¤Àµ¤µ¤ì¤ë¤«¤â¤·¤ì¤Ê¤¤¡£

FS ¤Ï¥¹¥ì¥Ã¥É¥é¥¤¥Ö¥é¥ê¤Ç´û¤Ë»È¤ï¤ì¤Æ¤¤¤ë¤«¤â¤·¤ì¤Ê¤¤¡£

´ØÏ¢¹àÌÜ

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

AMD X86-64 Programmer's manual