-.TP
-.B ENOMEM
-.\"O Internal kernel structures could not be allocated.
-¥«¡¼¥Í¥ëÆâÉô¤Î¹½Â¤ÂΤò³ä¤êÅö¤Æ¤ë¤³¤È¤¬¤Ç¤¤Ê¤«¤Ã¤¿¡£
-.TP
-.B ENOMEM
-.\"O Addresses in the range
-.\"O .RI [ addr ,
-.\"O .IR addr + len \-1]
-.\"O are invalid for the address space of the process,
-.\"O or specify one or more pages that are not mapped.
-.\"O (Before kernel 2.4.19, the error
-.\"O .BR EFAULT
-.\"O was incorrectly produced for these cases.)
-.RI [ addr ,
-.IR addr + len \-1]
-¤È¤¤¤¦ÈϰϤΥ¢¥É¥ì¥¹¤¬¥×¥í¥»¥¹¤Î¥¢¥É¥ì¥¹¶õ´Ö¤È¤·¤ÆÉÔÀµ¤Ç¤¢¤ë¤«¡¢
-¤½¤ÎÈϰϤΥ¢¥É¥ì¥¹¤¬¥Þ¥Ã¥×¤µ¤ì¤Æ¤¤¤Ê¤¤ 1 ¤Ä°Ê¾å¤Î¥Ú¡¼¥¸¤ò»Ø¤·¤Æ¤¤¤ë
-(¥«¡¼¥Í¥ë 2.4.19 ¤è¤êÁ°¤Ç¤Ï¡¢¤³¤Î¾õ¶·¤Ç¥¨¥é¡¼
-.B EFAULT
-¤¬´Ö°ã¤Ã¤ÆÀ¸À®¤µ¤ì¤Æ¤¤¤¿)¡£
-.\"O .SH "CONFORMING TO"
-.SH ½àµò
-SVr4, POSIX.1-2001.
-.\"O .\" SVr4 defines an additional error
-.\"O .\" code EAGAIN. The SVr4 error conditions don't map neatly onto Linux's.
-.\"O POSIX says that the behavior of
-.\"O .BR mprotect ()
-.\"O is unspecified if it is applied to a region of memory that
-.\"O was not obtained via
-.\"O .BR mmap (2).
-.\" SVr4 ¤Ç¤Ï¾¤Ë¥¨¥é¡¼¥³¡¼¥É EAGAIN ¤¬ÄêµÁ¤µ¤ì¤Æ¤¤¤ë¡£
-.\" SVr4 ¤Î¥¨¥é¡¼¾ò·ï¤Ï Linux ¤Î¤â¤Î¤Ë¤¤Á¤ó¤ÈÂбþ¤·¤Ê¤¤¡£
-POSIX ¤Ç¤Ï¡¢
-.BR mmap (2)
-·Ðͳ¤Ç³ÍÆÀ¤·¤Æ¤¤¤Ê¤¤¥á¥â¥êÎΰè¤ËÂФ·¤Æ
-.BR mprotect ()
-¤ò¹Ô¤Ã¤¿¾ì¹ç¤Î
-.BR mprotect ()
-¤ÎÆ°ºî¤Ï̤ÄêµÁ¤Ç¤¢¤ë¤È¤µ¤ì¤Æ¤¤¤ë¡£
-.\"O .SH NOTES
-.SH Ãí°Õ
-.\"O On Linux it is always permissible to call
-.\"O .BR mprotect ()
-.\"O on any address in a process's address space (except for the
-.\"O kernel vsyscall area).
-.\"O In particular it can be used
-.\"O to change existing code mappings to be writable.
-Linux ¤Ç¤Ï¡¢(¥«¡¼¥Í¥ë vsyscall Îΰè°Ê³°¤Î)
-Ǥ°Õ¤Î¥×¥í¥»¥¹¥¢¥É¥ì¥¹¶õ´Ö¤ËÂФ·¤Æ
-.BR mprotect ()
-¤ò¸Æ¤Ó½Ð¤¹¤³¤È¤¬¡¢¾ï¤Ëµö¤µ¤ì¤Æ¤¤¤ë¡£
-¤³¤ì¤ÏÆä˴û¸¤Î¥³¡¼¥É¥Þ¥Ã¥Ô¥ó¥°¤ò½ñ¤¹þ¤ß²Äǽ¤Ë¤¹¤ë¤¿¤á¤Ë»È¤ï¤ì¤ë¡£
-
-.\"O Whether
-.\"O .B PROT_EXEC
-.\"O has any effect different from
-.\"O .B PROT_READ
-.\"O is architecture- and kernel version-dependent.
-.\"O On some hardware architectures (e.g., i386),
-.\"O .B PROT_WRITE
-.\"O implies
-.\"O .BR PROT_READ .
-.B PROT_EXEC
-¤¬
-.B PROT_READ
-¤È°Û¤Ê¤ë±Æ¶Á¤ò»ý¤Ä¤«Èݤ«¤Ï¡¢¥¢¡¼¥¥Æ¥¯¥Á¥ã¤È¥«¡¼¥Í¥ë¤Î¥Ð¡¼¥¸¥ç¥ó¤Ë°Í¸¤¹¤ë¡£
-(i386 ¤Ê¤É¤Î) ¤¤¤¯¤Ä¤«¤Î¥¢¡¼¥¥Æ¥¯¥Á¥ã¤Ç¤Ï¡¢
-.B PROT_WRITE
-¤ò¥»¥Ã¥È¤¹¤ë¤È¡¢°ÅÌۤΤ¦¤Á¤Ë
-.B PROT_READ
-¤¬¥»¥Ã¥È¤µ¤ì¤ë¡£
-
-.\"O POSIX.1-2001 says that an implementation may permit access
-.\"O other than that specified in
-.\"O .IR prot ,
-.\"O but at a minimum can only allow write access if
-.\"O .B PROT_WRITE
-.\"O has been set, and must not allow any access if
-.\"O .B PROT_NONE
-.\"O has been set.
-POSIX.1-2001 ¤Ç¤Ï¡¢
-.I prot
-¤Ç»ØÄꤵ¤ì¤Æ¤¤¤Ê¤¤¥¢¥¯¥»¥¹¤òµö²Ä¤¹¤ë¼ÂÁõ¤òǧ¤á¤Æ¤¤¤ë¡£
-¤¿¤À¤·¡¢ºÇÄã¸Â¡¢
-.B PROT_WRITE
-¤¬¥»¥Ã¥È¤µ¤ì¤Æ¤¤¤ë¾ì¹ç¤Ë¤Î¤ß½ñ¤¹þ¤ß¥¢¥¯¥»¥¹¤¬µö²Ä¤µ¤ì¡¢
-.B PROT_NONE
-¤¬¥»¥Ã¥È¤µ¤ì¤Æ¤¤¤ë¾ì¹ç¤Ë¤Ï¥¢¥¯¥»¥¹¤Ïµö²Ä¤µ¤ì¤Ê¤¤ÅÀ¤À¤±¤Ï
-Ëþ¤¿¤¹É¬Íפ¬¤¢¤ë¡£
-.\"O .SH EXAMPLE
-.SH Îã
+\fIaddr\fP が有効なポインターでないか、 システムのページサイズの倍数でない。
+.TP
+\fBENOMEM\fP
+カーネル内部の構造体を割り当てることができなかった。
+.TP
+\fBENOMEM\fP
+[\fIaddr\fP, \fIaddr\fP+\fIlen\fP\-1] という範囲のアドレスがプロセスのアドレス空間として不正であるか、
+その範囲のアドレスがマップされていない 1 つ以上のページを指している (カーネル 2.4.19 より前では、この状況でエラー \fBEFAULT\fP
+が間違って生成されていた)。
+.SH 準拠
+.\" SVr4 defines an additional error
+.\" code EAGAIN. The SVr4 error conditions don't map neatly onto Linux's.
+SVr4, POSIX.1\-2001. POSIX では、 \fBmmap\fP(2) 経由で獲得していないメモリー領域に対して
+\fBmprotect\fP() を行った場合の \fBmprotect\fP() の動作は未定義であるとされている。
+.SH 注意
+Linux では、(カーネル vsyscall 領域以外の) 任意のプロセスアドレス空間に対して \fBmprotect\fP()
+を呼び出すことが、常に許されている。 これは特に既存のコードマッピングを書き込み可能にするために使われる。
+
+\fBPROT_EXEC\fP が \fBPROT_READ\fP と異なる影響を持つか否かは、アーキテクチャーとカーネルのバージョンに依存する。 (i386
+などの) いくつかのアーキテクチャーでは、 \fBPROT_WRITE\fP をセットすると、暗黙のうちに \fBPROT_READ\fP がセットされる。
+
+POSIX.1\-2001 では、 \fIprot\fP で指定されていないアクセスを許可する実装を認めている。 ただし、最低限、 \fBPROT_WRITE\fP
+がセットされている場合にのみ書き込みアクセスが許可され、 \fBPROT_NONE\fP がセットされている場合にはアクセスは許可されない点だけは
+満たす必要がある。
+.SH 例