.\" Copyright (c) 2000 Jonathan Lemon .\" 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 ``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/lib/libc/sys/kqueue. 2, v 1.1. 2.16 2002/07/02 21:05:08 mp Exp % .\" .\" $FreeBSD: doc/ja_JP.eucJP/man/man2/kqueue. 2, v 1.10 2002/07/21 22:30:43 horikawa Exp $ .Dd April 14, 2000 .Dt KQUEUE 2 .Os .Sh ¸íĪ .Nm kqueue , .Nm kevent .Nd Ä¿³Î À̺¥Æ® ÅëÁö ¸ÞÄ«´ÏÁò .Sh ÇÁ·Î±×·¥ ¶óÀ̺귯¸® .Lb libc .Sh ¼­½Ä .In sys/types.h .In sys/event.h .In sys/time.h .Ft int .Fn kqueue "void" .Ft int .Fn kevent "int kq" "const struct kevent *changelist" "int nchanges" "struct kevent *eventlist" "int nevents" "const struct timespec *timeout" .Fn EV_SET "&kev" ident filter flags fflags data udata .Sh ÇØ¼³ .Fn kqueue (Àº)´Â, ÇÊÅÍ·Î ºÒ¸®´Â ÀÛÀº Ä¿³Î ÄÚµåÀÇ ½ÇÇà °á°ú¿¡ ±Ù°ÅÇØ, À̺¥Æ®ÀÇ ¹ß»ýÀ̳ª ÀÖ´Â »óÅÂÀÇ ¼º¸³À» À¯Àú¿¡°Ô ÅëÁöÇÏ´Â ÀϹÝÀûÀÎ ¹æ¹ýÀ» Á¦°øÇÕ´Ï´Ù. kevent ´Â (ident, filter)ÀÇ Æä¾î¿¡ ÀÇÇØ ½Äº°µË´Ï´Ù. ¿©±â¼­, ident ´Â ½Äº°ÀÚ, filter ´Â ÇÊÅ͸¦ ³ªÅ¸³À´Ï´Ù. 1 °³ÀÇ kqueue ¿¡´Â, °°Àº kevent °¡ º¹¼ö Á¸ÀçÇÒ ¼ö ¾ø½À´Ï´Ù. .Pp ÇÊÅÍ´Â, kevent ÀÇ Ãʱ⠵î·Ï½Ã¿¡ ÀÌÀüºÎÅÍ Á¸ÀçÇÑ »óŸ¦ °ËÃâÇϱâ À§Çؼ­ ½ÇÇàµË´Ï´Ù. ¶Ç, ¾î´À À̺¥Æ®°¡ Æò°¡¸¦ À§Çؼ­(¶§¹®¿¡) ÇÊÅÍ¿¡°Ô °Ç³×Áú ¶§¸¶´Ù ½ÇÇàµË´Ï´Ù. »óŸ¦ º¸°í ÇØ¾ß ÇÑ´Ù°í ÇÊÅͰ¡ °áÁ¤µÇ¾úÀ» °æ¿ì¿¡´Â, ±× kevent ´Â À¯Àú°¡ ȸ¼öÇÒ ¼ö ÀÖµµ·Ï(µíÀÌ) kqueue ¿¡ ³õ¿©Áý´Ï´Ù. .Pp À¯Àú°¡ kqueue ·ÎºÎÅÍ kevent ¸¦ ȸ¼öÇÏ·Á°í ÇßÀ» ¶§¿¡µµ, ÇÊÅͰ¡ ½ÇÇàµË´Ï´Ù. ÇÊÅÍÀÇ ½ÇÇà¿¡ ÀÇÇØ, ±× À̺¥Æ®¸¦ ¹æ¾Æ¼è ÇÑ »óŰ¡ ¼º¸³Çϰí ÀÖÁö ¾Ê´Â °Í ÇÏÁö¸¸ ³ªÅ¸³µÀ» °æ¿ì¿¡´Â, ±× kevent ´Â kqueue ·ÎºÎÅÍ »èÁ¦µÇ¾î À¯Àú¿¡°Ô °Ç³×ÁöÁö ¾Ê½À´Ï´Ù. .Pp ÇÊÅ͸¦ ¹æ¾Æ¼è ÇÏ´Â À̺¥Æ®°¡ ´Ù¼ö ÀÖ´Â °æ¿ì¿¡¼­µµ, kqueue ¾È¿¡ kevent °¡ º¹¼ö ³õ¿©Áö´Â °ÍÀº ¾Æ´Õ´Ï´Ù. ´ë½Å¿¡, ÇÊÅÍ´Â º¹¼öÀÇ À̺¥Æ®¸¦ ´ÜÀÏÀÇ kevent ±¸Á¶Ã¼¿¡ ¸ðÀ¾´Ï´Ù. ÆÄÀÏ ±â¼úÀÚ¿¡ ´ëÇÑ´Ù .Fn close ÀÇ È£ÃâÀº, ±× ±â¼úÀÚ¸¦ ÂüÁ¶Çϰí ÀÖ´Â ¸ðµç kevent ¸¦ »èÁ¦ÇÕ´Ï´Ù. .Pp .Fn kqueue (Àº)´Â ½Å±ÔÀÇ Ä¿³Î À̺¥Æ® Å¥¸¦ »ý¼ºÇØ ±â¼úÀÚ¸¦ µ¹·ÁÁÝ´Ï´Ù. Å¥´Â .Xr fork 2 ±×¸®°í »ý¼ºµÈ child process¿¡´Â °è½ÂµÇÁö ¾Ê½À´Ï´Ù. ±×·¸Áö¸¸, .Dv RFFDG Ç÷¡±×¾øÀÌ .Xr rfork 2 ÇÏÁö¸¸ ºÒ·Á °¬À» °æ¿ì¿¡´Â, ±â¼úÀÚ Å×À̺íÀÌ °øÀ¯µÇ¾î 2 °³(»ì)ÀÇ ÇÁ·Î¼¼½º°£¿¡ kqueue ÀÇ °øÀ¯°¡ °¡´ÉÇÏ°Ô µË´Ï´Ù. .Pp .Fn kevent (Àº)´Â, Å¥¿¡ À̺¥Æ®¸¦ µî·ÏÇØ, º¸·ùÁßÀÇ ¸ðµç À̺¥Æ®¸¦ À¯Àú¿¡°Ô µ¹·ÁÁÖ±â À§Çؼ­(¶§¹®¿¡) »ç¿ëµË´Ï´Ù. .Fa changelist ÇÏ .Va kevent ±¸Á¶Ã¼ÀÇ ¹è¿­¿¡ÀÇ Æ÷ÀÎÅÍÀÔ´Ï´Ù. ÀÌ ±¸Á¶Ã¼´Â .Aq Pa sys/event.h ±×¸®°í Á¤Àǵǰí ÀÖ½À´Ï´Ù. º¸·ùÁßÀÇ À̺¥Æ®¸¦ Å¥·ÎºÎÅÍ ÀоîµéÀ̱â Àü¿¡, .Fa changelist ¿¡ Æ÷ÇԵǾî ÀÖ´Â ¸ðµç º¯°æÀ» Àû¿ëÇÕ´Ï´Ù. .Fa nchanges ÇÏ .Fa changelist ÀÇ Å©±â¸¦ ÁÝ´Ï´Ù. .Fa eventlist (Àº)´Â kevent ±¸Á¶Ã¼ÀÇ ¹è¿­¿¡ÀÇ Æ÷ÀÎÅÍÀÔ´Ï´Ù. .Fa nevents ÇÏ .Fa eventlist ÀÇ Å©±â¸¦ °áÁ¤ÇÕ´Ï´Ù. .Fa timeout ÇÏÁö¸¸ NULL °¡ ¾Æ´Ñ Æ÷ÀÎÅÍÀÇ °æ¿ì¿¡´Â, timespec ±¸Á¶Ã¼ÀÌ´Ù°í ÇØ¼®µÇ¾î, À̺¥Æ®¸¦ ±â´Ù¸®´Â ÃÖ´ë ´ë±â ½Ã°£À» ÁöÁ¤ÇÕ´Ï´Ù. .Fa timeout ÇÏÁö¸¸ NULL Æ÷ÀÎÅÍÀÇ °æ¿ì¿¡´Â, .Fn kevent (Àº)´Â ¹«±âÇÑÀ¸·Î ±â´Ù¸³´Ï´Ù. Æú¸µÀÇ È¿°ú¸¦ ¾ò±â À§Çؼ­(¶§¹®¿¡)´Â, .Fa timeout Àμö¿¡, 0 À» ³ªÅ¸³½´Ù .Va timespec ±¸Á¶Ã¼¸¦ °¡¸®Å°´Â ºñ NULL ÀÇ Æ÷ÀÎÅ͸¦ ÁÖ¾î¾ß ÇÕ´Ï´Ù. .Fa changelist (¿Í)°ú .Fa eventlist ¿ëÀ¸·Î °°Àº ¹è¿­À» »ç¿ëÇÒ ¼ö°¡ ÀÖ½À´Ï´Ù. .Pp .Fn EV_SET (Àº)´Â kevent ±¸Á¶Ã¼ÀÇ ÃʱâÈ­¸¦ °£´ÜÇÏ°Ô ÇÏ´Â ¸ÅÅ©·ÎÀÔ´Ï´Ù. .Pp .Va kevent ±¸Á¶Ã¼´Â ´ÙÀ½°ú °°ÀÌ Á¤Àǵǰí ÀÖ½À´Ï´Ù. .Bd -literal struct kevent { uintptr_t ident; /* ÀÌ À̺¥Æ®ÀÇ ½Äº°ÀÚ */ short filter; /* À̺¥Æ®ÀÇ ÇÊÅÍ */ u_short flags; /* kqueue ÀÇ ¾×¼Ç Ç÷¡±× */ u_int fflags; /* ÇÊÅÍ Ç÷¡±×Ä¡ */ intptr_t data; /* ÇÊÅÍ µ¥ÀÌÅÍÄ¡ */ void *udata; /* ºÒÅõ¸íÇÑ À¯Àú µ¥ÀÌÅÍ ½Äº°ÀÚ */ }; .Ed .Pp .Fa struct kevent ÀÇ Çʵå´Â ÀÌÇÏ¿Í °°½À´Ï´Ù. .Bl -tag -width XXXfilter .It ident ÀÌ À̺¥Æ®¸¦ ½Äº°Çϱâ À§Çؼ­ »ç¿ëµÇ´Â °ªÀÔ´Ï´Ù. ¾ö¹ÐÇÑ ÇØ¼®Àº ¿¬°á½Ãų ¼ö ÀÖ¾ú´ø ÇÊÅÍ¿¡ ÀÇÇØ °áÁ¤µË´Ï´Ù¸¸, º¸ÅëÀº ÆÄÀÏ ±â¼úÀڷμ­ ÇØ¼®µË´Ï´Ù. .It filter ÀÌ À̺¥Æ®¸¦ ó¸®Çϱâ À§Çؼ­ »ç¿ëµÇ´Â Ä¿³Î ÇÊÅ͸¦ ½Äº°ÇÕ´Ï´Ù. ¹Ì¸® Á¤ÀÇµÈ ½Ã½ºÅÛ ÇÊÅÍ´Â Èļú µÇ¾î ÀÖ½À´Ï´Ù. .It flags À̺¥Æ® ¹ß»ý½Ã¿¡ ½ÇÇàÇØ¾ß ÇÒ ¾×¼ÇÀÔ´Ï´Ù. .It fflags ÇÊÅÍ °íÀ¯ÀÇ Ç÷¡±×ÀÔ´Ï´Ù. .It data ÇÊÅÍ °íÀ¯ÀÇ µ¥ÀÌÅÍÀÇ °ªÀÔ´Ï´Ù. .It udata º¯°æµÇÁö ¾Ê°í Ä¿³ÎÀ» ÅëÇØ °Ç³×¹Þ´Â ºÒÅõ¸íÇÑ À¯Àú Á¤ÀÇÀÇ °ªÀÔ´Ï´Ù. .El .Pp .Va flags Çʵå´Â ÀÌÇÏÀÇ °ªÀ» Æ÷ÇÔÇÒ ¼ö°¡ ÀÖ½À´Ï´Ù. .Bl -tag -width XXXEV_ONESHOT .It EV_ADD À̺¥Æ®¸¦ kqueue ¿¡ Ãß°¡ÇÕ´Ï´Ù. ±âÁ¸ÀÇ À̺¥Æ®¸¦ ´Ù½Ã Ãß°¡Çϸé(ÀÚ), ¿øÀÇ À̺¥Æ®ÀÇ ÆÄ¶ó¹ÌÅͰ¡ º¯°æµË´Ï´Ù. Áߺ¹ ÇÏ´Â ¿£Æ®¸®°¡ »ý±â´Â °ÍÀº ¾Æ´Õ´Ï´Ù. À̺¥Æ®¸¦ Ãß°¡Çϸé(ÀÚ), EV_DISABLE Ç÷¡±×¿¡ ÀÇÇØ µ¡¾²±âµÇÁö ¾Ê´Â ÇÑÀº ÀÚµ¿ÀûÀ¸·Î À¯È¿ÇÏ°Ô µË´Ï´Ù. .It EV_ENABLE À̺¥Æ®°¡ ¹æ¾Æ¼è µÇ¾úÀ» °æ¿ì¿¡, .Fn kevent ÇÏÁö¸¸ ±× À̺¥Æ®¸¦ µ¹·ÁÁÖ´Â °ÍÀ» Çã°¡ÇÕ´Ï´Ù. .It EV_DISABLE À̺¥Æ®¸¦ ¹«È¿·Î ÇÕ´Ï´Ù. À̰Ϳ¡ ÀÇÇØ .Fn kevent (Àº)´Â ±× À̺¥Æ®¸¦ µ¹·ÁÁÖÁö ¾Ê°Ô µË´Ï´Ù. ÇÊÅÍ ÀÚ½ÅÀº ¹«È¿·Î µÇÁö ¾Ê½À´Ï´Ù. .It EV_DELETE kqueue ·ÎºÎÅÍ À̺¥Æ®¸¦ »èÁ¦ÇÕ´Ï´Ù. ÆÄÀÏ ±â¼úÀÚ°¡ ¿¬°á½Ãų ¼ö ÀÖ°í ÀÖ´Â À̺¥Æ®´Â, ±× ±â¼úÀÚÀÇ ¸¶Áö¸· Ŭ·Î¿ìÁî½Ã¿¡ ÀÚµ¿ÀûÀ¸·Î »èÁ¦µË´Ï´Ù. .It EV_ONESHOT ÇÊÅͰ¡ ÃÖÃÊ ¹æ¾Æ¼è µÇ¾úÀ» ¶§¿¡ ¸¶¼Å, À̺¥Æ®°¡ µ¹¾Æ°¡µµ·Ï(µíÀÌ) ÇÕ´Ï´Ù. À¯Àú°¡ À̺¥Æ®¸¦ kqueue ·ÎºÎÅÍ È¸¼öÇÑ ´ÙÀ½¿¡, ±× À̺¥Æ®´Â »èÁ¦µË´Ï´Ù. .It EV_CLEAR À¯Àú°¡ À̺¥Æ®¸¦ ȸ¼öÇÑ ÈÄ¿¡, ±× »óŸ¦ ¸®¼ÂÆ® ÇÕ´Ï´Ù. À̰ÍÀº ÇöÀç »óŰ¡ ¾Æ´Ï°í, »óÅÂÀÇ º¯È­¸¦ º¸°íÇÏ´Â ÇÊÅÍ¿¡ À¯¿ëÇÕ´Ï´Ù. ¸î°³ÀÇ ÇÊÅÍ´Â ³»ºÎ¿¡¼­ ÀÌ Ç÷¡±×¸¦ ÀÚµ¿ÀûÀ¸·Î ¼¼Æ® Çϰí ÀÖ´Ù ÀÏÁöµµ ¸ð¸£´Â °Í¿¡ ÁÖÀÇÇØ ÁÖ¼¼¿ä. .It EV_EOF ±× ÇÊÅÍ °íÀ¯ÀÇ EOF »óÅÂÀÎ °ÍÀ» ³ªÅ¸³»±â À§Çؼ­(¶§¹®¿¡), ÇÊÅͰ¡ ÀÌ Ç÷¡±×¸¦ ¼¼Æ® ÇÏ´Â ÀÏÀÌ ÀÖ½À´Ï´Ù. .It EV_ERROR ÈļúÀÇ .Sx ¹Ýȯ°ª (À»)¸¦ ÂüÁ¶ÇØ ÁÖ¼¼¿ä. .El .Pp ¹Ì¸® Á¤ÀÇµÈ ½Ã½ºÅÛ ÇÊÅ͸¦ ´ÙÀ½¿¡ ³ªÅ¸³À´Ï´Ù. Àμö´Â kevent ±¸Á¶Ã¼ÀÇ .Va fflags ¹× .Va data Çʵ带 °æÀ¯ÇØ ±³È¯ÇÒ ¼ö°¡ ÀÖ½À´Ï´Ù. .Bl -tag -width EVFILT_SIGNAL .It EVFILT_READ ½Äº°ÀÚ¿¡ ±â¼úÀÚ¸¦ Àμö·Î¼­ ÃëÇÕ´Ï´Ù. Àоîµé¿© °¡´ÉÇÑ µ¥ÀÌÅͰ¡ ÀÖÀ» ¶§ µ¹¾Æ¿É´Ï´Ù. ÀÌ ÇÊÅÍÀÇ ÇൿÀº, ±× ±â¼úÀÚÀÇ ÇüÅ¿¡ ÀÇÇØ Á¶±Ý ´Ù¸¨´Ï´Ù. .Pp .Bl -tag -width 2n .It ¼ÒÄÏ »çÀü¿¡ .Fn listen ¿¡°Ô °Ç³×Áø ¼ÒÄÏÀÇ °æ¿ì, º¸·ùÁßÀÇ ´ÙÀ½ÀÇ Á¢¼ÓÀÌ ÀÖÀ» ¶§ µ¹¾Æ¿É´Ï´Ù. .Va data ¿¡´Â listen ÀÇ ¹é ·Î±× (backlog)ÀÇ Å©±â°¡ µé¾î°¡ ÀÖ½À´Ï´Ù. .Pp ±× ¿ÜÀÇ ¼ÒÄÏ ±â¼úÀÚÀÇ °æ¿ì, ¼ÒÄÏ ¹öÆÛÀÇ .Dv SO_RCVLOWAT ÀÇ °ªÀ» ±âÁØÀ¸·Î ÇØ, ÀоîµéÀÌ´Â µ¥ÀÌÅͰ¡ ÀÖÀ» ¶§ µ¹¾Æ¿É´Ï´Ù. ÇÊÅ͸¦ Ãß°¡ÇÒ °æ¿ì¿¡, .Va fflags ¿¡ NOTE_LOWAT ¸¦ ¼³Á¤ÇØ .Va data ¿¡ »õ·Î¿î ÃÖÀú ±âÁØÄ¡¸¦ ÁöÁ¤ÇÏ´Â °ÍÀ¸·Î½á, ÀÌ °ªÀ», ÇÊÅ͸¶´ÙÀÇ ÃÖÀú ±âÁØÄ¡·Î µ¡¾²±âÇÏ´Â °ÍÀÌ °¡´ÉÇÕ´Ï´Ù. µ¹¾Æ¿Ã ¶§´Â, .Va data ¿¡´Â ¼ÒÄÏ ¹öÆÛ¾ÈÀÇ ¹ÙÀÌÆ®¼ö°¡ µé¾î°¡ ÀÖ½À´Ï´Ù. .Pp ¼ÒÄÏÀÇ ÀбâÃøÀÌ Àý´Ü µÇ¾úÀ» °æ¿ì¿¡´Â, ÇÊÅÍ´Â .Va flags ¿¡ EV_EOF µµ ¼³Á¤ÇÕ´Ï´Ù. ¿©±â¼­ ¿¡·¯°¡ ÀϾÀ» °æ¿ì¿¡´Â, .Va fflags ¿¡ ¼ÒÄÏ ¿¡·¯¸¦ µ¹·ÁÁÝ´Ï´Ù. ¼ÒÄÏ ¹öÆÛ¾È¿¡ º¸·ùÁßÀÇ µ¥ÀÌÅͰ¡ ³²¾Æ À־, (Á¢¼ÓÀÌ ²÷¾îÁø °ÍÀ» ³ªÅ¸³½´Ù) EOF °¡ µ¹·ÁÁÖ¾îÁö´Â ÀÏÀÌ ÀÖ½À´Ï´Ù. .It vnode ÆÄÀÏ Æ÷ÀÎÅͰ¡ ÆÄÀÏÀÇ ÃÖÈÄ (EOF)°¡ ¾Æ´Ò ¶§¿¡ µ¹¾Æ¿É´Ï´Ù. .Va data (Àº)´Â ÇöÀç À§Ä¡·ÎºÎÅÍ ÆÄÀÏÀÇ ÃÖÈÄ (EOF)±îÁöÀÇ ¿ÀÇÁ¼Â(offset)°¡ µé¾î°¡ ÀÖ½À´Ï´Ù. ÀÌ °ªÀº ºÎÀÏÁöµµ ¸ð¸¨´Ï´Ù. .It FIFO ¿Í ÆÄÀÌÇÁ Àоîµé¿©¾ß ÇÒ µ¥ÀÌÅͰ¡ ÀÖÀ» ¶§ µ¹¾Æ¿É´Ï´Ù. .Va data ¿¡´Â À¯È¿ÇÑ ¹ÙÀÌÆ®¼ö°¡ µé¾î°¡ ÀÖ½À´Ï´Ù. .Pp ¸¶Áö¸· ±âÀÔÃøÀÌ Àý´Ü ÇßÀ» ¶§¿¡, ÇÊÅÍ´Â .Va flags ¿¡ EV_EOF ¸¦ ¼¼Æ® ÇÕ´Ï´Ù. EV_CLEAR ¸¦ °Ç³×ÁÖ´Â °ÍÀ¸·Î, ÀÌ Ç÷¡±×¸¦ Ŭ¸®¾î ÇÒ ¼ö°¡ ÀÖ¾î ÇÊÅÍ´Â µ¥ÀÌÅ͸¦ ÀоîµéÀÏ ¼ö ÀÖµµ·Ï(µíÀÌ) µÇ´Â °ÍÀ» µ¹¾Æ¿ÀÁö ¾Ê°í ´Ù½Ã ±â´Ù¸³´Ï´Ù. .El .It EVFILT_WRITE ½Äº°ÀÚ¿¡ ±â¼úÀÚ¸¦ Àμö·Î¼­ ÃëÇÕ´Ï´Ù. ±× ±â¼úÀÚ°¡ ±âÀÔÇØ °¡´ÉÇÏ°Ô µÉ ¶§¸¶´Ù µ¹¾Æ¿É´Ï´Ù. ¼ÒÄÏ, ÆÄÀÌÇÁ ¹× FIFO ¿¡¼­´Â, .Va data ¿¡´Â ±âÀÔ ¹öÆÛÀÇ ³ª¸ÓÁö areaÀÇ Å©±â°¡ µé¾î°¡ ÀÖ½À´Ï´Ù. ÀбâÃøÀÌ Àý´Ü ÇßÀ» ¶§¿¡, ÇÊÅÍ´Â EV_EOF ¸¦ ¼¼Æ® ÇÕ´Ï´Ù. FIFO ÀÇ °æ¿ì, EV_CLEAR ¸¦ »ç¿ëÇØ À̰ÍÀ» Ŭ¸®¾î ÇÒ ¼ö°¡ ÀÖ½À´Ï´Ù. ÀÌ ÇÊÅÍ´Â vnode ¸¦ ¼­Æ÷Æ®Çϰí ÀÖÁö ¾Ê´Â °Í¿¡ ÁÖÀÇÇØ ÁÖ¼¼¿ä. .Pp ¼ÒÄÏÀÇ °æ¿ì, ÃÖÀú ±âÁØÄ¡ ¹× ¼ÒÄÏ ¿¡·¯ÀÇ Ãë±ÞÀº EVFULT_READ ÀÇ °æ¿ì¿Í °°½À´Ï´Ù. .It EVFILT_AIO ºñµ¿±â ÀÔÃâ·Â ¸®Äù½ºÆ®ÀÇ sigevent ºÎºÐÀÇ, .Va sigev_notify_kqueue ¿¡´Â À̺¥Æ®¸¦ ºÎ°¡ÇÏ´Â kqueue ÀÇ ±â¼úÀÚ¸¦ ³Ö¾î .Va sigev_value ¿¡´Â udata ÀÇ °ªÀ» ÀԱݽÃÄÑ .Va sigev_notify ¿¡´Â SIGEV_KEVENT ¸¦ ³Ö¾î, ºñµ¿±â ÀÔÃâ·Â ¸®Äù½ºÆ®¸¦ ¹¯½À´Ï´Ù. aio_* ÇÔ¼ö°¡ ºÒ·Á °¬À» ¶§, ±× À̺¥Æ®´Â ÁöÁ¤µÈ kqueue ¿¡ µî·ÏµË´Ï´Ù. aio_* ÇÔ¼ö°¡ µ¹·ÁÁÖ¾ú´Ù .Fa aiocb ±¸Á¶Ã¼¸¦ .Va ident Àμö¿¡ ¼¼Æ® ÇÕ´Ï´Ù. ÀÌ ÇÊÅÍ´Â aio_error ¿Í °°Àº Á¶°ÇÀ¸·Î µ¹¾Æ¿É´Ï´Ù. .Pp ´Ù¸¥ ¹æ¹ýÀ¸·Î¼­ .Va ident ¿¡ kqueue ±â¼úÀÚ¸¦ ³Ö¾î kevent ±¸Á¶Ã¼¸¦ ÃʱâÈ­ÇØ, ±× ÁÖ¼Ò¸¦ ºñµ¿±â ¸®Äù½ºÆ®ÀÇ .Va aio_lio_opcode Çʵ忡 µÎ´Â Àϵµ °¡´ÉÇÕ´Ï´Ù. ±×·¸Áö¸¸, ÀÌ Á¢±Ù´Â 64 ºñÆ® Æ÷ÀÎÅÍÀÇ ¾ÆÅ°ÅØÃÄ¿¡¼­´Â µ¿ÀÛÇÏÁö ¾ÊÀ» °ÍÀÔ´Ï´Ù ÇØ, ¸ñÇ¥·Î ÇØ¾ß ÇÏ´Â °ÍÀÌ ¾Æ´Õ´Ï´Ù. .It EVFILT_VNODE ÆÄÀÏ ±â¼úÀÚ¸¦ ½Äº°ÀÚ¿¡, °¨½ÃÇÏ´Â À̺¥Æ®¸¦ .Va fflags ¿¡ Àμö·Î¼­ ÃëÇÕ´Ï´Ù. ÁöÁ¤ÇÑ ±â¼úÀÚ¿¡ ´ëÇØ ¿ä±¸µÈ À̺¥Æ®°¡ 1 °³ ÀÌ»ó ¹ß»ýÇßÀ» ¶§¿¡ µ¹¾Æ¿É´Ï´Ù. °¨½ÃÇÏ´Â À̺¥Æ®¸¦ ÀÌÇÏ¿¡ ³ªÅ¸³À´Ï´Ù. .Bl -tag -width XXNOTE_RENAME .It NOTE_DELETE ±â¼úÀÚ°¡ ÂüÁ¶ÇÏ´Â ÆÄÀÏ¿¡ ´ëÇØ .Fn unlink ÇÏÁö¸¸ ºÒ·È½À´Ï´Ù. .It NOTE_WRITE ±â¼úÀÚ°¡ ÂüÁ¶ÇÏ´Â ÆÄÀÏ¿¡ ´ëÇØ ±âÀÔÀÌ ÀϾ½À´Ï´Ù. .It NOTE_EXTEND ±â¼úÀÚ°¡ ÂüÁ¶ÇÏ´Â ÆÄÀÏÀÇ »çÀÌÁî°¡ È®ÀåµÇ¾ú½À´Ï´Ù. .It NOTE_ATTRIB ±â¼úÀÚ°¡ ÂüÁ¶ÇÏ´Â ÆÄÀÏÀÇ ¼Ó¼ºÀÌ º¯°æµÇ¾ú½À´Ï´Ù. .It NOTE_LINK ÆÄÀÏÀÇ ¸µÅ©¼ö°¡ º¯°æµÇ¾ú½À´Ï´Ù. .It NOTE_RENAME ±â¼úÀÚ°¡ ÂüÁ¶ÇÏ´Â ÆÄÀÏÀÌ rename µÇ¾ú½À´Ï´Ù. .It NOTE_REVOKE ÆÄÀÏ¿¡ÀÇ ¾×¼¼½º°¡ .Xr revoke 2 ¿¡ ÀÇÇØ ¹«È¿·Î µÇ¾ú´ÂÁö, ȤÀº, ÇÏÀ§ÃþÀÇ ÆÄÀÏ ½Ã½ºÅÛÀÌ mount µÇ°í ÀÖÁö ¾Ê½À´Ï´Ù. .El .Pp µ¹¾Æ¿Ã ¶§, .Va fflags ¿¡ ÇÊÅ͸¦ ¹æ¾Æ¼è ÇÑ À̺¥Æ®°¡ µé¾î°¡ ÀÖ½À´Ï´Ù. .It EVFILT_PROC °¨½ÃÇÏ´Â ÇÁ·Î¼¼½º ID ¸¦ ½Äº°ÀÚ¿¡, °¨½ÃÇÏ´Â À̺¥Æ®¸¦ .Va fflags ¿¡ Àμö·Î¼­ ÃëÇÕ´Ï´Ù. ¿ä±¸µÈ À̺¥Æ®¸¦ 1 °³ ÀÌ»ó ÇÁ·Î¼¼½º°¡ ½ÇÇàÇÒ °æ¿ì¿¡ µ¹¾Æ¿É´Ï´Ù. ¾î´À ÇÁ·Î¼¼½º°¡ ´Ù¸¥ ÇÁ·Î¼¼½º¸¦ Á¤»óÀûÀ¸·Î º¼ ¼ö°¡ ÀÖ´Â °æ¿ì¿¡´Â, À̺¥Æ®¸¦ ±× ÇÁ·Î¼¼½º¿¡ ¿¬°á½Ãų ¼ö°¡ ÀÖ½À´Ï´Ù. °¨½ÃÇÏ´Â À̺¥Æ®¸¦ ´ÙÀ½¿¡ ³ªÅ¸³À´Ï´Ù. .Bl -tag -width XXNOTE_TRACKERR .It NOTE_EXIT ÇÁ·Î¼¼½º°¡ Á¾·áÇß½À´Ï´Ù. .It NOTE_FORK ÇÁ·Î¼¼½º°¡ .Fn fork (À»)¸¦ ºÒ·¶½À´Ï´Ù. .It NOTE_EXEC ÇÁ·Î¼¼½º°¡ .Xr execve 2 ¶Ç´Â À¯»çÇÑ È£Ãâ¿¡ ÀÇÇØ, ½Å±ÔÀÇ ÇÁ·Î¼¼½º¸¦ ½ÇÇàÇß½À´Ï´Ù. .It NOTE_TRACK .Fn fork ÀÇ È£ÃâÀ» ³Ñ¾î, ÇÁ·Î¼¼½º¸¦ ÃßÀûÇÕ´Ï´Ù. parent process´Â .Va fflags Çʵ忡 NOTE_TRACK ¸¦ ¼¼Æ® ÇØ µ¹¾Æ¿Í, ÇÑÆí, child process´Â .Va fflags ¿¡ NOTE_CHILD ¸¦ .Va data ¿¡ parent processÀÇ PID ¸¦ ¼¼Æ® ÇØ µ¹¾Æ¿É´Ï´Ù. .It NOTE_TRACKERR ÀÌ Ç÷¡±×´Â, ½Ã½ºÅÛÀÌ child process¿¡ÀÇ À̺¥Æ®¸¦ ¿¬°á½Ãų ¼ö°¡ ¾ø¾úÀ» ¶§¿¡ µ¹¾Æ¿É´Ï´Ù. Åë»ó, À̰ÍÀº ÀÚ¿øÀÇ Á¦ÇÑ¿¡ ÀÇÇØ »ý±é´Ï´Ù. .El .Pp µ¹¾Æ¿Ã ¶§, .Va fflags (Àº)´Â ÇÊÅ͸¦ ¹æ¾Æ¼è ÇÑ À̺¥Æ®°¡ µé¾î°¡ ÀÖ½À´Ï´Ù. .It EVFILT_SIGNAL °¨½ÃÇÏ´Â ½Ã±×³Î ¹øÈ£¸¦ ½Äº°ÀÚ¿¡ Àμö·Î¼­ ÃëÇÕ´Ï´Ù. ÁÖ¾îÁø ½Ã±×³ÎÀÌ ÇÁ·Î¼¼½º¿¡ ¹è¼ÛµÇ¾úÀ» ¶§¿¡ µ¹¾Æ¿É´Ï´Ù. À̰ÍÀº .Fn signal ¹× .Fn sigaction ÀÇ ±¸Á¶¿Í °øÁ¸ÇØ, ³·Àº ¿ì¼± ¼øÀ§¸¦ °¡Áö°í ÀÖ½À´Ï´Ù. ºñ·Ï ±× ½Ã±×³ÎÀÌ SIG_IGN ¿Í ¸¶Å© µÇ°í ÀÖ¾ú´Ù°í ÇØµµ, ÇÊÅÍ´Â ÇÁ·Î¼¼½º¿¡ ¹è¼ÛµÇ·Á°í ÇÑ ½Ã±×³Î ¸ðµÎ¸¦ ±â·ÏÇÕ´Ï´Ù. Åë»óÀÇ ½Ã±×³Î ¹è¼Û ó¸®ÀÇ µÚ¿¡, À̺¥Æ® ÅëÁö°¡ ¹ß»ýÇÕ´Ï´Ù. .Va data ¿¡´Â .Fn kevent (À»)¸¦ ¸¶Áö¸·À¸·Î È£ÃâÇÏ°í ³ª¼­ÀÇ ½Ã±×³Î ¹ß»ýÀÇ È¸¼ö°¡ µ¹¾Æ°©´Ï´Ù. ÀÌ ÇÊÅÍ´Â ³»ºÎ¿¡¼­ ÀÚµ¿ÀûÀ¸·Î EV_CLEAR Ç÷¡±×¸¦ ¼¼Æ® ÇÕ´Ï´Ù. .It EVFILT_TIMER .Va ident ±×¸®°í ½Äº°µÇ´Â, ÀÓÀÇÀÇ Å¸À̸Ӹ¦ ¼³Á¤ÇÕ´Ï´Ù. ŸÀ̸Ӹ¦ Ãß°¡ÇÏ´Â °æ¿ì, .Va data (Àº)´Â ŸÀÓ ¾Æ¿ôÀ» ¹Ð¸® ¼¼ÄÁµå ´ÜÀ§·Î ÁöÁ¤ÇÕ´Ï´Ù. EV_ONESHOT ¸¦ ÁöÁ¤ÇÏÁö ¾Ê´Â ÇÑ, ŸÀ̸Ӵ ÁÖ±âÀûÀÔ´Ï´Ù. .Va data ¿¡´Â, .Fn kevent (À»)¸¦ ¸¶Áö¸·À¸·Î È£ÃâÇÏ°í ³ª¼­ÀÇ Å¸ÀÓ ¾Æ¿ôÀÇ È¸¼ö°¡ µ¹¾Æ°©´Ï´Ù. ÀÌ ÇÊÅÍ´Â ³»ºÎ¿¡¼­ ÀÚµ¿ÀûÀ¸·Î EV_CLEAR Ç÷¡±×¸¦ ¼¼Æ® ÇÕ´Ï´Ù. .El .Sh ¹Ýȯ°ª .Fn kqueue (Àº)´Â ½Å±ÔÀÇ Ä¿³Î À̺¥Æ® Å¥¸¦ »ý¼ºÇØ, ÆÄÀÏ ±â¼úÀÚ¸¦ µ¹·ÁÁÝ´Ï´Ù. Ä¿³Î À̺¥Æ® Å¥ÀÇ »ý¼º½Ã¿¡ ¿¡·¯°¡ ÀÖ¾úÀ» °æ¿ì¿¡´Â, °ª -1 ÀÌ µ¹·ÁÁÖ¾îÁ® errno °¡ ¼¼Æ® µË´Ï´Ù. .Pp .Fn kevent ÇÏ .Fa eventlist ¿¡ ¹è¿­µÇ°í ÀÖ´Â À̺¥Æ®ÀÇ ¼ö¸¦ µ¹·ÁÁÝ´Ï´Ù. ÀÌ ¼ö´Â, ÃÖ´ë .Fa nevents ±×¸®°í ÁÖ¾îÁø °ª±îÁöÀÔ´Ï´Ù. .Fa changelist ÀÇ ¿ä¼ÒÀÇ Ã³¸®Áß¿¡ ¿¡·¯°¡ ¹ß»ýÇØ, ÇÑÆí .Fa eventlist ¿¡ ÃæºÐÇÑ ¿©Áö°¡ ÀÖ´Â °æ¿ì¿¡´Â, .Va flags ¿¡ .Dv EV_ERROR ÇÏÁö¸¸ ¼¼Æ® µÇ¾î .Va data ¿¡ ½Ã½ºÅÛ ¿ì·ù°¡ ¼¼Æ® µÈ À̺¥Æ®°¡, .Fa eventlist ¿¡ ³õ¿©Áý´Ï´Ù. ¾ÆÁÖ ¾øÀ¸¸é, .Dv -1 ÇÏÁö¸¸ µ¹·ÁÁÖ¾î .Dv errno ÇÏÁö¸¸ ¿¡·¯ »óŸ¦ ³ªÅ¸³»±â À§Çؼ­(¶§¹®¿¡) ¼¼Æ® µË´Ï´Ù. ¸¶°¨ ½Ã°£ÀÇ °æ¿ì¿¡´Â, .Fn kevent (Àº)´Â 0 À» µ¹·ÁÁÝ´Ï´Ù. .Sh ¿¡·¯ .Fn kqueue ÇÔ¼ö´Â ÀÌÇÏÀÇ °æ¿ì¿¡ ½ÇÆÐÇÕ´Ï´Ù. .Bl -tag -width Er .It Bq Er ENOMEM Ä¿³ÎÀÌ Ä¿³Ú Å¥¸¦ À§ÇÑ ÃæºÐÇÑ ¸Þ¸ð¸®ÀÇ ÇÒ´çÇØ¿¡ ½ÇÆÐÇß½À´Ï´Ù. .It Bq Er EMFILE ÇÁ·Î¼¼½ºÀÇ ±â¼úÀÚ Å×À̺íÀÌ ¸¸¹èÀÔ´Ï´Ù. .It Bq Er ENFILE ½Ã½ºÅÛ ÆÄÀÏ Å×À̺íÀÌ ¸¸¹èÀÔ´Ï´Ù. .El .Pp .Fn kevent ÇÔ¼ö´Â ÀÌÇÏÀÇ °æ¿ì¿¡ ½ÇÆÐÇÕ´Ï´Ù. .Bl -tag -width Er .It Bq Er EACCES ÇÁ·Î¼¼½º°¡ ÇÊÅ͸¦ µî·ÏÇÏ´Â ±ÇÇÑÀ» °¡Áö°í ÀÖÁö ¾Ê½À´Ï´Ù. .It Bq Er EFAULT .Va kevent ±¸Á¶Ã¼ÀÇ Àоîµé¿© ¶Ç´Â ±âÀÔÀ¸·Î ¿¡·¯°¡ ÀÖ¾ú½À´Ï´Ù. .It Bq Er EBADF ÁöÁ¤µÈ ±â¼úÀÚ°¡ À¯È¿ÇÏÁö´Â ¾Ê½À´Ï´Ù. .It Bq Er EINTR ¸¶°¨ ½Ã°£ÀüÀ̳ª, µ¹¾Æ¿À±â À§ÇÑ ¾î¶°ÇÑ À̺¥Æ®°¡ kqueue ¿¡ ³õ¿©Áö±â Àü¿¡, ½Ã±×³ÎÀÌ ¹è¼ÛµÇ¾ú½À´Ï´Ù. .It Bq Er EINVAL ÁöÁ¤µÈ ½ÃÇÑ ¶Ç´Â ÇÊÅͰ¡ ¹«È¿ÀÔ´Ï´Ù. .It Bq Er ENOENT ¼öÁ¤ ¶Ç´Â »èÁ¦µÇ¾î¾ß ÇÒ À̺¥Æ®°¡ ¹ß°ßµÇÁö ¾Ê½À´Ï´Ù. .It Bq Er ENOMEM À̺¥Æ® µî·ÏÀ» À§ÇÑ ¸Þ¸ð¸®°¡ ¾ø½À´Ï´Ù. .It Bq Er ESRCH ¿¬°á½Ã۱â À§Çؼ­(¶§¹®¿¡) ÁöÁ¤ÇÑ ÇÁ·Î¼¼½º°¡ Á¸ÀçÇÏÁö ¾Ê½À´Ï´Ù. .El .Sh °ü·Ã Ç׸ñ .Xr aio_error 2 , .Xr aio_read 2 , .Xr aio_return 2 , .Xr poll 2 , .Xr read 2 , .Xr select 2 , .Xr sigaction 2 , .Xr write 2 , .Xr signal 3 .Sh ¿ª»ç .Fn kqueue ¹× .Fn kevent ÇÔ¼ö´Â .Fx 4.1 ±×¸®°í óÀ½À¸·Î µîÀåÇß½À´Ï´Ù. .Sh ÀúÀÚ .Fn kqueue ½Ã½ºÅÛ°ú ÀÌ ¸Þ´º¾ó ÆäÀÌÁö´Â .An Jonathan Lemon Aq jlemon@FreeBSD.org ÇÏÁö¸¸ ½è½À´Ï´Ù. .Sh ¹ö±× ÇöÀç´Â, UFS ÆÄÀÏ ½Ã½ºÅÛ¿¡ ¼ÓÇÏÁö ¾Ê´Â´Ù .Xr vnode 9 (À»)¸¦ °¨½ÃÇÒ ¼ö°¡ ¾ø½À´Ï´Ù.