NdisInterlockedAddUlong

VOID

  NdisInterlockedAddUlong(

    IN PULONG  Addend,

    IN ULONG  Increment,

    IN PNDIS_SPIN_LOCK  SpinLock

    );

NdisInterlockedAddUlongÇÔ¼ö´Â Á¤¼öÇü °ªÀ¸·Î µ¿±âÀûÀÎ Á¢±Ù¿¡ÇÑ È£ÃâÀÚ Á¦°ø ½ºÇɶôÀ» »ç¿ëÇÏ¿© ¿øÀÚÀû(atomic) ¿¬»êÀ¸·Î½á ULONG°ªÀ» ÁÖ¾îÁø UINT·Î Ãß°¡ÇÑ´Ù.

¸Å°³º¯¼ö

Addend
ÁÖ¾îÁø Incrememt¿¡ÀÇÇØ ¸ÂÃçÁ®¾ßÇÏ´Â °ª¿¡´ëÇÑ º¯¼öÀÇ Æ÷ÀÎÅÍ.

Increment
Addend¿¡ Ãß°¡µÇ¾îÁö´Â °ªÀ» ÁöÁ¤ÇÑ´Ù.

SpinLock
È£ÃâÀÚ°¡ ÃʱâÈ­ÇÏ´Â ½ºÇɶôÀÇ Æ÷ÀÎÅÍ.

ÁÖ¼®

È£ÃâÀÚ´Â ½ºÇɶô¿¡´ëÇÑ »óÁÖ ÀúÀåÀå¼Ò¸¦ Á¦°øÇؾ߸¸ ÇÑ´Ù. À̰ÍÀº NdisInterlockedAddUlongÇÔ¼öÀÇ Ã³À½ È£ÃâÀü¿¡ NdisAllocateSpinLockÇÔ¼ö·Î ÃʱâÈ­ µÇ¾î¾ß¸¸ ÇÑ´Ù.

NdisInterlockedAddUlongÇÔ¼ö·Î ³Ñ°ÜÁø SpinLockÀº Addend¿¡ º¯¼ö¿¡ ´ëÇÑ Ãß°¡°¡ °°Àº ½ºÇɶôÀ¸·Î µ¿±âÈ­ÇÏ´Â °°Àº º¯¼ö¿¡´ëÇÑ ¾î¶² ´Ù¸¥ ¿¬»êµé¿¡´ëÇÑ Ãø¸éÀ¸·Î ¿øÀÚÀû(atomic)ÀÌ´Ù¶ó´Â °ÍÀ» È®½ÅÇϴµ¥ »ç¿ëµÈ´Ù.

NdisInterlockedAddUlongÇÔ¼ö´Â ÁÖ¾îÁø ½ºÇɶôÀ» Çã¿ëÇϰí ÄÁÃß·²À» ¸®ÅÏÇϱâÀü¿¡ óÀ½ IRQLÀ» ÀúÀåÇÒ¶§, DISPATCH_LEVEL·Î IRQLÀ» »ó½Â½ÃŲ´Ù. °á°úÀûÀ¸·Î, NdisInterlockedAddUlongÇÔ¼ö¸¦ È£ÃâÇÏ´Â ¾î¶² µå¶óÀ̹öÇÔ¼ö´Â ÆäÀÌÁöÈ­ µÉ¼öÀÖ´Â ÄÚµåÀÏ ¼ö ¾ø´Ù.

NdisInterlockedAddUlongÇÔ¼öÀÇ È£ÃâÀÚ´Â IRQL <= DISPATCH_LEVEL¿¡¼­ µ¿ÀÛÇÑ´Ù.