diff --git a/ja_JP.eucJP/man/man9/acl.9 b/ja_JP.eucJP/man/man9/acl.9 index 0844db0974..aa80b5e0bc 100644 --- a/ja_JP.eucJP/man/man9/acl.9 +++ b/ja_JP.eucJP/man/man9/acl.9 @@ -1,121 +1,212 @@ .\"- -.\" Copyright (c) 1999, 2000 Robert N. M. Watson +.\" Copyright (c) 1999-2001 Robert N. M. Watson .\" All rights reserved. .\" .\" Redistribution and use in source and binary forms, with or without .\" modification, are permitted provided that the following conditions .\" are met: .\" 1. Redistributions of source code must retain the above copyright .\" notice, this list of conditions and the following disclaimer. .\" 2. Redistributions in binary form must reproduce the above copyright .\" notice, this list of conditions and the following disclaimer in the .\" documentation and/or other materials provided with the distribution. .\" .\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND .\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE .\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE .\" ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE .\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL .\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS .\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) .\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT .\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" SUCH DAMAGE. .\" -.\" %FreeBSD: src/share/man/man9/acl.9,v 1.2.2.4 2001/12/17 11:30:18 ru Exp % +.\" %FreeBSD: src/share/man/man9/acl.9,v 1.11 2002/05/29 17:45:44 ru Exp $ .\" .\" $FreeBSD$ .Dd December 23, 1999 .Os .Dt ACL 9 .Sh ̾¾Î .Nm acl .Nd ²¾ÁÛ¥Õ¥¡¥¤¥ë¥·¥¹¥Æ¥à¥¢¥¯¥»¥¹À©¸æ¥ê¥¹¥È .Sh ½ñ¼° .In sys/param.h .In sys/vnode.h .In sys/acl.h .Pp -.Bd -literal -typedef int acl_type_t; -typedef int acl_tag_t; -typedef mode_t acl_perm_t; - -struct acl_entry { - acl_tag_t ae_tag; - uid_t ae_id; - acl_perm_t ae_perm; +¥«¡¼¥Í¥ë¥³¥ó¥Õ¥£¥®¥å¥ì¡¼¥·¥ç¥ó¥Õ¥¡¥¤¥ë¤ÎÃæ¤Ë¡¢ +.Cd "options UFS_ACL" +.Sh ²òÀâ +¥¢¥¯¥»¥¹À©¸æ¥ê¥¹¥È¡¢¤¹¤Ê¤ï¤Á ACL ¤Ï¡¢ +¥Õ¥¡¥¤¥ë¤ª¤è¤Ó¥Ç¥£¥ì¥¯¥È¥ê¤òɽ¸½¤¹¤ë vnode ¤ËÂФ¹¤ë¸¢¸Â¤ò¡¢ +¤­¤áºÙ¤«¤¯»ØÄê²Äǽ¤È¤·¤Þ¤¹¡£ +¤·¤«¤·¤Ê¤¬¤é¡¢ +°Û¤Ê¤ë ACL ¤Î¥»¥Þ¥ó¥Æ¥£¥¯¥¹¤ò»ý¤Ä¥Õ¥¡¥¤¥ë¥·¥¹¥Æ¥à¤¬²á¿¤Ë¤¢¤ë¤¿¤á¡¢ +vnode ¥¤¥ó¥¿¥Õ¥§¡¼¥¹¤Ï ACL ¤Îʸˡ¤Î¤ß¤òÍý²ò¤·¡¢´ðÁäò¤Ê¤¹¥Õ¥¡¥¤¥ë¥·¥¹¥Æ¥à¤¬ +ºÙÉô¤ò¼ÂÁõ¤¹¤ë¤³¤È¤òÅö¤Æ¤Ë¤·¤Æ¤¤¤Þ¤¹¡£ +´ðÁäò¤Ê¤¹¥Õ¥¡¥¤¥ë¥·¥¹¥Æ¥à¤Ë°Í¸¤·¤Æ¡¢¸Ä¡¹¤Î¥Õ¥¡¥¤¥ë¤Þ¤¿¤Ï¥Ç¥£¥ì¥¯¥È¥ê¤Ï¡¢ +´ØÏ¢ÉÕ¤±¤é¤ì¤ë 0 ¸Ä°Ê¾å¤Î ACL ¤ò»ý¤Ä¤³¤È¤¬²Äǽ¤Ç¤¹¡£ +¤½¤ì¤¾¤ì ACL ¤Î̾Á°¤Ï¡¢Å¬ÀÚ¤Ê vnode ACL ¸Æ¤Ó½Ð¤· +.Xr VOP_ACLCHECK 9 , +.Xr VOP_GETACL 9 +¤ª¤è¤Ó +.Xr VOP_SETACL 9 +¤Î +.Fa type +¥Õ¥£¡¼¥ë¥É¤ò»ÈÍѤ·¤Æ»ØÄꤵ¤ì¤Þ¤¹¡£ +.Pp +¸½ºß¤Ï¡¢¸Ä¡¹¤Î ACL ¤Ï°Ê²¼¤ËÄêµÁ¤µ¤ì¤ë¥«¡¼¥Í¥ëÆâ¤Ç¸ÇÄꥵ¥¤¥º¤Î +.Vt acl +¹½Â¤ÂΤˤè¤Ã¤ÆÉ½¸½¤µ¤ì¤Þ¤¹¡£ +.Bd -literal -offset indent +struct acl { + int acl_cnt; + struct acl_entry acl_entry[ACL_MAX_ENTRIES]; }; -typedef struct acl_entry *acl_entry_t; +.Ed +.Pp +ACL ¤Ï¡¢ACL ¥¨¥ó¥È¥ê¤Î¸ÇÄꥵ¥¤¥ºÇÛÎó¤Ç¹½À®¤µ¤ì¤Þ¤¹¡£ +³Æ ACL ¥¨¥ó¥È¥ê¤Ï¡¢ +¥Ñ¡¼¥ß¥Ã¥·¥ç¥ó¤ÎÁÈ¡¢¼çÍפÊ̾Á°¶õ´Ö¡¢¼çÍפʼ±Ê̻Ҥ«¤é¹½À®¤µ¤ì¤Þ¤¹¡£ +.Pp +¸ÄÊ̤ΠACL ¥¨¥ó¥È¥ê¤Ï¡¢°Ê²¼¤Î¥á¥ó¥Ð¤ò»ý¤Ä¹½Â¤ÂΤΠ+.Vt acl_entry_t +·¿¤Ç¤¹¡£ +.Bl -tag -width 2n +.It Vt acl_tag_t Va ae_tag +°Ê²¼¤Ï +.Va ae_tag +¤ËÀßÄꤵ¤ì¤ë¤Ù¤­ ACL ¤Î·¿¤ÎÄêµÁ¤Î¥ê¥¹¥È¤Ç¤¹¡£ +.Pp +.Bl -tag -width ".Dv ACL_UNDEFINED_FIELD" -offset indent -compact +.It Dv ACL_UNDEFINED_FIELD +̤ÄêµÁ¤Î ACL ·¿¡£ +.It Dv ACL_USER_OBJ +¼Â¸ú¥æ¡¼¥¶ ID ¤¬¥Õ¥¡¥¤¥ë¤Î½êÍ­¼Ô¤Î¥æ¡¼¥¶ ID ¤È +°ìÃפ¹¤ë¥×¥í¥»¥¹¤Î¤¿¤á¤ÎǤ°Õ¤Î¥¢¥¯¥»¥¹¸¢¡£ +.It Dv ACL_USER +¼Â¸ú¥æ¡¼¥¶ ID ¤¬ ACL ¥¨¥ó¥È¥ê¤Î¸¢¸Â¤È +°ìÃפ¹¤ë¥×¥í¥»¥¹¤Î¤¿¤á¤ÎǤ°Õ¤Î¥¢¥¯¥»¥¹¸¢¡£ +.It Dv ACL_GROUP_OBJ +¼Â¸ú¥°¥ë¡¼¥× ID ¤Þ¤¿¤ÏÁ´¤Æ¤ÎÄɲäΥ°¥ë¡¼¥×¤¬¥Õ¥¡¥¤¥ë¤Î½êÍ­¼Ô¤Î¥°¥ë¡¼¥× ID ¤È +°ìÃפ¹¤ë¥×¥í¥»¥¹¤Î¤¿¤á¤ÎǤ°Õ¤Î¥¢¥¯¥»¥¹¸¢¡£ +.It Dv ACL_GROUP +¼Â¸ú¥°¥ë¡¼¥× ID ¤Þ¤¿¤ÏÁ´¤Æ¤ÎÄɲäΥ°¥ë¡¼¥×¤¬ ACL ¥¨¥ó¥È¥ê¤Î¸¢¸Â¤È +°ìÃפ¹¤ë¥×¥í¥»¥¹¤Î¤¿¤á¤ÎǤ°Õ¤Î¥¢¥¯¥»¥¹¸¢¡£ +.It Dv ACL_MASK +¥Õ¥¡¥¤¥ë¥°¥ë¡¼¥×¥¯¥é¥¹¤ÎÃæ¤Î¥×¥í¥»¥¹¤¬µö²Ä¤µ¤ì¤ë¤³¤È¤¬¤Ç¤­¤ë +Ǥ°Õ¤Î¥¢¥¯¥»¥¹¸¢¤ÎºÇ¹â¸ÂÅÙ¡£ +.It Dv ACL_OTHER +¤½¤Î¾¤Î ACL ¥¨¥ó¥È¥ê¤Ë¤è¤Ã¤ÆÊݸ¤ì¤Æ¤¤¤Ê¤¤ +¥×¥í¥»¥¹¤Î¤¿¤á¤ÎǤ°Õ¤Î¥¢¥¯¥»¥¹¸¢¡£ +.It Dv ACL_OTHER_OBJ +.Dv ACL_OTHER +¤ÈƱ¤¸¤Ç¤¹¡£ +³Æ¡¹¤Î ACL ¥¨¥ó¥È¥ê¤Ï¡¢¸·Ì©¤Ë¡¢1 ¤Ä¤Î +.Dv ACL_USER_OBJ +¤È 1 ¤Ä¤Î +.Dv ACL_GROUP_OBJ +¤È 1 ¤Ä¤Î +.Dv ACL_OTHER +¤ò´Þ¤Þ¤Ê¤±¤ì¤Ð¤Ê¤ê¤Þ¤»¤ó¡£ +.Dv ACL_USER , +.Dv ACL_GROUP +¤Þ¤¿¤Ï +.Dv ACL_OTHER +¤¬Â¸ºß¤¹¤ë¾ì¹ç¤Ë¤Ï¡¢¸·Ì©¤Ë 1 ¤Ä¤Î +.Dv ACL_MASK +¥¨¥ó¥È¥ê¤¬Â¸ºß¤¹¤ë¤Ù¤­¤Ç¤¹¡£ +.El +.It Vt uid_t Va ae_id +¤³¤Î ACL ¤¬¥¢¥¯¥»¥¹¥Ñ¡¼¥ß¥·¥ç¥ó¤òµ­½Ò¤·¤Æ¤¤¤ë¥æ¡¼¥¶¤Î¥æ¡¼¥¶ ID¡£ +.It Vt acl_perm_t Va ae_perm +¤³¤Î¥Õ¥£¡¼¥ë¥É¤Ï¡¢¤³¤Î ACL ¤ËŬ¹ç¤¹¤ë¥×¥í¥»¥¹¤¬´ØÏ¢¤·¤¿¥Õ¥¡¥¤¥ë¤Î +¥¢¥¯¥»¥¹¤Î¤¿¤á¤Ë¡¢¤É¤Î¼ïÎà¤Î¥¢¥¯¥»¥¹¤«¤òÄêµÁ¤·¤Þ¤¹¡£ +.Bl -tag -width ".Dv ACL_POSIX1E_BITS" +.It Dv ACL_EXECUTE +¥×¥í¥»¥¹¤Ï´ØÏ¢¤·¤¿¥Õ¥¡¥¤¥ë¤Î¼Â¹Ô¤¬²Äǽ¤Ç¤¹¡£ +.It Dv ACL_WRITE +¥×¥í¥»¥¹¤Ï´ØÏ¢¤·¤¿¥Õ¥¡¥¤¥ë¤Ø¤Î½ñ¹þ¤ß¤¬²Äǽ¤Ç¤¹¡£ +.It Dv ACL_READ +¥×¥í¥»¥¹¤Ï´ØÏ¢¤·¤¿¥Õ¥¡¥¤¥ë¤«¤é¤ÎÆÉ¹þ¤ß¤¬²Äǽ¤Ç¤¹¡£ +.It Dv ACL_PERM_NONE +¥×¥í¥»¥¹¤Ï´ØÏ¢¤·¤¿¥Õ¥¡¥¤¥ë¤Ø¤ÎÆÉ¹þ¤ß¡¢½ñ¹þ¤ß¤Þ¤¿¤Ï¼Â¹Ô¤Î¥Ñ¡¼¥ß¥·¥ç¥ó¤ò +½êÍ­¤·¤Æ¤¤¤Þ¤»¤ó¡£ +.El +.El +.Pp +.Sh ¼ÂÁõ¤Ë´Ø¤¹¤ëÃí +.Bd -literal +typedef mode_t *acl_permset_t; +/* ÆâÉô¤Î ACL ¹½Â¤ÂÎ */ struct acl { int acl_cnt; struct acl_entry acl_entry[ACL_MAX_ENTRIES]; }; -typedef struct acl *acl_t; + +/* ³°Éô¤Î ACL ¹½Â¤ÂÎ */ +struct acl_t_struct { + struct acl ats_acl; + int ats_cur_entry; +}; +typedef struct acl_t_struct *acl_t; /* - * acl_entry_t ¤Î a_tag ¤ËÍ­¸ú¤ÊÃÍ + * ae_tag ¥Õ¥£¡¼¥ë¥É¤ËÍ­¸ú¤ÊÃÍ */ -#define ACL_USER_OBJ 0x00000001 -#define ACL_USER 0x00000002 -#define ACL_GROUP_OBJ 0x00000004 -#define ACL_GROUP 0x00000008 -#define ACL_MASK 0x00000010 -#define ACL_OTHER 0x00000020 -#define ACL_OTHER_OBJ ACL_OTHER +#define ACL_UNDEFINED_TAG 0x00000000 +#define ACL_USER_OBJ 0x00000001 +#define ACL_USER 0x00000002 +#define ACL_GROUP_OBJ 0x00000004 +#define ACL_GROUP 0x00000008 +#define ACL_MASK 0x00000010 +#define ACL_OTHER 0x00000020 +#define ACL_OTHER_OBJ ACL_OTHER /* - * a_type_t °ú¿ô¤ËÍ­¸ú¤ÊÃÍ + * acl_type_t °ú¿ô¤Î¤¿¤á¤ËÍ­¸ú¤ÊÃÍ */ #define ACL_TYPE_ACCESS 0x00000000 #define ACL_TYPE_DEFAULT 0x00000001 #define ACL_TYPE_AFS 0x00000002 #define ACL_TYPE_CODA 0x00000003 #define ACL_TYPE_NTFS 0x00000004 #define ACL_TYPE_NWFS 0x00000005 /* - * a_perm ¥Õ¥£¡¼¥ë¥É¤Ë²Äǽ¤Ê¥Õ¥é¥° + * ae_perm ¥Õ¥£¡¼¥ë¥É¤Ë²Äǽ¤Ê¥Õ¥é¥° */ -#define ACL_PERM_EXEC 0x0001 -#define ACL_PERM_WRITE 0x0002 -#define ACL_PERM_READ 0x0004 +#define ACL_EXECUTE 0x0001 +#define ACL_WRITE 0x0002 +#define ACL_READ 0x0004 #define ACL_PERM_NONE 0x0000 -#define ACL_PERM_BITS (ACL_PERM_EXEC | ACL_PERM_WRITE | ACL_PERM_READ) -#define ACL_POSIX1E_BITS (ACL_PERM_EXEC | ACL_PERM_WRITE | ACL_PERM_READ) +#define ACL_PERM_BITS (ACL_EXECUTE | ACL_WRITE | ACL_READ) +#define ACL_POSIX1E_BITS (ACL_EXECUTE | ACL_WRITE | ACL_READ) + +/* + * acl_get_entry() ¤Î¤¿¤á¤Î entry_id ¤Ë²Äǽ¤ÊÃÍ + */ +#define ACL_FIRST_ENTRY 0 +#define ACL_NEXT_ENTRY 1 + +/* + * ae_id ¥Õ¥£¡¼¥ë¥É¤ÎÃæ¤Î̤ÄêµÁ¤ÎÃÍ + */ +#define ACL_UNDEFINED_ID ((uid_t)-1) .Ed -.Sh ²òÀâ -¥¢¥¯¥»¥¹À©¸æ¥ê¥¹¥È¡¢¤¹¤Ê¤ï¤Á ACL ¤Ï¡¢ -¥Õ¥¡¥¤¥ë¤ª¤è¤Ó¥Ç¥£¥ì¥¯¥È¥ê¤òɽ¸½¤¹¤ë vnode ¤ËÂФ¹¤ë¸¢¸Â¤ò¡¢ -¤­¤áºÙ¤«¤¯»ØÄê²Äǽ¤È¤·¤Þ¤¹¡£ -¤·¤«¤·¤Ê¤¬¤é¡¢ -°Û¤Ê¤ë ACL ¤Î¥»¥Þ¥ó¥Æ¥£¥¯¥¹¤ò»ý¤Ä¥Õ¥¡¥¤¥ë¥·¥¹¥Æ¥à¤¬²á¿¤Ë¤¢¤ë¤¿¤á¡¢ -vnode ¥¤¥ó¥¿¥Õ¥§¡¼¥¹¤Ï ACL ¤Îʸˡ¤Î¤ß¤òÍý²ò¤·¡¢´ðÁäò¤Ê¤¹¥Õ¥¡¥¤¥ë¥·¥¹¥Æ¥à¤¬ -ºÙÉô¤ò¼ÂÁõ¤¹¤ë¤³¤È¤òÅö¤Æ¤Ë¤·¤Æ¤¤¤Þ¤¹¡£ -´ðÁäò¤Ê¤¹¥Õ¥¡¥¤¥ë¥·¥¹¥Æ¥à¤Ë°Í¸¤·¤Æ¡¢¸Ä¡¹¤Î¥Õ¥¡¥¤¥ë¤Þ¤¿¤Ï¥Ç¥£¥ì¥¯¥È¥ê¤Ï¡¢ -´ØÏ¢ÉÕ¤±¤é¤ì¤ë 0 ¸Ä°Ê¾å¤Î ACL ¤ò»ý¤Ä¤³¤È¤¬²Äǽ¤Ç¤¹¡£ -¤½¤ì¤¾¤ì ACL ¤Î̾Á°¤Ï¡¢Å¬ÀÚ¤Ê vnode ACL ¸Æ¤Ó½Ð¤· -.Xr VOP_ACLCHECK 9 , -.Xr VOP_GETACL 9 , -.Xr VOP_SETACL 9 -¤Î -.Fa type -¥Õ¥£¡¼¥ë¥É¤ò»ÈÍѤ·¤Æ»ØÄꤵ¤ì¤Þ¤¹¡£ -.Pp -¸½ºß¤Ï¡¢¸Ä¡¹¤Î ACL ¤Ï¥«¡¼¥Í¥ëÆâ¤Ç¸ÇÄꥵ¥¤¥º¤Î ACL ¹½Â¤ÂΤˤè¤Ã¤ÆÉ½¸½¤µ¤ì¤Þ¤¹¡£ -ACL ¤Ï¡¢ACL ¥¨¥ó¥È¥ê¤Î¸ÇÄꥵ¥¤¥ºÇÛÎó¤Ç¹½À®¤µ¤ì¤Þ¤¹¡£ -³Æ ACL ¥¨¥ó¥È¥ê¤Ï¡¢ -¥Ñ¡¼¥ß¥Ã¥·¥ç¥ó¤ÎÁÈ¡¢¼çÍפÊ̾Á°¶õ´Ö¡¢¼çÍפʼ±Ê̻Ҥ«¤é¹½À®¤µ¤ì¤Þ¤¹¡£ -·ë¤Ó¤Ä¤±¤é¤ì¤¿ acl_cnt ¥Õ¥£¡¼¥ë¥É¤ÎÃͤ˰͸¤·¤Æ¡¢ -¤³¤ì¤é¤Î 0 ¸Ä°Ê¾å¤Î¥¨¥ó¥È¥ê¤¬ "ÄêµÁ" ¤µ¤ì¤ë¤³¤È¤¬½ÐÍè¤Þ¤¹¡£ .Sh ´ØÏ¢¹àÌÜ +.Xr acl 3 , +.Xr vaccess_acl_posix1e 9 , .Xr VFS 9 , +.Xr vaccess 9 , .Xr VOP_ACLCHECK 9 , .Xr VOP_GETACL 9 , .Xr VOP_SETACL 9 .Sh ºî¼Ô ¤³¤Î¥Þ¥Ë¥å¥¢¥ë¥Ú¡¼¥¸¤Ï .An Robert Watson ¤¬½ñ¤­¤Þ¤·¤¿¡£ diff --git a/ja_JP.eucJP/man/man9/extattr.9 b/ja_JP.eucJP/man/man9/extattr.9 index 8fd8e7d6ed..46da5db07f 100644 --- a/ja_JP.eucJP/man/man9/extattr.9 +++ b/ja_JP.eucJP/man/man9/extattr.9 @@ -1,74 +1,101 @@ .\"- -.\" Copyright (c) 1999 Robert N. M. Watson +.\" Copyright (c) 1999, 2000, 2001 Robert N. M. Watson .\" All rights reserved. .\" .\" Redistribution and use in source and binary forms, with or without .\" modification, are permitted provided that the following conditions .\" are met: .\" 1. Redistributions of source code must retain the above copyright .\" notice, this list of conditions and the following disclaimer. .\" 2. Redistributions in binary form must reproduce the above copyright .\" notice, this list of conditions and the following disclaimer in the .\" documentation and/or other materials provided with the distribution. .\" .\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND .\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE .\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE .\" ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE .\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL .\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS .\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) .\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT .\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" SUCH DAMAGE. .\" -.\" %FreeBSD: src/share/man/man9/extattr.9,v 1.1.2.4 2001/12/17 11:30:18 ru Exp % +.\" %FreeBSD: src/share/man/man9/extattr.9,v 1.10 2002/05/16 05:21:58 trhodes Exp % .\" .\" $FreeBSD$ .Dd December 23, 1999 .Os .Dt EXTATTR 9 .Sh ̾¾Î .Nm extattr .Nd ²¾ÁÛ¥Õ¥¡¥¤¥ë¥·¥¹¥Æ¥à¤Î̾Á°ÉÕ¤­³Èĥ°À­ .Sh ½ñ¼° .In sys/param.h .In sys/vnode.h .In sys/extattr.h .Sh ²òÀâ ̾Á°ÉÕ¤­³Èĥ°À­¤Ï¡¢¥Õ¥¡¥¤¥ë¤Þ¤¿¤Ï¥Ç¥£¥ì¥¯¥È¥ê¤òɽ¸½¤¹¤ë vnode ¤Ë ÄɲäΥ᥿¥Ç¡¼¥¿¤ò´ØÏ¢ÉÕ¤±¤ë¤³¤È¤ò²Äǽ¤Ë¤·¤Þ¤¹¡£ ¤³¤ÎÄɲäΥǡ¼¥¿¤Î¥»¥Þ¥ó¥Æ¥£¥¯¥¹¤Ï¡¢"name=value" ("̾Á°=ÃÍ") ¤Î¥Ú¥¢¤Ç¡¢ ̾Á°¤ÏÄêµÁ¤µ¤ì¤Æ¤âÄêµÁ¤µ¤ì¤Ê¤¯¤Æ¤âÎɤ¯¡¢ÄêµÁ¤µ¤ì¤Æ¤¤¤ì¤Ð¡¢0 ¥Ð¥¤¥È°Ê¾å¤Î Ǥ°Õ¤Î¥Ð¥¤¥Ê¥ê¥Ç¡¼¥¿¤Ë´ØÏ¢ÉÕ¤±¤é¤ì¤Þ¤¹¡£ -¤³¤Î¥Ç¡¼¥¿¤ÎÆÉ¤ß¹þ¤ß¤Ï¡¢ +³Èĥ°À­¤Î̾Á°¤Ï̾Á°¶õ´Ö¤Î½¸¹ç¤ÎÃæ¤Ë¸ºß¤·¤Þ¤¹¡£ +³Èĥ°À­¾å¤Î¸Ä¡¹¤ÎÁàºî¤Ï¡¢Áàºî¤ò»²¾È¤¹¤ë¤¿¤á¤Ë̾Á°¶õ´Ö¤ò¶¡µë¤¹¤ë¤³¤È¤¬ +Í׵ᤵ¤ì¤Æ¤¤¤Þ¤¹¡£ +Ê£¿ô¤Î̾Á°¶õ´Ö¤ÎÃæ¤ËƱ¤¸Ì¾Á°¤¬Â¸ºß¤¹¤ë¾ì¹ç¤Ë¤Ï¡¢¤½¤Î̾Á°¤Ë´ØÏ¢ÉÕ¤±¤é¤ì¤¿ +³Èĥ°À­¤Ï¡¢ÆÈΩ¤·¤Æ³ÊǼ¤µ¤ì¡¢Áàºî¤µ¤ì¤Þ¤¹¡£ +¼¡¤Î 2 ¤Ä¤Î̾Á°¶õ´Ö¤¬ÉáÊ×Ū¤ËÄêµÁ¤µ¤ì¤Æ¤¤¤Þ¤¹¤¬¡¢¸Ä¡¹¤Î¥Õ¥¡¥¤¥ë¥·¥¹¥Æ¥à¤Ï +ÄɲäÎ̾Á°¶õ´Ö¤ò¼ÂÁõ¤¹¤ë¤³¤È¤¬²Äǽ¤Ç¡¢¤Þ¤¿¤³¤ì¤é +.Dv EXTATTR_NAMESPACE_USER , +.Dv EXTATTR_NAMESPACE_SYSTEM +¤Î̾Á°¶õ´Ö¤ò¼ÂÁõ¤·¤Ê¤¤¤³¤È¤â²Äǽ¤Ç¤¹¡£ +¤³¤ì¤é¤Î°À­¤Î¥»¥Þ¥ó¥Æ¥£¥¯¥¹¤Ï°Ê²¼¤ò°Õ¿Þ¤·¤Æ¤¤¤Þ¤¹¡£ +¥æ¡¼¥¶Â°À­¥Ç¡¼¥¿¤Ï¡¢¥Õ¥¡¥¤¥ë¤Þ¤¿¤Ï¥Ç¥£¥ì¥¯¥È¥ê¤ÎÃæ¤Î¥Ç¡¼¥¿¤Ë´ØÏ¢ÉÕ¤±¤é¤ì¤¿ +Ä̾ï¤ÎǤ°Õ¤ª¤è¤Óɬ¿Ü¤ÎÊݸî¤Ë¤è¤Ã¤Æ¡¢Êݸ¤ì¤Þ¤¹¡£ +¥·¥¹¥Æ¥à°À­¥Ç¡¼¥¿¤Ï¡¢¤³¤ì¤é¤Î°À­¤Ø¤ÎľÀÜŪ¤Ê¥¢¥¯¥»¥¹¤Þ¤¿¤ÏÁàºî¤Ë¤Ï +ŬÀÚ¤ÊÆÃ¸¢¤¬Í׵ᤵ¤ì¤ë¤³¤È¤Ë¤è¤Ã¤Æ¡¢Êݸ¤ì¤Þ¤¹¡£ +.Pp +³Èĥ°À­¥Ç¡¼¥¿¤ÎÆÉ¤ß¹þ¤ß¤Ï¡¢ .Xr VOP_READ 9 ¤Î·Á¼°¤Ç¡¢ÌÀ¼¨¤µ¤ì¤¿¥á¥¿¥Ç¡¼¥¿¤ÎϢ³¤·¤¿Îΰè¤òÊÖ¤·¤Þ¤¹¡£ °ìÊý¡¢½ñ¹þ¤ß¤Ï¡¢ Í¿¤¨¤é¤ì¤¿Ì¾Á°¤Ë´ØÏ¢ÉÕ¤±¤é¤ì¤¿¸½ºß¤Î "ÃÍ" Á´ÂΤ¬ÃÖ¤­´¹¤¨¤é¤ì¤Þ¤¹¡£ ³Èĥ°À­¤Î°ã¤¤¤ò»ý¤Ä¥Õ¥¡¥¤¥ë¥·¥¹¥Æ¥à¤¬²á¿¤Ë¤¢¤ê¤Þ¤¹¡£ ¤³¤Î¤¿¤á¡¢¤³¤ì¤é¤Î´Ø¿ô¤Ï¡¢ÍøÍѲÄǽÀ­¤ª¤è¤Óµ¡Ç½À­¤ÏÀ©¸Â¤µ¤ì¤ë¤«¤â¤·¤ì¤Þ¤»¤ó¤·¡¢ ¥µ¥Ý¡¼¥È¤¹¤ë¥Õ¥¡¥¤¥ë¥·¥¹¥Æ¥à¤Î´ðËÜŪ¤Ê¥»¥Þ¥ó¥Æ¥£¥¯¥¹¤ò°Õ¼±¤·¤Æ »ÈÍѤ¹¤ë¤Ù¤­¤Ç¤¹¡£ ³Èĥ°À­¥Ç¡¼¥¿¤Î¤¿¤á¤Î¸¢¸Â¤òÍ¿¤¨¤ëµ¡¹½¤Ï¡¢ ¥Õ¥¡¥¤¥ë¥·¥¹¥Æ¥à¤Ë¤è¤Ã¤Æ°Û¤Ê¤ê¤Þ¤¹¡£ ¤³¤ì¤Ï¡¢Â°À­¤ÎºÇÂç¤ÎÂ礭¤µ¤ä¡¢ Ǥ°Õ¤Þ¤¿¤ÏÆÃÄê¤Î¿·µ¬Â°À­¤òÄêµÁ²Äǽ¤«Èݤ«¤âƱÍͤǤ¹¡£ .Pp ³Èĥ°À­¤Ï¡¢¥Ì¥ë¤Ç½ªÃ¼¤µ¤ì¤¿Ê¸»úÎó¤ò»ÈÍѤ·¤ÆÌ¾Á°ÉÕ¤±¤µ¤ì¤Þ¤¹¡£ ̾Á°¤ÏÂçʸ»ú¤È¾®Ê¸»ú¤ò¶èÊ̤¹¤ë¤«¤â¤·¤ì¤Þ¤»¤ó¤·¡¢¤·¤Ê¤¤¤«¤â¤·¤ì¤Þ¤»¤ó¤¬¡¢ -¤³¤ì¤Ï¥Õ¥¡¥¤¥ë¥·¥¹¥Æ¥à¤Î¥»¥Þ¥ó¥Æ¥£¥¯¥¹¤Ë°Í¸¤·¤Þ¤¹¡£ +¤³¤ì¤ÏÀøºßŪ¤Ê¥Õ¥¡¥¤¥ë¥·¥¹¥Æ¥à¤Î¥»¥Þ¥ó¥Æ¥£¥¯¥¹¤Ë°Í¸¤·¤Þ¤¹¡£ ŬÀÚ¤Ê vnode ³Èĥ°À­¤Î¸Æ¤Ó½Ð¤·¤Ï¡¢ .Xr VOP_GETEXTATTR 9 ¤ª¤è¤Ó .Xr VOP_SETEXTATTR 9 ¤Ç¤¹¡£ .Sh ´ØÏ¢¹àÌÜ .Xr VFS 9 , +.Xr VFS_EXTATTRCTL 9 , .Xr VOP_GETEXTATTR 9 , .Xr VOP_SETEXTATTR 9 .Sh ºî¼Ô ¤³¤Î¥Þ¥Ë¥å¥¢¥ë¥Ú¡¼¥¸¤Ï .An Robert Watson ¤¬½ñ¤­¤Þ¤·¤¿¡£ +.Sh ¥Ð¥° +¸½ºß¤Ï³Èĥ°À­¥¢¥¯¥»¥¹¥¤¥ó¥¿¥Õ¥§¡¼¥¹¤Ï¡¢Â°À­¤Î¥È¡¼¥¿¥ë¤ÎÂ礭¤µ¤òÊÖ¤»¤Ê¤¤¤«¡¢ +¸Æ¤Ó½Ð¤·Â¦¤Ë¤è¤Ã¤ÆÄ󶡤µ¤ì¤¿¥Ð¥Ã¥Õ¥¡¶õ´Ö¤¬Á´¤Æ¤ÎÍøÍѲÄǽ¤Ê¥Ç¡¼¥¿¤òÊÝ»ý¤¹¤ë +¤¿¤á¤Ë¤ÏÉÔ­¤Ç¤¢¤ë¤³¤È¤ò¼¨¤·¤Þ¤¹¡£ +²Ã¤¨¤Æ¡¢¤³¤Î¥¤¥ó¥¿¥Õ¥§¡¼¥¹¤Ï¸½ºß¤ÎÍøÍѲÄǽ¤Ê°À­¤ÎÁȤò¼è¤ê½Ð¤¹»ÅÁȤߤò +Ä󶡤·¤Æ¤¤¤Þ¤»¤ó¡£´û¤Ë¡¢ +.Dv NULL +¤Î°À­Ì¾¤òÍ¿¤¨¤ë¤³¤È¤Ç¡¢ÅϤµ¤ì¤¿¥Õ¥¡¥¤¥ë¤Þ¤¿¤Ï¥Ç¥£¥ì¥¯¥È¥ê¤Î¤¿¤á¤Î +ÄêµÁ¤µ¤ì¤¿Â°À­¤Î¥ê¥¹¥È¤ò¤â¤¿¤é¤¹¤Ù¤­¤Ç¤¢¤ë¤ÈÄ󰯤µ¤ì¤Æ¤¤¤Þ¤¹¤¬¡¢ +¸½ºß¤Ï¼ÂÁõ¤µ¤ì¤Æ¤¤¤Þ¤»¤ó¡£ diff --git a/ja_JP.eucJP/man/man9/make_dev.9 b/ja_JP.eucJP/man/man9/make_dev.9 index d5d81f1f43..9b3e0f39dc 100644 --- a/ja_JP.eucJP/man/man9/make_dev.9 +++ b/ja_JP.eucJP/man/man9/make_dev.9 @@ -1,95 +1,137 @@ .\" Copyright (c) 1999 Chris Costello .\" All rights reserved. .\" .\" Redistribution and use in source and binary forms, with or without .\" modification, are permitted provided that the following conditions .\" are met: .\" 1. Redistributions of source code must retain the above copyright .\" notice, this list of conditions and the following disclaimer. .\" 2. Redistributions in binary form must reproduce the above copyright .\" notice, this list of conditions and the following disclaimer in the .\" documentation and/or other materials provided with the distribution. .\" .\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND .\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE .\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE .\" ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE .\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL .\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS .\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) .\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT .\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" SUCH DAMAGE. .\" -.\" %FreeBSD: src/share/man/man9/make_dev.9,v 1.2.2.3 2001/12/17 11:30:18 ru Exp % +.\" %FreeBSD: src/share/man/man9/make_dev.9,v 1.12 2002/02/11 01:21:29 dd Exp % .\" .\" $FreeBSD$ -.Dd September 25, 1999 +.Dd May 27, 2001 .Os .Dt MAKE_DEV 9 .Sh ̾¾Î .Nm make_dev , -.Nm destroy_dev -.Nd ¿·¤·¤¤¥Ç¥Ð¥¤¥¹¤Î¤¿¤á¤Î dev_t ¤ÎºîÀ®¤Èºï½ü +.Nm make_dev_alias , +.Nm destroy_dev , +.Nm dev_depends +.Nd ¥Ç¥Ð¥¤¥¹¤Î¤¿¤á¤Î +.Vt dev_t +¤ª¤è¤Ó DEVFS ÅÐÏ¿¤Î´ÉÍý .Sh ½ñ¼° -.In sys/types.h +.In sys/param.h .In sys/conf.h .Ft dev_t -.Fn make_dev "struct cdevsw *cdevsw" "int minor" "uid_t uid" "gid_t gid" "int perms" "char *fmt" ... +.Fn make_dev "struct cdevsw *cdevsw" "int minor" "uid_t uid" "gid_t gid" "int perms" "const char *fmt" ... +.Ft dev_t +.Fn make_dev_alias "dev_t pdev" "const char *fmt" ... .Ft void .Fn destroy_dev "dev_t dev" +.Ft void +.Fn dev_depends "dev_t pdev" "dev_t cdev" .Sh ²òÀâ .Fn make_dev ´Ø¿ô¤Ï¿·¤·¤¤¥Ç¥Ð¥¤¥¹¤Î¤¿¤á¤Î .Fa dev_t ¹½Â¤ÂΤòºîÀ®¤·¤Þ¤¹¡£ +DEVFS ¤¬ÍøÍѲÄǽ¤Î¾ì¹ç¤Ë¤Ï¡¢¿·¤·¤¤¥Ç¥Ð¥¤¥¹¤Î¸ºß¤âÄÌÃΤµ¤ì¤Þ¤¹¡£ ¤½¤Î¥Ç¥Ð¥¤¥¹¤Ï .Va uid ¤Ë¤è¤Ã¤Æ½êÍ­¤µ¤ì¡¢ .Va gid ¤Î¥°¥ë¡¼¥×¤Ë½êÍ­¤µ¤ì¡¢ .Va name ¤Ç»ØÄꤵ¤ì¤ë̾Á°¤ò»ý¤Á¤Þ¤¹¡£ .Va perms ¤Ë»ØÄꤹ¤ë¥Õ¥¡¥¤¥ë¤Î¥Ñ¡¼¥ß¥Ã¥·¥ç¥ó¤Ï .Aq Pa sys/stat.h ¤ÇÄêµÁ¤µ¤ì¤Æ¤¤¤Þ¤¹¡£ .Pp .Bd -literal -offset indent -compact #define S_IRWXU 0000700 /* ½êÍ­¼Ô¤Î RWX ¥Þ¥¹¥¯ #define S_IRUSR 0000400 /* ½êÍ­¼Ô¤Î R */ #define S_IWUSR 0000200 /* ½êÍ­¼Ô¤Î W */ #define S_IXUSR 0000100 /* ½êÍ­¼Ô¤Î X */ #define S_IRWXG 0000070 /* ¥°¥ë¡¼¥×¤Î RWX ¥Þ¥¹¥¯ */ #define S_IRGRP 0000040 /* ¥°¥ë¡¼¥×¤Î R */ #define S_IWGRP 0000020 /* ¥°¥ë¡¼¥×¤Î W */ #define S_IXGRP 0000010 /* ¥°¥ë¡¼¥×¤Î X */ #define S_IRWXO 0000007 /* ¤½¤Î¾¤Î RWX ¥Þ¥¹¥¯ */ #define S_IROTH 0000004 /* ¤½¤Î¾¤Î R */ #define S_IWOTH 0000002 /* ¤½¤Î¾¤Î W */ #define S_IXOTH 0000001 /* ¤½¤Î¾¤Î X */ #define S_ISUID 0004000 /* ¼Â¹Ô»þ¤Ë¥æ¡¼¥¶ ID ¤òÀßÄê */ #define S_ISGID 0002000 /* ¼Â¹Ô»þ¤Ë¥°¥ë¡¼¥× ID ¤òÀßÄê */ #define S_ISVTX 0001000 /* ¥¹¥Æ¥£¥Ã¥­¡¼¥Ó¥Ã¥È */ #ifndef _POSIX_SOURCE #define S_ISTXT 0001000 #endif .Ed .Pp +.Fn make_dev_alias +´Ø¿ô¤Ï +.Fn make_dev +¤«¤éÊÖ¤µ¤ì¤¿ +.Ft dev_t +¤ò¤È¤ê¡¢¤³¤Î¥Ç¥Ð¥¤¥¹¤Î¤¿¤á¤ÎÊ̤Î̾Á° (ÊÌ̾) ¤òºîÀ®¤·¤Þ¤¹¡£ +.Fn make_dev +¤Î¸Æ½Ð¤·¤ÎÁ°¤Î +.Fn make_dev_alias +¤Î¸Æ½Ð¤·¤Ï¡¢¸í¤ê¤Ç¤¹¡£ +.Pp .Fn destroy_dev -´Ø¿ô¤Ï¡¢ +´Ø¿ô¤Ï .Fn make_dev ¤«¤éÊÖ¤µ¤ì¤¿ .Fa dev_t ¤ò¤È¤ê¡¢¤½¤Î¥Ç¥Ð¥¤¥¹¤ÎÅÐÏ¿¤òºï½ü¤·¤Þ¤¹¡£ +.Fn make_dev_alias +¤ÇºîÀ®¤µ¤ì¤¿¥Ç¥Ð¥¤¥¹¤Ç +.Fn destroy_dev +¤ò¸Æ½Ð¤µ¤Ê¤¤¤Ç¤¯¤À¤µ¤¤¡£ +.Pp +.Fn dev_depends +´Ø¿ô¤Ï 2 ¤Ä¤Î¥Ç¥Ð¥¤¥¹´Ö¤Î¿Æ»Ò´Ø·¸¤ò³ÎΩ¤·¤Þ¤¹¡£ +¤³¤Î¥Í¥Ã¥È¸ú²Ì¤Ï¡¢¿Æ¥Ç¥Ð¥¤¥¹¤Î +.Fn destroy_dev +¤Ï¡¢¤â¤·¤¢¤ì¤Ð¡¢·ë²Ì¤È¤·¤Æ¤½¤Î»Ò¥Ç¥Ð¥¤¥¹¤ÎÇ˲õ¤Ë½ª¤ï¤ê¤Þ¤¹¡£ +1 ¤Ä¤Î¥Ç¥Ð¥¤¥¹¤ÏƱ»þ¤Ë¿Æ¤Ë¤â»Ò¤Ë¤â¤Ê¤ì¡¢ +¤½¤Î¤¿¤á¡¢´°Á´¤Ê³¬Áع½Â¤¤ò¹½ÃÛ¤¹¤ë¤³¤È¤¬²Äǽ¤Ç¤¹¡£ .Sh Îò»Ë .Fn make_dev ¤ª¤è¤Ó .Fn destroy_dev ´Ø¿ô¤Ï .Fx 4.0 -¤Ç½é¤á¤ÆÅо줷¤Þ¤·¤¿¡£ +¤Ç¤Ï¤¸¤á¤ÆÅо줷¤Þ¤·¤¿¡£ +´Ø¿ô +.Fn make_dev_alias +¤Ï +.Fx 4.1 +¤Ç¤Ï¤¸¤á¤ÆÅо줷¤Þ¤·¤¿¡£ +´Ø¿ô +.Fn dev_depends +¤Ï +.Fx 5.0 . +¤Ç¤Ï¤¸¤á¤ÆÅо줷¤Þ¤·¤¿¡£ diff --git a/ja_JP.eucJP/man/man9/mi_switch.9 b/ja_JP.eucJP/man/man9/mi_switch.9 index d3acc903ad..02b2a5da42 100644 --- a/ja_JP.eucJP/man/man9/mi_switch.9 +++ b/ja_JP.eucJP/man/man9/mi_switch.9 @@ -1,146 +1,160 @@ .\" $NetBSD: ctxsw.9,v 1.2 1996/12/02 00:11:31 tls Exp $ .\" .\" Copyright (c) 1996 The NetBSD Foundation, Inc. .\" All rights reserved. .\" .\" This code is derived from software contributed to The NetBSD Foundation .\" by Paul Kranenburg. .\" .\" Redistribution and use in source and binary forms, with or without .\" modification, are permitted provided that the following conditions .\" are met: .\" 1. Redistributions of source code must retain the above copyright .\" notice, this list of conditions and the following disclaimer. .\" 2. Redistributions in binary form must reproduce the above copyright .\" notice, this list of conditions and the following disclaimer in the .\" documentation and/or other materials provided with the distribution. .\" 3. All advertising materials mentioning features or use of this software .\" must display the following acknowledgement: .\" This product includes software developed by the NetBSD .\" Foundation, Inc. and its contributors. .\" 4. Neither the name of The NetBSD Foundation nor the names of its .\" contributors may be used to endorse or promote products derived .\" from this software without specific prior written permission. .\" .\" THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS .\" ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED .\" TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR .\" PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE .\" LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR .\" CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF .\" SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS .\" INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN .\" CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) .\" ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE .\" POSSIBILITY OF SUCH DAMAGE. .\" -.\" %FreeBSD: src/share/man/man9/mi_switch.9,v 1.7.2.4 2001/12/17 11:30:18 ru Exp % +.\" %FreeBSD: src/share/man/man9/mi_switch.9,v 1.16 2002/08/13 14:51:17 ru Exp % .\" .\" $FreeBSD$ .Dd November 24, 1996 .Dt MI_SWITCH 9 .Os .Sh ̾¾Î .Nm mi_switch , -.Nm cpu_switch -.Nd ÊÌ¤Î¥×¥í¥»¥¹¥³¥ó¥Æ¥­¥¹¥È¤Ø¤Î¥¹¥¤¥Ã¥Á +.Nm cpu_switch , +.Nm cpu_throw +.Nd Ê̤Υ¹¥ì¥Ã¥É¥³¥ó¥Æ¥­¥¹¥È¤Ø¤Î¥¹¥¤¥Ã¥Á .Sh ½ñ¼° .In sys/param.h .In sys/proc.h .Ft void .Fn mi_switch "void" .Ft void -.Fn cpu_switch "struct proc *p" +.Fn cpu_switch "void" +.Ft void +.Fn cpu_throw "void" .Sh ²òÀâ .Fn mi_switch -´Ø¿ô¤Ï¥Þ¥·¥óÈó°Í¸¤Ê¥×¥í¥»¥¹¥³¥ó¥Æ¥­¥¹¥È¥¹¥¤¥Ã¥Á¤ÎÁ°½èÍý¤ò¼ÂÁõ¤·¤Æ¤¤¤Þ¤¹¡£ +´Ø¿ô¤Ï¥Þ¥·¥óÈó°Í¸¤Ê¥¹¥ì¥Ã¥É¥³¥ó¥Æ¥­¥¹¥È¥¹¥¤¥Ã¥Á¤ÎÁ°½èÍý¤ò¼ÂÁõ¤·¤Æ¤¤¤Þ¤¹¡£ ²£¼è¤êÉÔ²Äǽ¤Ê¥«¡¼¥Í¥ë¥â¡¼¥É¼Â¹Ô¤ÎÊý¿Ë¤Î·ë²Ì¤È¤·¤Æ¡¢¥«¡¼¥Í¥ëÆâ¤Î¿ô¾¯¤Ê¤¤ ¶èÊ̤µ¤ì¤¿¾ì½ê¤«¤é¤Î¤ß¸Æ¤Ó½Ð¤µ¤ì¤Þ¤¹¡£ -3 ¤Ä¤Î¼ç¤Ê +¤¤¤¯¤Ä¤«¤Î¼ç¤Ê .Nm ¤Î»ÈÍѤϰʲ¼¤Ëµó¤²¤é¤ì¤Þ¤¹¡£ .Bl -enum -offset indent .It -.Xr sleep 9 -¤ª¤è¤Ó +.Xr sleep 9 , .Xr tsleep 9 +¤ª¤è¤Ó +.Xr msleep ¤ÎÃæ¤«¤é¡¢¤¢¤ë¥ê¥½¡¼¥¹¤¬ÍøÍѲÄǽ¤Ë¤Ê¤ë¤Î¤òÂԤĤ¿¤á¤Ë -¸½ºß¤Î¥×¥í¥»¥¹¤¬¼«È¯Åª¤Ë CPU ¤òÊü´þ¤¹¤ë¤È¤­¡£ +¸½ºß¤Î¥¹¥ì¥Ã¥É¤¬¼«È¯Åª¤Ë CPU ¤òÊü´þ¤¹¤ë¤È¤­¡£ .It ¥È¥é¥Ã¥× (Î㤨¤Ð¡¢¥·¥¹¥Æ¥à¥³¡¼¥ë¡¢¥Ç¥Ð¥¤¥¹³ä¤ê¹þ¤ß) ¤Î¼è¤ê°·¤¤¤Î¸å¤Ç¡¢ ¥«¡¼¥Í¥ë¤¬¥æ¡¼¥¶¥â¡¼¥É¼Â¹Ô¤Î¤¿¤á¤ËÌá¤ë½àÈ÷¤Î¤È¤­¡£ Ä̾盧¤Î¾ì¹ç¤Ï¡¢¸½ºß¤Î¥×¥í¥»¥¹¤Î¥·¥°¥Ê¥ëÇÛÃÖ¤ÎÃæ¤ÎÊѲ½¤Î¸¡½Ð¤Î¸å¤Ç ¥Þ¥·¥ó°Í¸¤Î¥È¥é¥Ã¥×¥Ï¥ó¥É¥ê¥ó¥°¥³¡¼¥É¤Ë¤è¤Ã¤Æ¼è¤ê°·¤ï¤ì¤ë¤«¡¢ -¤è¤ê¹â¤¤Í¥ÀèÅÙ¤Î¥×¥í¥»¥¹¤¬¼Â¹Ô²Äǽ¤Ë¤Ê¤Ã¤¿¤«¤â¤·¤ì¤Ê¤¤¤È¤­¤Ç¤¹¡£ +¤è¤ê¹â¤¤Í¥ÀèÅ٤Υ¹¥ì¥Ã¥É¤¬¼Â¹Ô²Äǽ¤Ë¤Ê¤Ã¤¿¤«¤â¤·¤ì¤Ê¤¤¤È¤­¤Ç¤¹¡£ ¸å¼Ô¤Î¥¤¥Ù¥ó¥È¤Ï¥Þ¥·¥óÄêµÁ¤Î .Fn need_resched ¤Î¸Æ¤Ó½Ð¤·¤Ë¤è¤ë¥Þ¥·¥óÈó°Í¸¤Î¥¹¥±¥¸¥å¡¼¥ê¥ó¥°¥ë¡¼¥Á¥ó¤Ë¤è¤Ã¤ÆÅÁ㤵¤ì¤Þ¤¹¡£ .It ¥·¥°¥Ê¥ë¥Ï¥ó¥É¥é¥³¡¼¥É .Xr ( issignal 9 ¤ò»²¾È) ¤ÎÃæ¤Ç¡¢¥×¥í¥»¥¹¤òÄä»ß¤µ¤»¤ë¥·¥°¥Ê¥ë¤¬ÆÏ¤±¤é¤ì¤¿¾ì¹ç¡£ +.It +¥¹¥ì¥Ã¥É¤¬ +.Xr thread_exit 9 +¤ÎÃæ¤Ç½ªÎ»¤·¡¢¥×¥í¥»¥Ã¥µ¤ÎÀ©¸æ¤¬¼¡¤Î¼Â¹Ô²Äǽ¤Î¥¹¥ì¥Ã¥É¤ËÅϤµ¤ì¤ë¤³¤È¤¬ +²Äǽ¤Ê¤È¤­¡£ +.It +.Xr thread_suspend_check 9 +Ãæ¤Ç¡¢Á´ÂΤȤ·¤Æ¤Î¥×¥í¥»¥¹¤ÎÄä»ß¾õÂ֤Τ¿¤á¤Ë¡¢ +¥¹¥ì¥Ã¥É¤¬¼Â¹Ô¤òÄä»ß¤¹¤ëɬÍפ¬¤¢¤ë +¾ì¹ç¡£ .El .Pp .Fn mi_switch ¤Ï¥×¥í¥»¥¹¹½Â¤ÂΤÎÃæ¤Ë¸½ºß¤Î¥×¥í¥»¥¹¤¬¼Â¹Ô¤µ¤ì¤¿»þ´ÖÎ̤òµ­Ï¿¤·¤Æ¡¢ -¤½¤Î¥×¥í¥»¥¹¤Ë³äÅö¤Æ¤é¤ì¤Æ¤¤¤ë CPU ¤Î»þ´Ö¥ê¥ß¥Ã¥È +¤½¤Î¥¹¥ì¥Ã¥É¤Ë³äÅö¤Æ¤é¤ì¤Æ¤¤¤ë CPU ¤Î»þ´Ö¥ê¥ß¥Ã¥È .Xr ( getrlimit 2 ¤ò»²¾È) ¤Ë¾È¤é¤·¤Æ¤³¤ÎÃͤò¸¡ºº¤·¤Þ¤¹¡£ ¥½¥Õ¥È¥ê¥ß¥Ã¥È¤ÎͲá¤Ï¤½¤Î¥×¥í¥»¥¹¤Ë .Dv SIGXCPU ¥·¥°¥Ê¥ë¤¬ÇÛ¿®¤µ¤ì¤ë·ë²Ì¤ò¾·¤­¡¢°ìÊý¥Ï¡¼¥É¥ê¥ß¥Ã¥È¤ÎͲá¤Ï .Dv SIGKILL ¤ò°ú¤­µ¯¤³¤·¤Þ¤¹¡£ ¤³¤ì¤é¤Î´ÉÍý¾å¤Î»Å»ö¤¬´°Î»¤·¤¿¸å¤Ç¡¢ .Fn mi_switch ¤Ï¼ÂºÝ¤Ë¥×¥í¥»¥¹¥³¥ó¥Æ¥­¥¹¥È¥¹¥¤¥Ã¥Á¤ò¹Ô¤Ê¤¦¥Þ¥·¥ó°Í¸¥ë¡¼¥Á¥ó .Fn cpu_switch ¤ËÀ©¸æ¤ò°ú¤­ÅϤ·¤Þ¤¹¡£ .Pp .Fn cpu_switch ¤ÏÍ¥ÀèÅÙ¥­¥å¡¼¥Ç¡¼¥¿¹½Â¤¤Ë¤ª¤¤¤Æ¡¢ ¼Â¹Ô½àÈ÷¤Î¤Ç¤­¤Æ¤¤¤ë¥×¥í¥»¥¹¤ÎÃæ¤«¤éÁªÂò¤·¤Þ¤¹¡£ Í¥ÀèÅÙ¥­¥å¡¼¤Ï¡¢¥­¥å¡¼ÀèÆ¬¹½Â¤ÂΤǤ¢¤ëÇÛÎó .Va qs[NQS] ¤Ç¹½À®¤µ¤ì¤Þ¤¹¡£ ¸Ä¡¹¤Î¥­¥å¡¼ÀèÆ¬¹½Â¤ÂΤˤè¤ê¡¢ Ʊ¤¸Í¥ÀèÅ٤μ¹ԲÄǽ¤Ê¥×¥í¥»¥¹¤Î¥ê¥¹¥È¤ò¼±Ê̤·¤Þ¤¹ .Fa ( ¤ò»²¾È)¡£ ñ°ì¤Î¸ì .Va whichqs ¤Ï¡¢¶õ¤Ç¤Ï¤Ê¤¤¥­¥å¡¼¤¬Ê¬¤«¤ë¥Ó¥Ã¥È¥Þ¥¹¥¯¤ò´Þ¤ß¡¢ ÁÇÁ᤯¥×¥í¥»¥¹¤òÁªÂò¤¹¤ë¤³¤È¤ò½õ¤±¤Þ¤¹¡£ .Fn cpu_switch ¤ÏºÇ¤â¹â¤¤Í¥ÀèÅÙ¤ò»ý¤Ä¥­¥å¡¼¾å¤Î¥ê¥¹¥È .Po Va qs ¤ÎÃæ¤ÎÄ㤤¥¤¥ó¥Ç¥Ã¥¯¥¹¤¬¹â¤¤Í¥ÀèÅÙ¤ò¼¨¤¹ .Pc ¤«¤éºÇ½é¤Î¥×¥í¥»¥¹¤òºï½ü¤·¤Ê¤±¤ì¤Ð¤Ê¤é¤º¡¢¥°¥í¡¼¥Ð¥ëÊÑ¿ô .Dv curproc ¤Ë¤½¤Î¥×¥í¥»¥¹¹½Â¤ÂΤΥ¢¥É¥ì¥¹¤ò³äÅö¤Æ¤Ê¤±¤ì¤Ð¤Ê¤ê¤Þ¤»¤ó¡£ ¼Â¹Ô¥­¥å¡¼¾å¤ËÍøÍѲÄǽ¤Ê¥×¥í¥»¥¹¤¬¤Ê¤¤¾ì¹ç¤Ë¤Ï¡¢ .Fn cpu_switch ¤Ï .Dq idle ¥ë¡¼¥×¤Ë°Ü¹Ô¤¹¤ë¤³¤È¤Ë¤Ê¤Ã¤Æ¤¤¤Þ¤¹¡£ idle ¥ë¡¼¥×¤Ï³ä¤ê¹þ¤ß¤òµö²Ä¤¹¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£ ¤³¤ì¤Ë¤è¤ê¡¢¤ä¤¬¤Æ¥×¥í¥»¥¹¤¬¼Â¹Ô¥­¥å¡¼¾å¤ËºÆ¤Ó¸½¤ì¤Þ¤¹¡£ .Fn cpu_switch ¤¬¤³¤ÎȯÀ¸¤òÂԤäƤ¤¤ë´Ö¤ÏÊÑ¿ô .Va curproc ¤Ï .Dv NULL ¤Ç¤¢¤ë¤Ù¤­¤Ç¤¹¡£ .Pp .Fn mi_switch ¤ª¤è¤ÓÅöÁ³ .Fn cpu_switch ¤Ï splhigh() ¤Ç¸Æ¤Ó½Ð¤µ¤ì¤ë¤Ù¤­¤Ç¤¢¤ë¤³¤È¤ËÃí°Õ¤·¤Æ¤¯¤À¤µ¤¤¡£ .Pp .Sh ´ØÏ¢¹àÌÜ .Xr issignal 9 , .Xr spl 9 , .Xr tsleep 9 , .Xr wakeup 9 .Pp diff --git a/ja_JP.eucJP/man/man9/style.9 b/ja_JP.eucJP/man/man9/style.9 index 8c14536e94..f8dbd1e5e9 100644 --- a/ja_JP.eucJP/man/man9/style.9 +++ b/ja_JP.eucJP/man/man9/style.9 @@ -1,704 +1,783 @@ .\" Copyright (c) 1995-2001 FreeBSD Inc. .\" All rights reserved. .\" .\" Redistribution and use in source and binary forms, with or without .\" modification, are permitted provided that the following conditions .\" are met: .\" 1. Redistributions of source code must retain the above copyright .\" notice, this list of conditions and the following disclaimer. .\" 2. Redistributions in binary form must reproduce the above copyright .\" notice, this list of conditions and the following disclaimer in the .\" documentation and/or other materials provided with the distribution. .\" .\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND .\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE .\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE .\" ARE DISCLAIMED. IN NO EVENT SHALL [your name] OR CONTRIBUTORS BE LIABLE .\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL .\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS .\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) .\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT .\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" SUCH DAMAGE. .\" .\" %FreeBSD: src/share/man/man9/style.9,v 1.32.2.19 2002/04/14 19:28:03 asmodai Exp % .\" $FreeBSD$ .\" .Dd December 7, 2001 .Dt STYLE 9 .Os .Sh ̾¾Î .Nm style .Nd ¥«¡¼¥Í¥ë¥½¡¼¥¹¥Õ¥¡¥¤¥ë¤Î¥¹¥¿¥¤¥ë¥¬¥¤¥É .Sh ²òÀâ ¤³¤Î¥Õ¥¡¥¤¥ë¤Ï .Fx ¥½¡¼¥¹¥Ä¥ê¡¼¤Î¥«¡¼¥Í¥ë¥½¡¼¥¹¤Ë¹¥¤Þ¤·¤¤¥¹¥¿¥¤¥ë¤òÌÀµ­¤·¤Æ¤¤¤Þ¤¹¡£ ¤³¤ì¤Ï¥æ¡¼¥¶¥é¥ó¥É¤Î¥³¡¼¥É¥¹¥¿¥¤¥ë¤Î¼ê°ú¤­¤Ç¤â¤¢¤ê¤Þ¤¹¡£ Îã¤Ë¤ª¤¤¤Æ¡¢¥¹¥¿¥¤¥ëµ¬Â§¤Î¿¤¯¤ò°ÅÌÛŪ¤Ë»ÈÍѤ·¤Æ¤¤¤Þ¤¹¡£ .Nm ¤¬¤³¤ì¤é¤Î»öÎã¤Ë¤Ä¤¤¤Æ¸ÀµÚ¤·¤Æ¤¤¤Ê¤¤¤È·è¤áÉÕ¤±¤ëÁ°¤Ë¡¢ Ãí°Õ¤·¤ÆÎã¤ò³Îǧ¤·¤Æ¤¯¤À¤µ¤¤¡£ .Nm ¤Ï¤½¤Î¤è¤¦¤Ê»öÊÁ¤Ë¤Ä¤¤¤Æ¤Ïµ­½Ò¤·¤Æ¤¤¤Þ¤»¤ó¡£ .\" $ ¤È FreeBSD ¤ò³¤±¤ë¤È¥­¡¼¥ï¡¼¥ÉÃÖ´¹¤µ¤ì¤ë¤Î¤Ç¡¢\& ¤òÁÞÆþ .\" 2001/05/23 horikawa@jp.FreeBSD.org .Bd -literal /* * FreeBSD ¤Î¤¿¤á¤Î¥¹¥¿¥¤¥ë¥¬¥¤¥É¤Ç¤¹¡£ * CSRG ¤Î KNF (Kernel Normal Form, ¥«¡¼¥Í¥ëɸ½à½ñ¼°) ¤Ë´ð¤Å¤¤¤Æ¤¤¤Þ¤¹¡£ * * @(#)style 1.14 (Berkeley) 4/28/95 - * $\&FreeBSD: src/share/man/man9/style.9,v 1.32.2.19 2002/04/14 19:28:03 asmodai Exp $ + * $\&FreeBSD: src/share/man/man9/style.9,v 1.95 2002/11/01 16:20:31 rwatson Exp $ */ /* * ¤È¤Æ¤â½ÅÍ×¤Ê 1 ¹Ô¤Î¥³¥á¥ó¥È¤Ï¤³¤Î¤è¤¦¤Ë¤·¤Þ¤¹¡£ */ /* ËØ¤É¤Î 1 ¹Ô¤Î¥³¥á¥ó¥È¤Ï¤³¤Î¤è¤¦¤Ë¤·¤Þ¤¹¡£ */ /* * Ê£¿ô¹Ô¤Ë¤ï¤¿¤ë¥³¥á¥ó¥È¤Ï¤³¤Î¤è¤¦¤Ë¤·¤Þ¤¹¡£¼ÂºÝ¤Îʸ¾Ï¤ò½ñ¤­¤Þ¤¹¡£¼ÂºÝ¤Î * ÃÊÍî¤Ë¸«¤¨¤ë¤è¤¦¤ËËä¤á¤Æ¤¤¤­¤Þ¤¹¡£ */ .Ed .Pp Ãøºî¸¢¥Ø¥Ã¥À¤Î¸å¤Ë¤Ï¶õ¹Ô¤ò 1 ¹ÔÆþ¤ì¡¢¥½¡¼¥¹¥Õ¥¡¥¤¥ë¤Ë¤Ï .Va rcsid ¤òÉÕ¤±¤Þ¤¹¡£ ¥Ð¡¼¥¸¥ç¥ó´ÉÍý¥·¥¹¥Æ¥à¤Î ID ¥¿¥°¤Ï¡¢¥Õ¥¡¥¤¥ëÃæ¤Ë 1 ¸Ä¤Î¤ß¤¢¤ë¤Ù¤­¤Ç¤¹ (¤³¤Î¥Õ¥¡¥¤¥ë¤Ç¤Ï°ã¤¤¤Þ¤¹¤¬)¡£ C/C++ ¥½¡¼¥¹¥Õ¥¡¥¤¥ë°Ê³°¤Ï¤³¤ÎÎã¤Ë½¾¤¤¤Þ¤¹¤¬¡¢ C/C++ ¥½¡¼¥¹¥Õ¥¡¥¤¥ë¤Ï°Ê¹ß¤ÎÎã¤Ë½¾¤¤¤Þ¤¹¡£ ³°Éô¤«¤éÆþ¼ê¤·¤¿¥Õ¥¡¥¤¥ë¤Î ¤¹¤Ù¤Æ¤Î VCS (¥Ð¡¼¥¸¥ç¥ó´ÉÍý¥·¥¹¥Æ¥à) ¥ê¥Ó¥¸¥ç¥ó¼±Ê̻Ҥϡ¢ ¸ºß¤¹¤ì¤Ð°Ý»ý¤·¤Þ¤¹¡£ ¤³¤ì¤Ë¤Ï¡¢¥Õ¥¡¥¤¥ë¤ÎÍèÎò¤ò¼¨¤¹Ê£¿ô¤Î ID ¤â´Þ¤ß¤Þ¤¹¡£ -°ìÈÌŪ¤Ë¡¢ -.So Li $ Sc -¤â´Þ¤á¤Æ¡¢ID ¤Ï¤½¤Î¤Þ¤Þ¤È¤·¤Þ¤¹¡£ -³°Éô¤«¤é¤Î VCS ID ¤ÎÁ°¤Ë -.Qq Li "From" -¤òÉÕ¤±¤ëÍýͳ¤Ï¤¢¤ê¤Þ¤»¤ó¡£ -¤Û¤È¤ó¤É¤ÎÈó -.Fx -¤Î VCS ID ¤Ï¡¢ -¥³¥á¥ó¥ÈÃæ¤Ç¤Ï¥¿¥Ö¤Ç¥¤¥ó¥Ç¥ó¥È¤µ¤ì¤Æ¤¤¤ë¤Ç¤·¤ç¤¦¡£ -.Bd -literal +°ìÈÌŪ¤Ë¡¢³°Íè¤Î ID ¤Þ¤¿¤Ï¤½¤Î²¼Éô¹½Â¤¤ÏÊÔ½¸¤·¤Þ¤»¤ó¡£ +¤µ¤â¤Ê¤±¤ì¤Ð +.Dq Li ( "#if defined(LIBC_SCCS)" +¤Î¤è¤¦¤Ë) °Ï¤Þ¤ì¤Æ¤¤¤Ê¤¤¾ì¹ç¤Ë¤Ï¡¢Á´¤Æ¤Î¸ß´¹À­¤Î¤Ê¤¤¾®ÊÒ¤ò±£¤¹¤¿¤á¡¢¤ª¤è¤Ó +¤½¤Î ID ¤ò¥ª¥Ö¥¸¥§¥¯¥È¥Õ¥¡¥¤¥ë¤«¤éÄɤ¤½Ð¤·¤Æ¤ª¤¯¤¿¤á¤Ë¡¢Î¾Êý¤ò +.Dq Li "#if 0 ... #endif" +¤ÎÃæ¤Ë°Ï¤ß¤Þ¤¹¡£ +¥Õ¥¡¥¤¥ë¤Î̾Á°¤¬Êѹ¹¤µ¤ì¤¿¾ì¹ç¤Ë¤Ï¡¢³°Íè¤Î VCS ID ¤ÎÁ°¤Ë +.Dq Li "From: " +¤Î¤ß¤òÄɲä·¤Þ¤¹¡£ +.Bd -literal +#if 0 +#ifndef lint +static char sccsid[] = "@(#)style 1.14 (Berkeley) 4/28/95"; +#endif /* not lint */ +#endif + #include -__RCSID("@(#)style 1.14 (Berkeley) 4/28/95"); -__FBSDID("$\&FreeBSD: src/share/man/man9/style.9,v 1.32.2.19 2002/04/14 19:28:03 asmodai Exp $"); +__FBSDID("$\&FreeBSD: src/share/man/man9/style.9,v 1.95 2002/11/01 16:20:31 rwatson Exp $"); .Ed .Pp ¥Ø¥Ã¥À¥Õ¥¡¥¤¥ë¤ÎÁ°¤Ë¡¢¶õ¹Ô¤ò 1 ¹ÔÉÕ¤±¤Þ¤¹¡£ .Pp ¥«¡¼¥Í¥ë¤Î¥¤¥ó¥¯¥ë¡¼¥É¥Õ¥¡¥¤¥ë (¤¹¤Ê¤ï¤Á¡¢ .Pa sys/*.h ) ¤¬½é¤á¤ËÍè¤Þ¤¹¡£ Ä̾ .Aq Pa sys/types.h ¤Þ¤¿¤Ï .Aq Pa sys/param.h ¤Î¤É¤Á¤é¤«¤¬É¬ÍפǤ¹¤¬¡¢ ξÊý¤ÏɬÍפʤ¤¤Ç¤·¤ç¤¦¡£ .Aq Pa sys/types.h ¤Ï .Aq Pa sys/cdefs.h ¤ò¥¤¥ó¥¯¥ë¡¼¥É¤·¤Æ¤ª¤ê¡¢ °Í¸´Ø·¸¤ÏÌäÂꤢ¤ê¤Þ¤»¤ó¡£ .Bd -literal #include /* »³³ç¸Ì¤Ë¤è¤ëÈó¥í¡¼¥«¥ë¥¤¥ó¥¯¥ë¡¼¥É */ .Ed .Pp ¥Í¥Ã¥È¥ï¡¼¥¯¥×¥í¥°¥é¥à¤Ç¤¢¤ë¾ì¹ç¤Ï¡¢ ¼¡¤Ë¥Í¥Ã¥È¥ï¡¼¥¯¥¤¥ó¥¯¥ë¡¼¥É¥Õ¥¡¥¤¥ë¤òÃÖ¤­¤Þ¤¹¡£ .Bd -literal #include #include #include #include #include .Ed .Pp ¥«¡¼¥Í¥ëÍѤΥե¡¥¤¥ë¤Ë¤Ï¡¢ .Pa /usr/include Ãæ¤Î¥Õ¥¡¥¤¥ë¤ò»ÈÍѤ·¤Ê¤¤¤Ç¤¯¤À¤µ¤¤¡£ .Pp ¤½¤ì¤«¤é¶õ¹Ô¤òÃÖ¤­¡¢ .Pa /usr ¥¤¥ó¥¯¥ë¡¼¥É¥Õ¥¡¥¤¥ë¤ò³¤±¤Þ¤¹¡£ .Pa /usr ¥¤¥ó¥¯¥ë¡¼¥É¥Õ¥¡¥¤¥ë¤Ï¥¢¥ë¥Õ¥¡¥Ù¥Ã¥È½ç¤Ë¥½¡¼¥È¤µ¤ì¤Æ¤¤¤ë¤Ù¤­¤Ç¤¹¡£ .Bd -literal #include .Ed .Pp ¥°¥í¡¼¥Ð¥ë¤Ê¥Ñ¥¹Ì¾¤Ï .Pa /usr/include/paths.h ¤ÇÄêµÁ¤µ¤ì¤Æ¤¤¤Þ¤¹¡£ ¥×¥í¥°¥é¥à¤Ë¥í¡¼¥«¥ë¤Ê¥Ñ¥¹Ì¾¤Ï¥í¡¼¥«¥ë¥Ç¥£¥ì¥¯¥È¥ê¤Î .Qq Pa pathnames.h ¤ËÆþ¤ì¤Þ¤¹¡£ .Bd -literal #include .Ed .Pp ¤½¤ì¤«¤é¡¢¶õ¹Ô¤¬¤¢¤Ã¤Æ¡¢¥æ¡¼¥¶¥¤¥ó¥¯¥ë¡¼¥É¥Õ¥¡¥¤¥ë¤¬Íè¤Þ¤¹¡£ .Bd -literal #include "pathnames.h" /* " " ¤Ë¤è¤ë¥í¡¼¥«¥ë¥¤¥ó¥¯¥ë¡¼¥É */ .Ed .Pp ¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¥¤¥ó¥¿¥Õ¥§¡¼¥¹¤ò¼ÂÁõ¤·¤Æ¤¤¤ë¾ì¹ç¤ò½ü¤­¡¢ ¼ÂÁõ¤Î̾Á°¶õ´Ö¤Ç .Ic #define ¤·¤¿¤ê̾Á°¤òÄêµÁ¤·¤¿¤ê¤·¤Æ¤Ï¤¤¤±¤Þ¤»¤ó¡£ .Pp .Dq Li °ÂÁ´¤Ç¤Ê¤¤ ¥Þ¥¯¥í (ÉûºîÍѤò»ý¤Ã¤Æ¤¤¤ë¤â¤Î) ¤Î̾Á°¤È¡¢ ÌÀ¤é¤«¤ÊÄê¿ô¤Î¥Þ¥¯¥í¤Î̾Á°¤Ï¤¹¤Ù¤ÆÂçʸ»ú¤Ç¤¹¡£ ¼°¤Î¤è¤¦¤ËŸ³«¤µ¤ì¤ë¥Þ¥¯¥í¤Ï¡¢Ã±°ì¤Î¥È¡¼¥¯¥ó¤Ë¤¹¤ë¤«³°Â¦¤Ë³ç¸Ì¤ò¤Ä¤±¤Þ¤¹¡£ .Ic #define ¤È¥Þ¥¯¥í̾¤Î´Ö¤Ë¥¿¥Öʸ»ú¤ò 1 ¸ÄÆþ¤ì¤Þ¤¹¡£ ¥Þ¥¯¥í¤¬¤¢¤ë´Ø¿ô¤Î¥¤¥ó¥é¥¤¥óŸ³«¤Ç¤¢¤ë¾ì¹ç¤Ï¡¢ ´Ø¿ô̾¤ÏÁ´¤Æ¾®Ê¸»ú¤Ç¡¢¥Þ¥¯¥í¤Ï¤¹¤Ù¤ÆÂçʸ»ú¤ÎƱ¤¸Ì¾Á°¤ò»ý¤Á¤Þ¤¹¡£ .\" XXX ¾åµ­¤Ï̾Á°¤¬Æ±¤¸¥Þ¥¯¥í¤ò #undef ¤¹¤ì¤Ð´Ø¿ô¤ò»È¤¨¤ë .\" ¤È¤¤¤¦ ANSI ¤Î¥¹¥¿¥¤¥ë¤È¾×ÆÍ¤·¤Þ¤¹¡£ .\" ¤³¤ì¤Ï MALLOC() ¤Ë¤Ä¤¤¤Æ¤Ï¸À¤¨¤Ê¤¤¤·¡¢¥¤¥ó¥é¥¤¥ó´Ø¿ô¤ò»È¤¦»þ¤Î .\" °ìÈÌŪ¤Ê¤ä¤ê¤«¤¿¤Ç¤Ï¤¢¤ê¤Þ¤»¤ó¡£ -¥Þ¥¯¥í¤¬ 1 ¹Ô°Ê¾åɬÍפʾì¹ç¤Ï¡¢¥Ö¥ì¡¼¥¹ -.Ql ( \&{ -¤È -.Ql \&} ) -¤ò»ÈÍѤ·¤Þ¤¹¡£ ¥Ð¥Ã¥¯¥¹¥é¥Ã¥·¥å¤Ï±¦Â·¤¨¤·¤Þ¤¹¡£¤³¤¦¤¹¤ë¤ÈÆÉ¤ß¤ä¤¹¤¯¤Ê¤ê¤Þ¤¹¡£ ¥Þ¥¯¥í¤¬Ê£¹çʸ¤ò¥«¥×¥»¥ë²½¤¹¤ë¾ì¹ç¤Ë¤Ï¡¢¤½¤ì¤ò .Ic do ¥ë¡¼¥×¤Ç°Ï¤ß¤Þ¤¹¡£ ¤³¤ì¤Ë¤è¤ê¡¢ .Ic if ʸ¤Ç°ÂÁ´¤Ë»ÈÍѤǤ­¤Þ¤¹¡£ ºÇ¸å¤Îʸ¤Î½ªÃ¼¤Î¥»¥ß¥³¥í¥ó¤Ï¡¢ ¥Þ¥¯¥í¤Ç¤Ï¤Ê¤¯¥Þ¥¯¥í¤Î¼Â»Ü»þ¤ËÉÕ¤±¤é¤ì¤ë¤Ù¤­¤Ç¤¹¡£ ¤³¤ì¤Ë¤è¤ê¡¢À¶½ñ´ï¤ä¥¨¥Ç¥£¥¿¤Çʸˡ²òÀϤ·¤ä¤¹¤¯¤Ê¤ê¤Þ¤¹¡£ .Bd -literal #define MACRO(x, y) do { \e variable = (x) + (y); \e (y) += 2; \e -} while(0) +} while (0) +.Ed +.Pp +¥³¡¼¥É¤¬ +.Ic #ifdef +¤Þ¤¿¤Ï +.Ic #if +¤ò»ÈÍѤ·¤Æ¾ò·ïÉÕ¤­¤Ç¥³¥ó¥Ñ¥¤¥ë¤µ¤ì¤ë¤È¤­¤Ë¤Ï¡¢ +¤É¤³¤Ç¾ò·ïÉÕ¤­¤Ç¥³¥ó¥Ñ¥¤¥ë¤µ¤ì¤ë¥³¡¼¥É¤¬½ªÎ»¤¹¤ë¤Î¤«¤ò +ÆÉ¤à¿Í¤¬Íưפ˼±Ê̤¹¤ë¤³¤È¤¬²Äǽ¤Ë¤¹¤ë¤¿¤á¤Ë¡¢¤½¤ì¤Ë³¤¯Å¬¹ç¤¹¤ë +.Ic #endif +¤Þ¤¿¤Ï +.Ic #else +¤Ë¥³¥á¥ó¥È¤òÄɲ䷤Ƥ⹽¤¤¤Þ¤»¤ó¡£ +¤³¤Î¥³¥á¥ó¥È¤Ï (¼ç´ÑŪ¤Ë) Ť¤Éôʬ¡¢20 ¹Ô°Ê¾å¤ÎÉôʬ¡¢¤Þ¤¿¤Ï¥Í¥¹¥È¤µ¤ì¤¿ +.Ic #ifdef +¤ÎϢ³¤¬ÆÉ¤à¿Í¤òº®Í𤵤»¤ë¤«¤â¤·¤ì¤Ê¤¤¤È¤­¡¢¤Ë¤Î¤ß»ÈÍѤµ¤ì¤ë¤Ù¤­¤Ç¤¹¡£ +¤¿¤È¤¨¥³¥ó¥Ñ¥¤¥ë¤µ¤ì¤Ê¤¤Îΰ褬¾®¤µ¤¯¤Ê¤ë¤«¤â¤·¤ì¤Ê¤¤¤Ç¤â¡¢ +lint ¤ÎÌÜŪ¤Î¤¿¤á¤Ë¾ò·ïÉÕ¤­¤Ç¥³¥ó¥Ñ¥¤¥ë¤µ¤ì¤Ê¤¤¸Ä½ê¤Î¤¿¤á¤Ë¡¢ +Îã³°¤¬ºî¤é¤ì¤Æ¤â¹½¤¤¤Þ¤»¤ó¡£ +¤½¤Î¥³¥á¥ó¥È¤Ï +.Ic #endif +¤Þ¤¿¤Ï +.Ic #else +¤«¤é 1 ¤Ä¤Î¶õÇò¤Ë¤è¤Ã¤ÆÊ¬Î¥¤µ¤ì¤ë¤Ù¤­¤Ç¤¹¡£ +û¤¤¾ò·ïÉÕ¤­¤Ç¥³¥ó¥Ñ¥¤¥ë¤µ¤ì¤ëÉôʬ¤Î¤¿¤á¤Ë¡¢ +½ª¤ï¤ê¤Î¥³¥á¥ó¥È¤ò»ÈÍѤ¹¤ë¤Ù¤­¤Ç¤Ï¤¢¤ê¤Þ¤»¤ó¡£ +.Pp +.Ic #endif +¤Î¤¿¤á¤Î¥³¥á¥ó¥È¤ÏÂбþ¤¹¤ë +.Ic #iF +¤Þ¤¿¤Ï +.Ic #ifdef +¤Ç»ÈÍѤµ¤ì¤Æ¤¤¤ëɽ¸½¤Ë¹ç¤ï¤»¤ë¤Ù¤­¤Ç¤¹¡£ +.Ic #else +¤ª¤è¤Ó +.Ic #elif +¤Î¤¿¤á¤Î¥³¥á¥ó¥È¤ÏÀè¹Ô¤¹¤ë +.Ic #if +¤ª¤è¤Ó/¤Þ¤¿¤Ï +.Ic #elif +ʸ¤Ë»ÈÍѤµ¤ì¤Æ¤¤¤ëɽ¸½¤ÎÈ¿ÂФ˹ç¤ï¤»¤ë¤Ù¤­¤Ç¤¹¡£ +¥³¥á¥ó¥È¤ÎÃæ¤Ç¤Ï¡¢Êä½õɽ¸½ +.Dq Li defined(FOO) +¤Ï +.Dq Li FOO +¤È¾Êά¤µ¤ì¤Þ¤¹¡£ +¥³¥á¥ó¥È¤ÎÌÜŪ¤Î¤¿¤á¤Ë¤Ï¡¢ +.Dq Ic #ifndef Li FOO +¤Ï +.Dq Ic #if Li !defined(FOO) +¤È¤ß¤Ê¤µ¤ì¤Þ¤¹¡£ +.Bd -literal +#ifdef KTRACE +#include +#endif + +#ifdef COMPAT_43 +/* Â礭¤ÊÉôʬ¤¬¡¢¤Þ¤¿¤Ï¾¤Î¾ò·ïÉÕ¤­¤Î¥³¡¼¥É¤¬¤³¤³¤Ë */ +#else /* !COMPAT_43 */ +/* ¤Þ¤¿¤Ï¤³¤³¤Ë */ +#endif /* COMPAT_43 */ + +#ifndef COMPAT_43 +/* ¹¹¤ËÊ̤ÎÂ礭¤ÊÉôʬ¤¬¡¢¤Þ¤¿¤Ï¾¤Î¾ò·ïÉÕ¤­¤Î¥³¡¼¥É¤¬¤³¤³¤Ë */ +#else /* COMPAT_43 */ +/* ¤Þ¤¿¤Ï¤³¤³¤Ë */ +#endif /* !COMPAT_43*/ .Ed .Pp ÎóµóÃͤÏÁ´¤ÆÂçʸ»ú¤ò»ÈÍѤ·¤Þ¤¹¡£ .Bd -literal enum enumtype { ONE, TWO } et; .Ed .Pp +Àë¸À¤ÎÃæ¤Ç¤Ï¡¢·¿¤Ë´Ø·¸ÉÕ¤±¤é¤ì¤¿¥È¡¼¥¯¥ó¤ò½ü¤¤¤Æ¡¢ +¥¢¥¹¥¿¥ê¥¹¥¯¤ÈÎÙÀܤ·¤¿¥È¡¼¥¯¥ó¤Î´Ö¤Ë¤Ï¶õÇòʸ»ú¤òÃÖ¤­¤Þ¤»¤ó¡£ +(¤³¤ì¤é¤Î¼±Ê̻ҤϴðËܤη¿¤Î̾Á°¡¢·¿¤Î½¤¾þ¸ì¶ç¡¢¤ª¤è¤Óº£Àë¸À¤µ¤ì¤è¤¦¤È¤·¤Æ¤¤¤ë +¤â¤Î°Ê³°¤Î typedef ̾¤Ç¤¹¡£) +¤³¤ì¤é¤Î¼±Ê̻Ҥϥ¢¥¹¥¿¥ê¥¹¥¯¤«¤é 1 ¤Ä¤Î¶õÇò¤ÇʬΥ¤·¤Þ¤¹¡£ +.Pp ¹½Â¤ÂΤÎÃæ¤ÇÊÑ¿ô¤òÀë¸À¤¹¤ë»þ¤Ë¤Ï¡¢ »ÈÍѽ硢¥µ¥¤¥º½ç¡¢¥¢¥ë¥Õ¥¡¥Ù¥Ã¥È½ç¤Ë¥½¡¼¥È¤·¤ÆÀë¸À¤·¤Þ¤¹¡£ ºÇ½é¤Î¶èʬ¤ÏÄ̾ïŬÍѤ·¤Þ¤»¤ó¤¬¡¢Îã³°¤¬¤¢¤ê¤Þ¤¹¡£ ³ÆÀë¸À¤Ï¡¢¤½¤ì¤¾¤ìÆÈΩ¤·¤¿¹Ô¤Ë¤Æ¹Ô¤¤¤Þ¤¹¡£ ¹½Â¤ÂΤÎ̾Á°¤Î°ÌÃÖ¤ò¡¢¤¢¤Ê¤¿¤ÎȽÃÇ¤ÇÆÉ¤ß°×¤¤¤è¤¦¤Ë¡¢ ¥¿¥Ö 1 ¸Ä¤Þ¤¿¤Ï 2 ¸Ä¤ò»ÈÍѤ·¤ÆÂ·¤¨¤Æ¤¯¤À¤µ¤¤¡£ -¤Û¤È¤ó¤É¤Î¥á¥ó¥Ð¤ò·¤¨¤ë¤Î¤Ë½½Ê¬¤Ç¤¢¤ì¤Ð¡¢Ã±°ì¤Î¥¿¥Ö¤ò»ÈÍѤ¹¤Ù¤­¤Ç¤¹¡£ +¾¯¤Ê¤¯¤È¤â 90% ¤Î¥á¥ó¥Ð¤Î̾Á°¤ò·¤¨¤ë¤Î¤Ë½½Ê¬¤Ê¾ì¹ç¤Ë¤Ï¡¢ +1 ¤Ä¤À¤±¤Î¥¿¥Ö¤ò»ÈÍѤ¹¤ë¤Ù¤­¤Ç¤¹¡£ Èó¾ï¤ËŤ¤·¿¤Î¸å¤Î̾Á°¤Ï¡¢Ã±°ì¤Î¶õÇò¤Ç¶èÀÚ¤é¤ì¤ë¤Ù¤­¤Ç¤¹¡£ .Pp ½ÅÍפʹ½Â¤ÂΤϡ¢¤½¤ì¤¬»ÈÍѤµ¤ì¤ë¥Õ¥¡¥¤¥ë¤ÎÀèÆ¬¤ÇÀë¸À¤µ¤ì¤ë¤«¡¢ Ê£¿ô¤Î¥½¡¼¥¹¥Õ¥¡¥¤¥ë¤Ç»ÈÍѤµ¤ì¤ë¾ì¹ç¤ÏÊ̤ΥإåÀ¥Õ¥¡¥¤¥ë¤ÇÀë¸À¤µ¤ì¤ë¤Ù¤­¤Ç¤¹¡£ ¹½Â¤ÂΤ¬¥Ø¥Ã¥À¥Õ¥¡¥¤¥ë¤ÇÀë¸À¤µ¤ì¤Æ¤¤¤ë¾ì¹ç¤Ë¤Ï¡¢ ¤½¤ì¤é¹½Â¤ÂΤλÈÍѤϡ¢Àë¸À¤È¤Ïʬ¤±¤é¤ì¤ë¤Ù¤­¤Ç¡¢¤«¤Ä .Ic "extern ¤Ç¤¢¤ë¤Ù¤­¤Ç¤¹¡£ .Bd -literal struct foo { struct foo *next; /* »ÈÍÑÃæ¤Î foo ¤Î¥ê¥¹¥È */ struct mumble amumble; /* mumble ¤Î¥³¥á¥ó¥È */ int bar; /* ¥³¥á¥ó¥È¤ò·¤¨¤è¤¦¤È¤·¤Æ¤¤¤Þ¤¹ */ struct verylongtypename *baz; /* ¥¿¥Ö 2 ¸Ä¤Ë¤Ï¼ý¤Þ¤ê¤Þ¤»¤ó */ }; struct foo *foohead; /* ¥°¥í¡¼¥Ð¥ë¤Ê foo ¥ê¥¹¥È¤ÎÀèÆ¬ */ .Ed .Pp ²Äǽ¤Ê»þ¤Ë¤Ïɬ¤º¡¢¤¢¤Ê¤¿¼«¿È¤Ç¥ê¥¹¥È¤òÁàºî¤¹¤ë¤Î¤Ç¤Ï¤Ê¤¯¡¢ .Xr queue 3 ¥Þ¥¯¥í¤ò»ÈÍѤ·¤Æ¤¯¤À¤µ¤¤¡£ ½¾¤Ã¤Æ¡¢Á°¤ÎÎã¤ò¤è¤êÎɤ¯½ñ¤¯¤È¼¡¤Î¤è¤¦¤Ë¤Ê¤ê¤Þ¤¹¡£ .Bd -literal #include struct foo { LIST_ENTRY(foo) link; /* foo ¥ê¥¹¥È¤Ë¥­¥å¡¼¥Þ¥¯¥í¤ò»ÈÍÑ */ struct mumble amumble; /* mumble ¤Î¥³¥á¥ó¥È */ int bar; /* ¥³¥á¥ó¥È¤ò·¤¨¤è¤¦¤È¤·¤Æ¤¤¤Þ¤¹ */ struct verylongtypename *baz; /* ¥¿¥Ö 2 ¸Ä¤Ë¤Ï¼ý¤Þ¤ê¤Þ¤»¤ó */ }; LIST_HEAD(, foo) foohead; /* ¥°¥í¡¼¥Ð¥ë¤Ê foo ¥ê¥¹¥È¤ÎÀèÆ¬ */ .Ed .Pp ¹½Â¤ÂΤη¿¤Ë typedef ¤ò»ÈÍѤ¹¤ë»ö¤ÏÈò¤±¤Æ¤¯¤À¤µ¤¤¡£ »ÈÍѤ·¤Æ¤·¤Þ¤¦¤È¡¢ ¹½Â¤ÂΤؤΥݥ¤¥ó¥¿¤òÉÔÆ©ÌÀ (opaque) ¤Ë»ÈÍѤ¹¤ë¤³¤È¤¬¡¢ ¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¤Ë¤È¤Ã¤ÆÉÔ²Äǽ¤È¤Ê¤ê¤Þ¤¹¡£ Ä̾ï¤Î struct ¥¿¥°¤ò»ÈÍѤ¹¤ë¤È¡¢¤³¤ì¤¬²Äǽ¤È¤Ê¤ê¡¢¤«¤ÄÍ­±×¤Ç¤¹¡£ µ¬Ìó¤¬ .Ic typedef ¤òÍ׵᤹¤ë¾ì¹ç¤Ë¤Ï¡¢¤½¤Î̾Á°¤ò¹½Â¤ÂÎ¥¿¥°¤Ë°ìÃפµ¤»¤Þ¤¹¡£ ɸ½à C ¤Þ¤¿¤Ï \*[Px] ¤Ë¤è¤Ã¤ÆÌÀ¼¨¤µ¤ì¤¿¤â¤Î¤ò½ü¤¤¤Æ¤Ï¡¢ .Dq Li _t ¤Ç½ª¤ë typedef ¤òÈò¤±¤Æ¤¯¤À¤µ¤¤¡£ .Bd -literal /* ¹½Â¤ÂÎ̾¤È typedef ¤ò°ìÃפµ¤»¤Þ¤¹ */ -typedef struct bar { +typedef struct bar { int level; } BAR; typedef int foo; /* ¤³¤ì¤Ï foo ¤Ç¤¹ */ typedef const long baz; /* ¤³¤ì¤Ï baz ¤Ç¤¹ */ .Ed .Pp Á´¤Æ¤Î´Ø¿ô¤Ï¤É¤³¤«¤Ç¥×¥í¥È¥¿¥¤¥×¤µ¤ì¤Þ¤¹¡£ .Pp »äŪ¤Ê´Ø¿ô (¤¹¤Ê¤ï¤Á¡¢Â¾¤Î¤É¤³¤Ç¤â»ÈÍѤµ¤ì¤Ê¤¤´Ø¿ô¤Ê¤É) ¤Î´Ø¿ô¥×¥í¥È¥¿¥¤¥×¤Ï¡¢ ºÇ½é¤Î¥½¡¼¥¹¥â¥¸¥å¡¼¥ë¤ÎÀèÆ¬¤ËÃÖ¤«¤ì¤Þ¤¹¡£ ñ°ì¤Î¥½¡¼¥¹¥â¥¸¥å¡¼¥ë¤Ë¥í¡¼¥«¥ë¤Ê´Ø¿ô¤Ï¡¢ .Ic static ¤ÇÀë¸À¤µ¤ì¤ë¤Ù¤­¤Ç¤¹¡£ .Pp ¥«¡¼¥Í¥ë¤ÎÊ̤ÎÉôʬ¤«¤é»ÈÍѤµ¤ì¤ë´Ø¿ô¤Ï¡¢ ´ØÏ¢¤Î¤¢¤ë¥¤¥ó¥¯¥ë¡¼¥É¥Õ¥¡¥¤¥ë¤ÎÃæ¤Ç¥×¥í¥È¥¿¥¤¥×¤µ¤ì¤Þ¤¹¡£ +´Ø¿ô¥×¥í¥È¥¿¥¤¥×¤Ï¡¢°Û¤Ê¤ë½ç½ø¤Î»ÈÍѤò¶¯À©¤¹¤ëÍýͳ¤¬¤Ê¤¤¾ì¹ç¤Ë¤Ï¡¢ +¤Ê¤ë¤Ù¤¯¥¢¥ë¥Õ¥¡¥Ù¥Ã¥È½ç¤ÎÏÀÍýŪ¤Ê½ç½ø¤ÇÀ°Î󤵤ì¤ë¤Ù¤­¤Ç¤¹¡£ .Pp Ê£¿ô¤Î¥â¥¸¥å¡¼¥ë¤Ç¥í¡¼¥«¥ë¤Ë»ÈÍѤµ¤ì¤ë´Ø¿ô¤Ï¡¢ .Qq Pa extern.h Åù¤ÎʬΥ¤·¤¿¥Ø¥Ã¥À¥Õ¥¡¥¤¥ë¤ÎÃæ¤ËÃÖ¤«¤ì¤Þ¤¹¡£ .Pp -°ìÈ̤˥½¡¼¥¹¥Õ¥¡¥¤¥ë¤¬ K&R µìÌóÀ»½ñ¥³¥ó¥Ñ¥¤¥é¤Ç -¥³¥ó¥Ñ¥¤¥ë²Äǽ¤Ç¤¢¤ë (¤Ù¤­) »þ¤Ë¤Î¤ß¡¢ -¥¤¥ó¥¯¥ë¡¼¥É¥Õ¥¡¥¤¥ë -.Aq Pa sys/cdefs.h -¤Î -.Dv __P -¥Þ¥¯¥í¤ò»ÈÍѤ·¤Þ¤¹¡£ -¿·¤·¤¤¥³¡¼¥É¤Ç¤Î .Dv __P -¥Þ¥¯¥í¤Î»ÈÍѤÏÈ¿ÂФµ¤ì¤Æ¤¤¤Þ¤¹¤¬¡¢ -´û¸¤Î¥Õ¥¡¥¤¥ë¤ËÂФ¹¤ë½¤Àµ¤Ï¤½¤Î¥Õ¥¡¥¤¥ë¤Îµ¬Ìó¤È¼óÈø°ì´Ó¤·¤Æ¤¤¤ë¤Ù¤­¤Ç¤¹¡£ +¥Þ¥¯¥í¤Ï»ÈÍѤ·¤Þ¤»¤ó¡£ .Pp ¥Õ¥¡¥¤¥ë¤Î 50% ¤«¤½¤ì°Ê¾å¤ò´¬¤­¹þ¤ó¤À½¤Àµ¤Î¾ì¹ç¤Ï¡¢ °ìÈ̤˥³¡¼¥É¤Ï .Dq ¿·¤·¤¤¥³¡¼¥É ¤È¤ß¤Ê¤¹¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£ ¤³¤ì¤Ï´û¸¤Î¥³¡¼¥É¤Î´·Îã¤òÇˤꡢ ¸½ºß¤Î .Nm ¥¬¥¤¥É¥é¥¤¥ó¤ò»ÈÍѤ¹¤ë¤Î¤Ë½½Ê¬¤Ç¤¹¡£ .Pp ¥«¡¼¥Í¥ë¤Ï¥Ñ¥é¥á¡¼¥¿¤Î·¿¤Ë´ØÏ¢ÉÕ¤±¤é¤ì¤¿Ì¾Á°¤ò»ý¤Á¤Þ¤¹¡£ Î㤨¤Ð¡¢¥«¡¼¥Í¥ëÆâ¤Ç¤³¤Î¤è¤¦¤Ë»ÈÍѤ·¤Þ¤¹¡£ .Bd -literal void function(int fd); .Ed .Pp ¥æ¡¼¥¶¥é¥ó¥É¤Î¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¤ËÂФ·¤Æ¸«¤¨¤ë¥Ø¥Ã¥À¥Õ¥¡¥¤¥ë¤ÎÃæ¤Ç¤Ï¡¢ ²Ä»ë¤Î¥×¥í¥È¥¿¥¤¥×¤Ï¡¢ ·¿¤òȼ¤Ã¤¿ .Dq Êݸ¤ì¤¿ (¥¢¥ó¥À¥¹¥³¥¢¤Ç³«»Ï¤¹¤ë) ̾Á°¤ò»ÈÍѤ¹¤ë¤«¡¢ ·¿¤À¤±¤Ç̾Á°¤ò»ÈÍѤ·¤Ê¤¤¤«¤Î¤É¤Á¤é¤«¤¬É¬ÍפǤ¹¡£ Êݸ¤ì¤¿Ì¾Á°¤Î»ÈÍѤ¬¤è¤ê˾¤Þ¤·¤¤¤Ç¤¹¡£ Î㤨¤Ð¡¢¤³¤Î¤è¤¦¤Ë»ÈÍѤ·¤Þ¤¹¡£ .Bd -literal void function(int); .Ed .Pp ¤Þ¤¿¤Ï .Bd -literal void function(int _fd); .Ed .Pp ¥×¥í¥È¥¿¥¤¥×¤Ï´Ø¿ô̾¤Î¹Ô·¤¨¤ò¹Ô¤Ê¤¦¤¿¤á¤Ë¡¢¥¿¥Ö¤Î¸å¤ËÄɲäΥ¹¥Ú¡¼¥¹Ê¸»ú¤ò ÃÖ¤¤¤Æ¤â¹½¤¤¤Þ¤»¤ó¡£ .Bd -literal static char *function(int _arg, const char *_arg2, struct foo *_arg3, struct bar *_arg4); static void usage(void); /* * Á´¤Æ¤Î¼çÍפʥ롼¥Á¥ó¤Ï¤½¤ì¤¬²¿¤ò¤¹¤ë¤Î¤«¤ò´Ê·é¤Ëµ­½Ò¤·¤¿ * ¥³¥á¥ó¥È¤ò»ý¤Ä¤Ù¤­¤Ç¤¹¡£"main" ¥ë¡¼¥Á¥ó¤ÎÁ°¤Î¥³¥á¥ó¥È¤Ï * ¤½¤Î¥×¥í¥°¥é¥à¤¬²¿¤ò¤¹¤ë¤Î¤«¤òµ­½Ò¤¹¤ë¤Ù¤­¤Ç¤¹¡£ */ int main(int argc, char *argv[]) { + char *ep; long num; int ch; - char *ep; - .Ed .Pp °ì´ÓÀ­¤Î¤¿¤á¤Ë¡¢¥ª¥×¥·¥ç¥ó¤Î²òÀÏ¤Ë¤Ï .Xr getopt 3 ¤¬»ÈÍѤµ¤ì¤ë¤Ù¤­¤Ç¤¹¡£ .Xr getopt 3 ¸Æ¤Ó½Ð¤·¤È .Ic switch ʸ¤Ç¤Ï¡¢¥ª¥×¥·¥ç¥ó¤ò¥½¡¼¥È¤¹¤Ù¤­¤Ç¤¹¤¬¡¢ .Ic switch ʸ¤Î¥«¥¹¥±¡¼¥É¤Î°ìÉô¤Î¾ì¹ç¤ÏÎã³°¤Ç¤¹¡£ .Ic switch ʸ¤Î¥«¥¹¥±¡¼¥ÉÍ×ÁÇ¤Ï .Li FALLTHROUGH ¥³¥á¥ó¥È¤ò»ý¤Ä¤Ù¤­¤Ç¤¹¡£ ¿ôÃͤΰú¿ô¤ÏÀºÅÙ¤ò¥Á¥§¥Ã¥¯¤µ¤ì¤ë¤Ù¤­¤Ç¤¹¡£ Åþã¤Ç¤­¤Ê¤¤¥³¡¼¥É¤Ï .Li NOTREACHED ¥³¥á¥ó¥È¤ò»ý¤Ä¤Ù¤­¤Ç¤¹¡£ .Bd -literal while ((ch = getopt(argc, argv, "abn:")) != -1) switch (ch) { /* switch ¤ò¥¤¥ó¥Ç¥ó¥È */ case 'a': /* case ¤Ï¥¤¥ó¥Ç¥ó¥È¤·¤Ê¤¤ */ aflag = 1; /* FALLTHROUGH */ case 'b': bflag = 1; break; case 'n': num = strtol(optarg, &ep, 10); if (num <= 0 || *ep != '\e0') { warnx("illegal number, -n argument -- %s", optarg); usage(); } break; case '?': default: usage(); /* NOTREACHED */ } argc -= optind; argv += optind; .Ed .Pp ͽÌó¸ì .Pq Ic if , while , for , return , switch ¤Î¸å¤Ë¥¹¥Ú¡¼¥¹¤òÆþ¤ì¤Þ¤¹¡£ -²¿¤âȼ¤ï¤Ê¤¤¤«¤¿¤À 1 ¤Ä¤Îʸ¤òȼ¤¦À©¸æÊ¸¤Ï¡¢¥Ö¥ì¡¼¥¹¤ò»ÈÍѤ·¤Þ¤»¤ó¡£ +²¿¤âȼ¤ï¤Ê¤¤¤«¤¿¤À 1 ¤Ä¤Îʸ¤òȼ¤¦À©¸æÊ¸¤Ï¡¢¥Ö¥ì¡¼¥¹ +.Ql ( \&{ +¤ª¤è¤Ó +.Ql \&} ) +¤ò»ÈÍѤ·¤Þ¤»¤ó¡£ 1 ¤Ä¤Îʸ¤¬ Ê£¿ô¹Ô¤Ç¤¢¤ëʸ¤Î¾ì¹ç¤Ë¤Ï¡¢¤³¤ì¤Ïµö¤µ¤ì¤Þ¤¹¡£ ̵¸Â¥ë¡¼¥×¤Ï .Ic while ¤Ç¤Ï¤Ê¤¯ .Ic for ¤Ç¹Ô¤Ê¤¤¤Þ¤¹¡£ .Bd -literal for (p = buf; *p != '\e0'; ++p) ; /* ²¿¤â¤Ê¤· */ for (;;) stmt; for (;;) { z = a + really + long + statement + that + needs + - two lines + gets + indented + four + spaces + + two + lines + gets + indented + four + spaces + on + the + second + and + subsequent + lines; } for (;;) { if (cond) stmt; } if (val != NULL) val = realloc(val, newsize); .Ed .Pp .Ic for ¥ë¡¼¥×¤Î³ÆÉô¤Ï¶õ¤Î¤Þ¤Þ»Ä¤·¤Æ¤â¹½¤¤¤Þ¤»¤ó¡£ °Û¾ï¤ËÊ£»¨¤Ê¥ë¡¼¥Á¥ó¤Ç¤Ê¤¤¸Â¤ê¤Ï¡¢¥Ö¥í¥Ã¥¯¤ÎÃæ¤ËÀë¸À¤òÃÖ¤¤¤Æ¤Ï¤Ê¤ê¤Þ¤»¤ó¡£ .Bd -literal for (; cnt < 15; cnt++) { stmt1; stmt2; } .Ed .Pp ¥¤¥ó¥Ç¥ó¥È¤Ï 8 ʸ»ú¤Î¥¿¥Ö¤Ç¤¹¡£ Âè 2 ¥ì¥Ù¥ë¤Î¥¤¥ó¥Ç¥ó¥È¤Ï 4 ʸ»ú¤Î¥¹¥Ú¡¼¥¹¤Ç¤¹¡£ Ť¤Ê¬¤òÀÞ¤êÊÖ¤¹É¬Íפ¬¤¢¤ë¾ì¹ç¡¢¥ª¥Ú¥ì¡¼¥¿¤ò¹ÔËö¤ËÃÖ¤­¤Þ¤¹¡£ .Bd -literal - while (cnt < 20 && this_variable_name_is_too_long_for_its_own_good && + while (cnt < 20 && this_variable_name_is_too_long && ep != NULL) z = a + really + long + statement + that + needs + - two lines + gets + indented + four + spaces + + two + lines + gets + indented + four + spaces + on + the + second + and + subsequent + lines; .Ed .Pp ¶õÇòʸ»ú¤ò¹ÔËö¤ËÄɲ䷤ƤϤ¤¤±¤Þ¤»¤ó¡£ ¤Þ¤¿¡¢¥¤¥ó¥Ç¥ó¥È¤ò·ÁÀ®¤¹¤ë¤¿¤á¤Ë¤Ï¡¢¥¿¥Ö¤È¤½¤Î¸å¤Ë¥¹¥Ú¡¼¥¹¤Î¤ß¤ò»ÈÍѤ·¤Þ¤¹¡£ ¥¿¥Ö¤¬À¸¤ß½Ð¤¹°Ê¾å¤Î¥¹¥Ú¡¼¥¹¤ä¡¢¥¿¥Ö¤ÎÁ°¤Î¥¹¥Ú¡¼¥¹¤Ï»ÈÍѤ·¤Þ¤»¤ó¡£ .Pp ¥Ö¥ì¡¼¥¹¤Î½ªÎ»¤È³«»Ï¤Ï .Ic else ¤ÈƱ¤¸¹Ô¤ËÃÖ¤«¤ì¤Þ¤¹¡£ ɬÍפǤʤ¤¥Ö¥ì¡¼¥¹¤Ï¾Ê¤¤¤Æ¤â¹½¤¤¤Þ¤»¤ó¡£ .Bd -literal if (test) stmt; else if (bar) { stmt; stmt; } else stmt; .Ed .Pp ´Ø¿ô̾¤Î¸å¤Ï¥¹¥Ú¡¼¥¹¤ò¶õ¤±¤Þ¤»¤ó¡£ ¥³¥ó¥Þ¤Î¸å¤Ë¤Ï¥¹¥Ú¡¼¥¹¤ò»ý¤Á¤Þ¤¹¡£ .Ql \&( ¤Þ¤¿¤Ï .Ql \&[ ¤Î¸å¤í¤Þ¤¿¤Ï .Ql \&] ¤Þ¤¿¤Ï .Ql \&) ¤ÎÁ°¤Ë¤Ï¥¹¥Ú¡¼¥¹¤ò¶õ¤±¤Þ¤»¤ó¡£ .Bd -literal error = function(a1, a2); if (error != 0) exit(error); .Ed .Pp ñ¹à±é»»»Ò¤Ï¥¹¥Ú¡¼¥¹¤òÍ׵ᤷ¤Þ¤»¤ó¤¬¡¢Æó¹à±é»»»Ò¤ÏÍ׵ᤷ¤Þ¤¹¡£ Í¥Àè½ç°Ì¤¬Í׵᤹¤ë¾ì¹ç¤Þ¤¿¤Ïʸ¤¬³ç¸Ì¤Ê¤·¤Ç¤Ïº®Í𤹤ë¾ì¹ç°Ê³°¤Ï¡¢ ³ç¸Ì¤Ï»ÈÍѤ·¤Þ¤»¤ó¡£ ¾¿Í¤Ï¤¢¤Ê¤¿¤è¤ê¤âº®Í𤷤䤹¤¤¤«¤â¤·¤ì¤Ê¤¤¤È¤¤¤¦¤³¤È¤ò³Ð¤¨¤Æ¤ª¤¤¤Æ¤¯¤À¤µ¤¤¡£ ¤¢¤Ê¤¿¤Ï°Ê²¼¤òÍý²ò¤Ç¤­¤Þ¤¹¤«? .Bd -literal a = b->c[0] + ~d == (e || f) || g && h ? i : j >> 1; k = !(l & FLAGS); .Ed .Pp À®¸ù»þ¤Ë¤Ï 0 ¤Ç¡¢¤Þ¤¿¤Ï .Xr sysexits 3 ¤Ë¤¢¤é¤«¤¸¤áÄêµÁ¤·¤Æ¤¢¤ëÃÍ¤Ç exit ¤¹¤ë¤Ù¤­¤Ç¤¹¡£ .Bd -literal exit(EX_OK); /* * "Exit 0 on success." (À®¸ù»þ¤Ï 0 ¤Ç½ªÎ») * ¤ÎÍͤËÌÀÇò¤Ê¥³¥á¥ó¥È¤ÏÈò¤±¤Æ¤¯¤À¤µ¤¤ */ } .Ed .Pp ´Ø¿ô¤Î·¿¤Ï¡¢´Ø¿ô¼«¿È¤ËÀè¹Ô¤¹¤ë¹Ô¤Ë¤¢¤ë¤Ù¤­¤Ç¤¹¡£ +´Ø¿ô¤ÎËÜÂΤγ«»Ï¤Î¥Ö¥ì¡¼¥¹¤Ï¡¢Ã±ÆÈ¤Ç 1 ¹Ô¤Ç¤¢¤ë¤Ù¤­¤Ç¤¹¡£ .Bd -literal static char * function(int a1, int a2, float fl, int a4) { .Ed .Pp ´Ø¿ô¤ÎÃæ¤ÇÊÑ¿ô¤òÀë¸À¤¹¤ë»þ¤Ë¤Ï¡¢¥µ¥¤¥º½ç¤Ë¡¢¼¡¤Ë¥¢¥ë¥Õ¥¡¥Ù¥Ã¥È½ç¤Ë ¥½¡¼¥È¤·¤ÆÀë¸À¤·¤Þ¤¹¡£ 1 ¹Ô¤ËÊ£¿ô¤ÎÀë¸À¤Ï²Äǽ¤Ç¤¹¡£ ¹Ô¤¬°î¤ì¤ë¾ì¹ç¤Ï¡¢·¿¤ÎͽÌó¸ì¤òºÆÅÙ»ÈÍѤ·¤Þ¤¹¡£ .Pp Àë¸À»þ¤ËÊÑ¿ô¤ò½é´ü²½¤¹¤ë¤³¤È¤Ë¤è¤Ã¤Æ¥³¡¼¥É¤ò ÉÔÌÀÎÆ¤Ë¤·¤Ê¤¤ÍͤËÃí°Õ¤·¤Æ¤¯¤À¤µ¤¤¡£ ¤³¤Îµ¡Ç½¤ÏÎɤ¯¹Í¤¨¤Æ»ÈÍѤ·¤Æ¤¯¤À¤µ¤¤¡£ ½é´ü²½¤Ë´Ø¿ô¸Æ¤Ó½Ð¤·¤ò»ÈÍѤ·¤Ê¤¤¤Ç¤¯¤À¤µ¤¤¡£ .Bd -literal struct foo one, *two; double three; int *four, five; char *six, seven, eight, nine, ten, eleven, twelve; four = myfunction(); .Ed .Pp ¾¤Î´Ø¿ô¤ÎÆâÉô¤Ç´Ø¿ô¤òÀë¸À¤·¤Ê¤¤¤Ç¤¯¤À¤µ¤¤¡£ ANSI C ¤Ë¤è¤ë¤È¡¢¤³¤Î¤è¤¦¤ÊÀë¸À¤Ï¡¢Àë¸À¤Î¥Í¥¹¥Æ¥£¥ó¥°¤Ë¤è¤é¤º¡¢ ¥Õ¥¡¥¤¥ë¥¹¥³¡¼¥×¤Ë¤Ê¤ê¤Þ¤¹¡£ ¥í¡¼¥«¥ë¥¹¥³¡¼¥×¤Ë¸«¤¨¤ë¤â¤Î¤ÎÃæ¤Ë¥Õ¥¡¥¤¥ë¤ÎÀë¸À¤ò±£¤¹¤³¤È¤Ï¹¥¤Þ¤·¤¯¤Ê¤¯¡¢ Îɤ¤¥³¥ó¥Ñ¥¤¥é¤Ï¶ì¾ð¤ò¸À¤¤¤Þ¤¹¡£ .Pp ¥­¥ã¥¹¥È¤È .Ic sizeof ±é»»»Ò¤Î¸å¤Ë¤Ï¥¹¥Ú¡¼¥¹¤ò³¤±¤Þ¤»¤ó¡£ ¤³¤Îµ¬Â§¤Ï .Xr indent 1 ¤¬Íý²ò¤·¤Ê¤¤¤³¤È¤ËÃí°Õ¤·¤Æ¤¯¤À¤µ¤¤¡£ +.Ic sizeof +¤Ï¾ï¤Ë³ç¸Ì¤ò¤Ä¤±¤Æ½ñ¤«¤ì¤Þ¤¹¡£ +¾éĹ¤Ê³ç¸Ì¤Îµ¬Â§¤Ï +.Fn sizeof var +¤Î»öÎã¤Ë¤ÏŬÍѤµ¤ì¤Þ¤»¤ó¡£ .Pp .Dv NULL ¤Ï¡¢¹¥¤Þ¤ì¤ë¥Ì¥ë¥Ý¥¤¥ó¥¿Äê¿ô¤Ç¤¹¡£ ¥³¥ó¥Ñ¥¤¥é¤¬·¿¤òÃΤäƤ¤¤ëʸ̮¡¢Î㤨¤ÐÂåÆþ¤Ç¤Ï¡¢ .Vt ( "type *" ) Ns 0 ¤Þ¤¿¤Ï .Vt ( "type *" ) Ns Dv NULL ¤ÎÂå¤ï¤ê¤Ë¡¢ .Dv NULL ¤ò»ÈÍѤ·¤Þ¤¹¡£ ¾¤Îʸ̮¤Ç¤Ï¡¢ÆÃ¤ËÁ´¤Æ¤Î´Ø¿ô¤Î°ú¿ô¤Ç¤Ï¡¢ .Vt ( "type *" ) Ns Dv NULL ¤ò»ÈÍѤ·¤Þ¤¹¡£ (´Ø¿ô¤Î¥×¥í¥È¥¿¥¤¥×¤¬¥¹¥³¡¼¥×³°¤«¤â¤·¤ì¤Ê¤¤¾ì¹ç¤Ë¡¢ ¥­¥ã¥¹¥È¤Ï¤¤¤í¤¤¤í¤Ê°ú¿ô¤Ë¤È¤Ã¤ÆÉ¬¿Ü¤Ç¡¢¤½¤Î¾¤Î°ú¿ô¤Ë¤È¤Ã¤Æ¤âɬÍפǤ¹¡£) ¥Ý¥¤¥ó¥¿¤Ï .Dv NULL ¤ÈÈæ³Ó¤·¤Þ¤¹¡£Î㤨¤Ð¡¢ .Bd -literal !(p = f()) .Ed .Pp ¤Ç¤Ï¤Ê¤¯¡¢¤³¤Î¤è¤¦¤Ë»È¤¤¤Þ¤¹¡£ .Bd -literal (p = f()) == NULL .Ed .Pp ¿¿ÍýÃͤǤϤʤ¤¾ì¹ç¡¢¥Æ¥¹¥È¤Ë¤Ï .Ic \&! ¤ò»ÈÍѤ·¤Ê¤¤¤Ç¤¯¤À¤µ¤¤¡£ Î㤨¤Ð¡¢²¼µ­¤Î¤è¤¦¤Ë»È¤¤¤Þ¤¹¡£ .Bd -literal if (*p == '\e0') .Ed .Pp ²¼µ­¤Î¤è¤¦¤Ë¤Ï»È¤¤¤Þ¤»¤ó¡£ .Bd -literal if (!*p) .Ed .Pp .Vt "void *" ¤òÊÖ¤¹¥ë¡¼¥Á¥ó¤Ç¤Ï¡¢ Ìá¤êÃͤò¤É¤Î¥Ý¥¤¥ó¥¿·¿¤Ë¤â¥­¥ã¥¹¥È¤·¤Æ¤Ï¤Ê¤ê¤Þ¤»¤ó¡£ .Pp +.Ic return +ʸ¤ÎÃͤϳç¸Ì¤Ç°Ï¤Þ¤ì¤Æ¤¤¤ë¤Ù¤­¤Ç¤¹¡£ +.Pp .Xr err 3 ¤Þ¤¿¤Ï .Xr warn 3 ¤ò»ÈÍѤ·¡¢¾¡¼ê¤Ëºî¤é¤Ê¤¤¤Ç¤¯¤À¤µ¤¤¡£ .Bd -literal if ((four = malloc(sizeof(struct foo))) == NULL) err(1, (char *)NULL); if ((six = (int *)overflow()) == NULL) errx(1, "number overflowed"); return (eight); } .Ed .Pp ¸Å¤¤¥¹¥¿¥¤¥ë¤Î´Ø¿ôÀë¸À¤Ï¤³¤Î¤è¤¦¤Ë¤Ê¤Ã¤Æ¤¤¤Þ¤¹¡£ .Bd -literal static char * function(a1, a2, fl, a4) int a1, a2; /* int ·¿¤âÀë¸À¤·¤Þ¤¹¡¢¥Ç¥Õ¥©¥ë¥È¤Ë¤·¤Ê¤¤¤³¤È */ float fl; /* double ¤È float ¤Î°ã¤¤¤Ëµ¤¤òÉÕ¤±¤Æ¤¯¤À¤µ¤¤ */ int a4; /* ½Ð¤Æ¤­¤¿½ç¤ËÀë¸À¤·¤Þ¤¹ */ { .Ed .Pp ¤¢¤Ê¤¿¤¬ÌÀ³Î¤Ë K&R ¤È¤Î¸ß´¹À­¤òɬÍפȤ¹¤ë¾ì¹ç°Ê³°¤Ï¡¢ ANSI ¤Î´Ø¿ôÀë¸À¤ò»ÈÍѤ·¤Æ¤¯¤À¤µ¤¤¡£ Ť¤¥Ñ¥é¥á¡¼¥¿¥ê¥¹¥È¤ÎÀÞ¤êÊÖ¤·¤Ë¤Ï¡¢ 4 ¸Ä¤Î¶õÇò¤Ë¤è¤ëÄ̾ï¤Î¥¤¥ó¥Ç¥ó¥È¤òÉÕ¤±¤Þ¤¹¡£ .Pp ²ÄÊѸĿô¤Î°ú¿ô¤Ï¤³¤Î¤è¤¦¤Ë¤·¤Þ¤¹¡£ .Bd -literal #include void vaf(const char *fmt, ...) { va_list ap; va_start(ap, fmt); STUFF; va_end(ap); /* void ·¿¤Î´Ø¿ô¤Ë return ¤ÏÉÔÍפǤ¹ */ } static void usage() { /* ´Ø¿ô¤¬¥í¡¼¥«¥ëÊÑ¿ô¤ò»ý¤¿¤Ê¤¤¾ì¹ç¡¢¶õ¹Ô¤ò¤¤¤ì¤Þ¤¹ */ .Ed .Pp .Xr fputs 3 , .Xr puts 3 , .Xr putchar 3 Åù¤Ç¤Ï¤Ê¤¯¡¢ .Xr printf 3 ¤ò»ÈÍѤ·¤Æ¤¯¤À¤µ¤¤¡£ ¤³¤ì¤Ï®¤¯¤ÆÂçÄñ¤Ï¤­¤ì¤¤¤Ç¡¢¸À¤¦¤Þ¤Ç¤â¤Ê¤¯¤Ä¤Þ¤é¤Ê¤¤¥Ð¥°¤òÈò¤±¤Þ¤¹¡£ .Pp »ÈÍÑË¡ (usage) ¤Îʸ¤Ï¥Þ¥Ë¥å¥¢¥ë¥Ú¡¼¥¸¤Î .Sx SYNOPSIS (½ñ¼°) ¤ÎÍͤǤ¢¤ë¤Ù¤­¤Ç¤¹¡£ »ÈÍÑË¡¤Îʸ¤Ï¡¢¼¡¤Î¹½Â¤¤Ç¤¢¤ë¤Ù¤­¤Ç¤¹: .Bl -enum .It ¥ª¥Ú¥é¥ó¥É¤Î̵¤¤¥ª¥×¥·¥ç¥ó¤¬¡¢ºÇ½é¤Ë¥¢¥ë¥Õ¥¡¥Ù¥Ã¥È½ç¤Ë¡¢ 1 ÁȤÎÂç³ç¸Ì .Ql ( \&[ ¤È .Ql \&] ) ¤Ç¤¯¤¯¤é¤ì¤Þ¤¹¡£ .It ¥ª¥×¥·¥ç¥ó¤È¤½¤Î¥ª¥Ú¥é¥ó¥É¤¬¤³¤ì¤â¥¢¥ë¥Õ¥¡¥Ù¥Ã¥È½ç¤Ë³¤­¡¢ ¤½¤ì¤¾¤ì¤Î¥ª¥×¥·¥ç¥ó¤È¤½¤Î°ú¿ô¤ò 1 ÁȤÎÂç³ç¸Ì¤Ç¤¯¤¯¤ê¤Þ¤¹¡£ .It ɬ¿Ü¤Î°ú¿ô (¤â¤·¤¢¤ì¤Ð) ¤¬Â³¤­¡¢ ¥³¥Þ¥ó¥É¥é¥¤¥ó¤Ç»ØÄꤵ¤ì¤ë¤Ù¤­½ç¤Ç°ìÍ÷¤µ¤ì¤Þ¤¹¡£ .It ºÇ¸å¤Ë¡¢ ¤¹¤Ù¤Æ¤ÎǤ°Õ¤Î°ú¿ô¤¬»ØÄꤵ¤ì¤ë¤Ù¤­½ç¤Ç¡¢ ¤¹¤Ù¤ÆÂç³ç¸Ì¤ÎÃæ¤Ë°ìÍ÷¤µ¤ì¤Þ¤¹¡£ .El .Pp ½ÄËÀ .Pq Ql \&| ¤Ï¡¢ .Dq Æó¼ÔÂò°ì ¤Î¥ª¥×¥·¥ç¥ó¤Þ¤¿¤Ï°ú¿ô¤òʬ³ä¤·¡¢ Ʊ»þ¤Ë»ÈÍѤ¹¤ë¥ª¥×¥·¥ç¥ó¤È°ú¿ô¤Ï¡¢Ã±°ì¤ÎÂç³ç¸Ì¤Ç¤¯¤¯¤ê¤Þ¤¹¡£ .Bd -literal -offset 4n "usage: f [-aDde] [-b b_arg] [-m m_arg] req1 req2 [opt1 [opt2]]\en" "usage: f [-a | -b] [-c [-dEe] [-n number]]\en" .Ed .Bd -literal (void)fprintf(stderr, "usage: f [-ab]\en"); exit(EX_USAGE); } .Ed .Pp ¥Þ¥Ë¥å¥¢¥ë¥Ú¡¼¥¸¤Î¥ª¥×¥·¥ç¥óµ­½Ò¤Ï¡¢ ½ã¿è¤Ê¥¢¥ë¥Õ¥¡¥Ù¥Ã¥È½ç¤Ç¤¢¤ë¤Ù¤­¤Ç¤¢¤ë¤³¤È¤ËÃí°Õ¤·¤Æ¤¯¤À¤µ¤¤¡£ ¤Ä¤Þ¤ê¡¢¥ª¥×¥·¥ç¥ó¤¬°ú¿ô¤ò¼è¤ë¤«Èݤ«¤Ë´Ø¤ï¤é¤Ê¤¤¤È¤¤¤¦¤³¤È¤Ç¤¹¡£ ¥¢¥ë¥Õ¥¡¥Ù¥Ã¥È½ç¤Ï¡¢Á°½Ò¤ÎÂçʸ»ú¾®Ê¸»ú¤Î½ç½ø¤ò¹Íθ¤ËÆþ¤ì¤ë¤Ù¤­¤Ç¤¹¡£ .Pp ¿·¤·¤¤Ã濴Ū¤Ê¥«¡¼¥Í¥ë¤Î¥³¡¼¥É¤Ï¡¢Å¬ÅÙ¤Ë .Nm ¥¬¥¤¥É¤Ë½¾¤¦¤Ù¤­¤Ç¤¹¡£ ¥µ¡¼¥É¥Ñ¡¼¥Æ¥£¤¬Êݼ餹¤ë¥â¥¸¥å¡¼¥ë¤ä¥Ç¥Ð¥¤¥¹¥É¥é¥¤¥Ð¤Î¤¿¤á¤Î¥¬¥¤¥É¥é¥¤¥ó¤Ï ¤è¤ê´Ë¤ä¤«¤Ç¤¹¤¬¡¢ºÇÄã¸ÂÆâÉôŪ¤Ë¤ÏÈà¤é¤Î°ì´Ó¤·¤¿¥¹¥¿¥¤¥ë¤Ç¤¢¤ë¤Ù¤­¤Ç¤¹¡£ .Pp ¥½¡¼¥¹¥ê¥Ý¥¸¥È¥ê¤ÎʸÂΤÎÊѹ¹ (¶õÇòʸ»ú¤ÎÊѹ¹¤ò´Þ¤à) ¤Ïº¤Æñ¤Ç¡¢ ÀµÅö¤ÊÍýͳ¤Ê¤·¤Ë¤ÏÈò¤±¤ë¤Ù¤­¤Ç¤¹¡£ ¥ê¥Ý¥¸¥È¥ê¤ÎÃæ¤Î¤ª¤ª¤è¤½ KNF .Nm ¤ËŬ¹ç¤·¤Æ¤¤¤ë¥³¡¼¥É¤Ï¡¢¤³¤ÎŬ¹ç¤«¤éÎ¥¤ì¤Æ¤Ï¤Ê¤ê¤Þ¤»¤ó¡£ .Pp ²Äǽ¤Ê»þ¤Ë¤Ï¤¤¤Ä¤Ç¤â¡¢ ¥³¡¼¥É¤Ï¥³¡¼¥É¥Á¥§¥Ã¥« (Î㤨¤Ð¡¢ .Xr lint 1 ¤Þ¤¿¤Ï .Nm gcc Fl Wall ) ¤ò Ä̲ᤷ¡¢È¯À¸¤¹¤ë·Ù¹ð¤ÏºÇ¾®¸Â¤È¤Ê¤ë¤Ù¤­¤Ç¤¹¡£ .Sh ´ØÏ¢¹àÌÜ .Xr indent 1 , .Xr lint 1 , .Xr err 3 , .Xr sysexits 3 , .Xr warn 3 .Sh Îò»Ë ¤³¤Î¥Ú¡¼¥¸¤Ï .Bx 4.4 Lite2 ¥ê¥ê¡¼¥¹¤Î .Pa src/admin/style/style ¥Õ¥¡¥¤¥ë¤ËÂ礭¤¯´ð¤Å¤¤¤Æ¤¤¤Æ¡¢ ¸½ºß¤Î¼ÂÁõ¤È .Fx ¥×¥í¥¸¥§¥¯¥È¤ÎÍ×˾¤òÈ¿±Ç¤·¤Æ¡¢ÉÑÈˤ˹¹¿·¤·¤Æ¤¤¤Þ¤¹¡£ diff --git a/ja_JP.eucJP/man/man9/zone.9 b/ja_JP.eucJP/man/man9/zone.9 index b2107c0810..b068a949c2 100644 --- a/ja_JP.eucJP/man/man9/zone.9 +++ b/ja_JP.eucJP/man/man9/zone.9 @@ -1,211 +1,149 @@ .\"- .\" Copyright (c) 2001 Dag-Erling Coïdan Smørgrav .\" All rights reserved. .\" .\" Redistribution and use in source and binary forms, with or without .\" modification, are permitted provided that the following conditions .\" are met: .\" 1. Redistributions of source code must retain the above copyright .\" notice, this list of conditions and the following disclaimer. .\" 2. Redistributions in binary form must reproduce the above copyright .\" notice, this list of conditions and the following disclaimer in the .\" documentation and/or other materials provided with the distribution. .\" .\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND .\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE .\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE .\" ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE .\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL .\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS .\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) .\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT .\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" SUCH DAMAGE. .\" -.\" %FreeBSD: src/share/man/man9/zone.9,v 1.9.2.4 2002/05/02 20:01:29 asmodai Exp % +.\" %FreeBSD: src/share/man/man9/zone.9,v 1.21 2002/05/30 11:37:39 ru Exp % .\" .\" $FreeBSD$ -.Dd January 27, 2001 +.Dd May 18, 2002 .Dt ZONE 9 .Os .Sh ̾¾Î -.Nm zbootinit , -.Nm zinitna , -.Nm zinit , -.Nm zalloc , -.Nm zfree , -.Nm zalloci , -.Nm zfreei , +.Nm uma_zcreate , +.Nm uma_zalloc , +.Nm uma_zfree , +.Nm uma_zdestroy .Nd ¥¾¡¼¥ó¥¢¥í¥±¡¼¥¿ .Sh ½ñ¼° .In sys/param.h .In sys/queue.h -.In vm/vm_zone.h +.In vm/uma.h +.Ft uma_zone_t +.Fo uma_zcreate +.Fa "char *name" "int size" +.Fa "uma_ctor ctor" "uma_dtor dtor" "uma_init uminit" "uma_fini fini" +.Fa "int align" "u_int16_t flags" +.Fc +.Ft "void *" +.Fn uma_zalloc "uma_zone_t zone" "int flags" .Ft void -.Fn zbootinit "vm_zone_t z" "char *name" "int size" "void *item" "int nitems" -.Ft int -.Fn zinitna "vm_zone_t z" "struct vm_object *obj" "char *name" "int size" "int nentries" "int flags" "int zalloc" -.Ft vm_zone_t -.Fn zinit "char *name" "int size" "int nentries" "int flags" "int zalloc" -.Ft void * -.Fn zalloc "vm_zone_t z" +.Fn uma_zfree "uma_zone_t zone" "void *item" .Ft void -.Fn zfree "vm_zone_t z" "void *item" -.Ft void * -.Fn zalloci "vm_zone_t z" -.Ft void -.Fn zfreei "vm_zone_t z" "void *item" +.Fn uma_zdestroy "uma_zone_t zone" .Sh ²òÀâ ¥¾¡¼¥ó¥¢¥í¥±¡¼¥¿¤ÏưŪ¤ËÂ礭¤µ¤¬·è¤á¤é¤ì¤ëÎà»÷¤·¤¿Â礭¤µ¤Î¹àÌܤν¸¹ç¤ò ´ÉÍý¤¹¤ë¤¿¤á¤Î¸úΨŪ¤Ê¥¤¥ó¥¿¥Õ¥§¡¼¥¹¤òÄ󶡤·¤Þ¤¹¡£ ¥¾¡¼¥ó¥¢¥í¥±¡¼¥¿¤Ï¼Â¹Ô»þ¤Ë³ä¤êÅö¤Æ¤é¤ì¤¿¥¾¡¼¥ó¤Ï¤â¤Á¤í¤ó¡¢ ͽ¤á³ä¤êÅö¤Æ¤é¤ì¤Æ¤¤¤ë¥¾¡¼¥ó¤ËÂФ·¤Æ¤â»ÈÍѤ¹¤ë¤³¤È¤¬½ÐÍè¡¢¤Þ¤¿¤½¤Î¤¿¤á¡¢ ¾¤Î¥á¥â¥ê´ÉÍý¥ë¡¼¥Á¥ó¤è¤ê¤â¥Ö¡¼¥È¥×¥í¥»¥¹¤Î¤è¤êÁᤤÃʳ¬¤ÇÍøÍѲÄǽ¤Ç¤¹¡£ .Pp ¥¾¡¼¥ó¤Ï¿­Ä¥À­¤Î¤¢¤ëƱ°ì¤ÎÂ礭¤µ¤Î¹àÌܤν¸¹ç¤Ç¤¹¡£ ¥¾¡¼¥ó¥¢¥í¥±¡¼¥¿¤Ï¤É¤Î¹àÌܤ¬»ÈÍÑÃæ¤«¤½¤¦¤Ç¤Ê¤¤¤Î¤«¤ò¸«¼º¤ï¤Ê¤¤¤è¤¦¤Ë¤·¡¢ ¥¾¡¼¥ó¤«¤é ¹àÌܤò³ä¤êÅö¤Æ¤ë¤¿¤á¤Î´Ø¿ô¤ª¤è¤Ó²òÊü¤·¤ÆÌ᤹ (¸å¤Ç¤Î»ÈÍѤΤ¿¤á¤Ë¹àÌܤò ÍøÍѲÄǽ¤Ë¤¹¤ë) ¤¿¤á¤Î´Ø¿ô¤òÄ󶡤·¤Þ¤¹¡£ .Pp ¹½Â¤ÂΤò¥¾¡¼¥ó¥¢¥í¥±¡¼¥¿¤Ç´ÉÍý¤·¡¢ ³ä¤êÅö¤Æ¤Î´Ö¤ËËä¤á¹þ¤ßºÑ¤ß¤Î¥Õ¥£¡¼¥ë¥É¤ò»Ä¤¹¤³¤È¤Ë¤è¤ê ·¿¤¬¸ÇÄê¤È¤Ê¤ë¥¾¡¼¥ó¤ÎÆÃÀ­¤ò»ÈÍѤ·¤¿¤¤¾ì¹ç¡¢ ¥¾¡¼¥ó¥¢¥í¥±¡¼¥¿¤¬ÆâÉô¤Ç»ÈÍѤ¹¤ëÀèÆ¬ 2 ¤Ä¤Î¥Ý¥¤¥ó¥¿¤ò ¤³¤Î¹½Â¤ÂΤ¬Í½Ì󤷤Ƥª¤¯É¬Íפ¬¤¢¤ê¤Þ¤¹¡£ -.Bd -literal +.Bd -literal -offset indent struct my_item { struct my_item *z_rsvd1; struct my_item *z_rsvd2; /* ¹½Â¤ÂΤλĤê¤ÎÉôʬ */ }; .Ed .Pp ¤½¤¦¤·¤Ê¤¤¾ì¹ç¡¢³Æ¡¹¤Î³äÅö¤Æ¤Î¸å¤Ç¤³¤ì¤é¤Î¥¨¥ó¥È¥ê¤¬²õ¤ì¤¿¤È¤ß¤Ê¤¹¤Ù¤­¤Ç¤¹¡£ ¹àÌܤκǽé¤Î³äÅö¤Æ¤Î¸å¤Ç¤Ï¡¢0 ¤Ë¥¯¥ê¥¢¤µ¤ì¤Æ¤¤¤Þ¤¹¡£ ¤·¤«¤·¤½¤ì¤Ë³¤¯³äÅö¤Æ¤Ç¤Ï¡¢ ºÇ¶á²òÊü¤µ¤ì¤¿¤â¤Î¤¬ÆâÍÆ¤È¤·¤Æ»Ä¤Ã¤Æ¤¤¤ë¤Ç¤·¤ç¤¦¤¬¡¢ Á°½Ò¤Î¥Õ¥£¡¼¥ë¥É¤ÏÎã³°¤Ç¤¹¡£ .Pp -¥¾¡¼¥ó¤Ï¥Ö¡¼¥È¥×¥í¥»¥¹¤¬¤É¤ì¤À¤±¿ÊĽ¤·¤Æ¤¤¤ë¤«¤Ë°Í¸¤·¤Æ¡¢ -2 ¤Ä¤Îήµ·¤Î¤¦¤Á¤Î°ìÊý¤ÇºîÀ®¤µ¤ì¤Þ¤¹¡£ -.Pp -VM ¥·¥¹¥Æ¥à¤¬´°Á´¤Ë½é´ü²½¤µ¤ì¤Æ¤¤¤ë¾ì¹ç¤Ë¤Ï¡¢ -.Fn zinit -¤ò»ÈÍѤ·¤ÆÆ°Åª¤Ë³äÅö¤Æ¤é¤ì¤¿¥¾¡¼¥ó¤¬ºîÀ®¤Ç¤­¤Þ¤¹¡£ +.Fn uma_zcreate +´Ø¿ô¤Ï¡¢¤³¤ì¤«¤é¹àÌܤ¬³äÅö¤Æ¤é¤ì¤ë¤³¤È¤¬²Äǽ¤Ê¿·¤·¤¤¥¾¡¼¥ó¤òºîÀ®¤·¤Þ¤¹¡£ .Fa name -°ú¿ô¤Ï¥¾¡¼¥ó¤Î¤¿¤á¤Îû¤¤µ­½ÒŪ¤Ê̾Á°¤Ø¤Î¥Ý¥¤¥ó¥¿¤Ç¤¢¤ë¤Ù¤­¤Ç¤¹¡£ -¤³¤ì¤ÏÅý·×¤È¥Ç¥Ð¥Ã¥®¥ó¥°ÌÜŪ¤Î¤¿¤á¤Ë»ÈÍѤµ¤ì¤Þ¤¹¡£ -.Fa size -¤ª¤è¤Ó -.Fa nentries -¤Ï¤½¤ì¤¾¤ì¡¢¥¾¡¼¥ó¤Ë¤è¤Ã¤ÆÊÝ»ý¤µ¤ì¤ë¹àÌܤÎÂ礭¤µ¤ª¤è¤Ó¤½¤Î¥¾¡¼¥ó¤Î -½é´ü¤ÎÂ礭¤µ (¹àÌÜ¿ô¤Ç) ¤Ç¤¹¡£ -³ä¤ê¹þ¤ß¥³¥ó¥Æ¥­¥¹¥È¤ÎÃæ¤Ç¥¾¡¼¥ó¤«¤é¹àÌܤ¬³äÅö¤Æ¤é¤ì¤ëµ¡²ñ¤¬¤¢¤ë -¾ì¹ç¤Ë¤Ï¡¢ -.Fa flags -°ú¿ô¤Ï -.Dv ZONE_INTERRUPT -¤ËÀßÄꤵ¤ì¤ë¤Ù¤­¤Ç¤¹¡£ -¤³¤Î¾ì¹ç¡¢¥¾¡¼¥ó¤Ï·è¤·¤Æ -.Fa nentries -¹àÌܤè¤ê¤âÂ礭¤¯¤Ê¤é¤Ê¤¤¤³¤È¤ËÃí°Õ¤·¤Æ¤¯¤À¤µ¤¤¡£ -¾¤ÎÁ´¤Æ¤Î¾ì¹ç¤Ë¤Ï -.Fa flags -¤Ï 0 ¤ËÀßÄꤵ¤ì¤ë¤Ù¤­¤Ç¤¹¡£ -ºÇ¸å¤Î°ú¿ô -.Fa zalloc -¤Ï¥¾¡¼¥ó¤¬°ìÇդˤʤëÅ٤ˤ½¤Î¥¾¡¼¥ó¤¬Â礭¤¯¤Ê¤ë¤Ù¤­ VM ¥Ú¡¼¥¸¤Î¿ô¤ò¼¨¤·¤Þ¤¹¡£ +°ú¿ô¤Ï¥Ç¥Ð¥Ã¥°¤ª¤è¤Ó¥¹¥Æ¡¼¥¿¥¹¤Î¤¿¤á¤Î¥Æ¥­¥¹¥È¤Î¥¾¡¼¥ó̾¤Ç¤¹¡£ +¤³¤Î¥á¥â¥ê¤Ï¡¢¥¾¡¼¥ó¤Î³äÅö¤Æ¤¬²òÊü¤µ¤ì¤ë¤Þ¤Ç¤Ï¡¢²òÊü¤µ¤ì¤ë¤Ù¤­¤Ç¤Ï¤¢¤ê¤Þ¤»¤ó¡£ .Pp -VM ¥·¥¹¥Æ¥à¤¬Ì¤¤À´°Á´¤Ë½é´ü²½¤µ¤ì¤Æ¤¤¤Ê¤¤¾ì¹ç¤Ë¤Ï¡¢ -¥¾¡¼¥ó¥¢¥í¥±¡¼¥¿¤Ï¹àÌܤËʬ¤±Í¿¤¨¤ë¤¿¤á¤Î VM ¥Ú¡¼¥¸¤ò -ưŪ¤Ë³äÅö¤Æ¤ë¤³¤È¤¬¤Ç¤­¤Þ¤»¤ó¡£¤½¤Î¤¿¤á¡¢¸Æ¤Ó½Ð¤·Â¦¤¬ÀÅŪ¤Ê¹àÌܤΥס¼¥ë¤ò -¶¡µë¤¹¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£ -¤³¤Î¾ì¹ç¡¢2 ¤Ä¤ÎÃʳ¬¤Ç½é´ü²½¤¬´°Î»¤·¤Þ¤¹¡£ºÇ½é¤Ë¡¢¥¾¡¼¥ó¤ÎºÇ½é¤Î»ÈÍѤÎÁ°¤Ë -.Fn zbootinit -¤¬¸Æ¤Ó½Ð¤µ¤ì¡¢¸å¤Ç VM ¥·¥¹¥Æ¥à¤¬µ¯Æ°¤·¤¿¤È¤­¤Ë¡¢ -.Fn zinitna -¤Î¸Æ¤Ó½Ð¤·¤Ë¤è¤Ã¤Æ¤½¤Î¥¾¡¼¥ó¤Î½é´ü²½¤¬´°Î»¤µ¤ì¤Þ¤¹¡£ -.Pp -.Fn zbootinit -¤Ø¤ÎºÇ½é¤Î°ú¿ô¤Ï½é´ü²½¤µ¤ì¤ë¤Ù¤­ÀÅŪ¤Ê -.Vt "struct vm_zone" -¤Ø¤Î¥Ý¥¤¥ó¥¿¤Ç¤¹¡£ -2 ÈÖÌÜ¤È 3 ÈÖÌܤϥ¾¡¼¥ó¤Î̾Á°¤ÈÊÝ»ý¤µ¤ì¤ë¹àÌܤÎÂ礭¤µ¤Ç¤¹¡£ -4 ÈÖÌܤΰú¿ô¤Ï¥¾¡¼¥ó¤¬´°Á´¤Ë½é´ü²½¤µ¤ì¤ë¤Þ¤Ç¤Î´Ö¤Ë¥¾¡¼¥ó¥¢¥í¥±¡¼¥¿¤¬ -¤½¤³¤«¤é°ú¤­½Ð¤¹¤Ç¤¢¤í¤¦ÀÅŪ¤Ê¹àÌܤÎÇÛÎó¤Ø¤Î¥Ý¥¤¥ó¥¿¤Ç¤¹¡£ -.Fa nitems -°ú¿ô¤ÏÇÛÎóÃæ¤Î¹àÌÜ¿ô¤Ç¤¹¡£ -.Pp -.Fa zinitna -¤Ø¤Î°ú¿ô¤Ï -.Fa zinit -¤Ø¤Î¤â¤Î¤ÈƱ¤¸¤Ç¤¹¤¬¡¢½é´ü²½¤µ¤ì¤ë¤Ù¤­¥¾¡¼¥ó¤Ø¤Î¥Ý¥¤¥ó¥¿¡¢¤ª¤è¤Ó -.Dv ZONE_INTERRUPT -¤Î¾ì¹ç¤Ë¤½¤³¤«¤é¥Ú¡¼¥¸¤ò³äÅö¤Æ¤ë¤¿¤á¤Î -.Vt "struct vm_object" -¤Ø¤Î¥Ý¥¤¥ó¥¿¤¬²Ã¤ï¤Ã¤Æ¤¤¤Þ¤¹¡£ -.Pp -¥¾¡¼¥ó¤«¤é¹àÌܤò³äÅö¤Æ¤ë¤¿¤á¤Ë¤Ï¡¢Ã±½ã¤Ë¤½¤Î¥¾¡¼¥ó¤Î¥Ý¥¤¥ó¥¿¤òȼ¤Ê¤Ã¤Æ -.Fn zalloc -¤ò¸Æ¤Ó½Ð¤·¤Þ¤¹¡£¤³¤ì¤Ï¹àÌܤؤΥݥ¤¥ó¥¿¤ò¡¢¤Þ¤¿¤Ï¡¢¥¾¡¼¥ó¤ÎÃæ¤ÎÁ´¤Æ¤Î -¹àÌܤ¬»ÈÍÑÃæ¤Ç³î¤Ä¥¢¥í¥±¡¼¥¿¤¬¥¾¡¼¥ó¤òÂ礭¤¯¤Ç¤­¤Ê¤¤¤Þ¤ì¤Ê¾ì¹ç¤Ë¤Ï¡¢ +¹àÌܤϤ½¤Î¥¾¡¼¥ó¤Ø¤Î¥Ý¥¤¥ó¥¿¤òȼ¤Ê¤¦ +.Fn uma_zalloc +¤Î¸Æ½Ð¤·¤Ë¤è¤Ã¤Æ³äÅö¤Æ¤é¤ì¡¢ +.Fa flags +°ú¿ô¤Ë +.Xr malloc 9 +¤È¤·¤ÆÊ¸½ñ²½¤µ¤ì¤¿ÁªÂò¤µ¤ì¤¿¥Õ¥é¥°¤òÀßÄꤵ¤ì¤Þ¤¹¡£ +¤½¤Î¹àÌܤϤ½¤Î¥¾¡¼¥ó¤Ë²òÊü¤·Ìᤵ¤ì¤Þ¤¹¡£ +À®¸ù¤Î¾ì¹ç¤Ë¤Ï¹àÌܤؤΥݥ¤¥ó¥¿¤òÊÖ¤·¤Þ¤¹¡£ +¥¾¡¼¥óÃæ¤ÎÁ´¹àÌܤ¬»ÈÍÑÃæ¤Ç³î¤Ä¥¢¥í¥±¡¼¥¿¤¬¥¾¡¼¥ó¤ò³ÈÄ¥¤Ç¤­¤Ê¤¤µ©¤Ê¾ì¹ç¤«¡¢ +.Dv M_NOWAIT +¤¬ÌÀ¼¨¤µ¤ì¤Æ¤¤¤ë¾ì¹ç¡¢ .Dv NULL -¤ò¡¢ÊÖ¤·¤Þ¤¹¡£ -.Fn zalloc -¤Ï³ä¤ê¹þ¤ß¥»¡¼¥Õ¤Ç¤Ï¤Ê¤¤¤³¤È¤ËÃí°Õ¤·¤Æ¤¯¤À¤µ¤¤¡£ -³ä¤ê¹þ¤ß¥»¡¼¥Õ¤Ê³äÅö¤Æ¤Î¤¿¤á¤Ë¤Ï -.Fn zalloc -¤ÈƱ¤¸¥»¥Þ¥ó¥Æ¥£¥¯¥¹¤ò»ý¤Ä -.Fn zalloci -¤ò»ÈÍѤ·¤Þ¤¹¡£ +¤òÊÖ¤·¤Þ¤¹¡£ .Pp ¹àÌܤϤ½¤Î¥¾¡¼¥ó¤Ø¤Î¥Ý¥¤¥ó¥¿¤ª¤è¤Ó¤½¤Î¹àÌܤؤΥݥ¤¥ó¥¿¤òȼ¤Ê¤Ã¤¿ -.Fn zfree -¤ò¸Æ¤Ó½Ð¤·¤Ë¤è¤Ã¤Æ¡¢³äÅö¤Æ¤é¤ì¤Æ¤¤¤¿¥¾¡¼¥ó¤Ë²òÊü¤·Ìᤵ¤ì¤Þ¤¹¡£ -.Fn zalloci -¤¬»ÈÍѤµ¤ì¤Æ¹Ô¤Ê¤ï¤ì¤¿³äÅö¤Æ¤Î¾ì¹ç¤Ë¤ÏÂбþ¤¹¤ë -.Fn zfreei -´Ø¿ô¤ò»ÈÍѤ·¤Þ¤¹¡£ -.Sh Ìá¤êÃÍ -.Fn zinitna -´Ø¿ô¤ÏÀ®¸ù»þ¤Ë¤Ï 1 ¤ò¤½¤·¤Æ¼ºÇÔ»þ¤Ë¤Ï 0 ¤òÊÖ¤·¤Þ¤¹¡£ -Í£°ì¤Î¼ºÇԤξì¹ç¤Ï³ä¤ê¹þ¤ß¥»¡¼¥Õ¤Ê¥¾¡¼¥ó¤Î¤¿¤á¤Î¥¢¥É¥ì¥¹¶õ´Ö¤ò -Á°¤â¤Ã¤Æ³äÅö¤Æ¤é¤ì¤Ê¤¤¤³¤È¤Ç¤¹¡£ +.Fn uma_zfree +¤Î¸Æ¤Ó½Ð¤·¤Ë¤è¤Ã¤Æ¡¢³äÅö¤Æ¤é¤ì¤Æ¤¤¤¿¥¾¡¼¥ó¤Ë²òÊü¤·Ìᤵ¤ì¤Þ¤¹¡£ .Pp -.Fn zinit -´Ø¿ô¤Ï´°Á´¤Ë½é´ü²½¤µ¤ì¤¿ -.Vt "struct vm_zone" -¤Ø¤Î¥Ý¥¤¥ó¥¿¤ò¡¢¤Þ¤¿¤Ï -.Vt "struct vm_zone" -¤ò -.Fn malloc -¤Ç¤­¤Ê¤«¤Ã¤¿¾ì¹ç¤« -.Dv ZONE_INTERRUPT -¥Õ¥é¥°¤¬ÀßÄꤵ¤ì¤Æ¤¤¤Æ -.Fn zinitna -¤¬¥¢¥É¥ì¥¹¶õ´Ö¤ÎÁ°³äÅö¤Æ¤Ë¼ºÇÔ¤·¤¿¾ì¹ç¤Ë -.Dv NULL -¤ò¡¢ÊÖ¤·¤Þ¤¹¡£ -.Pp -.Fn zalloc +¶õ¤Ç¤¢¤ëºîÀ®¤µ¤ì¤¿¥¾¡¼¥ó¤Ï¡¢ +.Fn uma_zdestroy +¤ò»ÈÍѤ·¤Æ¡¢¤½¤Î¥¾¡¼¥ó¤Î¤¿¤á¤Ë³äÅö¤Æ¤é¤ì¤¿Á´¤Æ¤Î¥á¥â¥ê¤ò²òÊü¤·¤Æ¡¢ +Ç˲õ¤µ¤ì¤ë¤³¤È¤¬²Äǽ¤Ç¤¹¡£ +¤½¤Î¥¾¡¼¥ó¤«¤é +.Fn uma_zalloc +¤Ë¤è¤Ã¤Æ³äÅö¤Æ¤é¤ì¤¿¹àÌܤϡ¢¤½¤ÎÁ°¤Ë +.Fn uma_zfree +¤Ë¤è¤Ã¤Æ²òÊü¤µ¤ì¤Ê¤±¤ì¤Ð¤Ê¤ê¤Þ¤»¤ó¡£ +.Sh Ìá¤êÃÍ +.Fn uma_zalloc ´Ø¿ô¤Ï¹àÌܤؤΥݥ¤¥ó¥¿¤ò¡¢¤Þ¤¿¤Ï¥¾¡¼¥ó¤Î̤»ÈÍѹàÌܤ¬ÉÔ­¤·¤Æ¥¢¥í¥±¡¼¥¿¤¬ ¥¾¡¼¥ó¤ò³ÈÄ¥¤Ç¤­¤Ê¤¤¾ì¹ç¤Ë .Dv NULL ¤ò¡¢ÊÖ¤·¤Þ¤¹¡£ .Sh ´ØÏ¢¹àÌÜ .Xr malloc 9 .Sh Îò»Ë ¥¾¡¼¥ó¥¢¥í¥±¡¼¥¿¤Ï .Fx 3.0 ¤Ç¤Ï¤¸¤á¤ÆÅо줷¤Þ¤·¤¿¡£ +¥¹¥é¥Ö¥¢¥í¥±¡¼¥¿¤È¤·¤Æ¤Îµ¡Ç½¤Î¤¿¤á¡¢ +.Fx 5.0 +¤Çº¬ËÜŪ¤ËÊѹ¹¤µ¤ì¤Þ¤·¤¿¡£ .Sh ºî¼Ô .An -nosplit ¥¾¡¼¥ó¥¢¥í¥±¡¼¥¿¤Ï .An John S. Dyson ¤¬½ñ¤­¤Þ¤·¤¿¡£ +¥¾¡¼¥ó¥¢¥í¥±¡¼¥¿¤Ï¡¢¥¹¥é¥Ö¥¢¥í¥±¡¼¥¿¤È¤·¤Æ¤Îµ¡Ç½¤Î¤¿¤á¡¢ +.An Jeff Roberson Aq jeff@FreeBSD.org +¤¬ÂçÉôʬ¤ò½ñ¤­Ä¾¤·¤Þ¤·¤¿¡£ .Pp ¤³¤Î¥Þ¥Ë¥å¥¢¥ë¥Ú¡¼¥¸¤Ï .An Dag-Erling Co\(:idan Sm\(/orgrav Aq des@FreeBSD.org ¤¬½ñ¤­¤Þ¤·¤¿¡£ +UMA ¤Î¤¿¤á¤Ë +.An Jeroen Ruigrok van der Werven Aq asmodai@FreeBSD.org +¤¬Êѹ¹¤·¤Þ¤·¤¿¡£