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¿¡¼ µ¿ÀÛÇÑ´Ù.
|