MiniportSynchronizeISR
BOOLEAN
MiniportSynchronizeISR(
IN PVOID SynchronizeContext
);
|
MiniportSynchronizeISRÀº DIRQLº¸´Ù ³·Àº °÷¿¡¼ ½ÇÇàÇÏ´Â ¾î¶² NIC µå¶óÀ̹ö ÇÔ¼ö´Â ±×·¯ÇÑ µå¶óÀ̹öÀÇ
MiniportISR ȤÀº MiniportDisableInterrupt ÇÔ¼ö¿Í ÀÚ¿øµéÀ» °øÀ¯ÇÑ´Ù¸éÀº ÇÊ¿äÇÑ ÇÔ¼öÀÌ´Ù.
¸Å°³º¯¼ö
- SynchronizeContext
- NIC µå¶óÀ̹öÀÇ MiniportXxx ȤÀº ³»ºÎ ÇÔ¼ö°¡ NdisMSynchronizeWithInterrupt¸¦ È£ÃâÇÒ ¶§ Á¦°øµÇ¾îÁö´Â
ÄÁÅØ½ºÆ® ¿µ¿ªÀ» °¡¸®Å²´Ù. Ç×»ó, ÀÌ·¯ÇÑ ÀÔ·Â ¸Å°³º¯¼ö´Â ´Ù¸¥ MiniportXxx ÇÔ¼öµé¿¡°Ô Àü´ÞµÇ¾îÁö´Â
NIC ƯÁ¤ MiniportAdapterContext ¿µ¿ª³»¿¡ offset¿¡¼ °øÀ¯µÈ ÀÚ¿øµéÀÇ set¿¡ ´ëÇÑ Æ÷ÀÎÅÍÀÌ´Ù.
¸®Åϰª
MiniportSynchronizeISRÀº NdisMSynchronizeWithInterruptÀÇ È£ÃâÀÚ¿¡°Ô Àü´ÞµÇ¾îÁö´Â µå¶óÀ̹ö °áÁ¤ Àǹ̷Î
BooleanÀ» ¸®ÅÏÇÑ´Ù.
ÁÖ¼®
¸¸¾à ¾î¶² NIC µå¶óÀ̹ö ÇÔ¼ö°¡ ÀåÄ¡ ·¹Áö½ºÅ͵é°ú °°Àº ÀÚ¿øµéÀ» µå¶óÀ̹öÀÇ MiniportISR ȤÀº MiniportDisableInterrupt
ÇÔ¼ö¿Í °øÀ¯ÇÑ´Ù¸éÀº µðÆúÆ®·Î DIRQLº¸´Ù ³·Àº °÷¿¡¼ ½ÇÇàÇÏ´Â µå¶óÀ̹ö ÇÔ¼ö´Â Á÷Á¢ ÀÌ·¯ÇÑ ÀÚ¿øµé¿¡°Ô Á¢±ÙÇÒ ¼ö
¾ø´Ù. ¸¸¾à ±×·¯ÇÑ °øÀ¯µÈ ÀÚ¿øµéÀ» Á÷Á¢ Á¢±ÙÇÏ´Â °ÍÀ» ½ÃµµÇÑ´Ù¸éÀº, ³·Àº ¿ì¼± ¼øÀ§ ÇÔ¼ö´Â ³·Àº ¿ì¼± ¼øÀ§
µå¶óÀ̹ö ÇÔ¼ö¾Æ·¡¿¡¼ºÎÅÍ »óŰ¡ º¯ÈÇÒ ¼ö ÀÖ´Â MiniportISR ȤÀº MiniportDisableInterruptÀÇ ½ÇÇà¿¡ ÀÇÇØ
¼±Á¡µÉ ¼ö ÀÖ´Ù.
MiniportISR ȤÀº MiniportDisableInterrupt·Î ±×·¯ÇÑ °øÀ¯µÈ ÀÚ¿øµé¿¡ ´ëÇÑ Á¢±ÙÀ» µ¿±âÈÇϱâ À§ÇØ, ³·Àº ¿ì¼±±Ç
µå¶óÀ̹ö ÇÔ¼öµéÀº DIRQL ¿¡¼ ÀÌ·¯ÇÑ °øÀ¯µÈ ÀÚ¿øµé¿¡ ´ëÇÑ µå¶óÀ̹öÀÇ MiniportSynchronizeISR ÇÔ¼öÀÇ Á¢±ÙÀ» °¡Áö±â
À§ÇØ NdisMSynchronizeWithInterrupt¸¦ È£ÃâÇØ¾ß ÇÑ´Ù. NdisMSynchronizeWithInterrupt¸¦ È£ÃâÇÏ´Â °ÍÀº SMP ±â°è¿¡¼
ƯÈ÷, ±×·¯ÇÑ NIC µå¶óÀ̹ö³»¿¡¼ °æÁÖ Á¶°Çµé°ú(race conditions) µ¥µå¶ôµéÀ» º¸È£ÇÑ´Ù.
±×µé »çÀÌ¿¡ ÀÚ¿øµéÀ» °øÀ¯ÇÏ´Â ¾î¶² ³·Àº ¿ì¼± ¼øÀ§ µå¶óÀ̹ö ÇÔ¼öµéÀº(DIRQL¿¡¼ ½ÇÇàÇÏ´Â ¾î¶² ÇÔ¼ö·Î°¡ ¾Æ´Ï¶ó)
±×·¯ÇÑ °øÀ¯µÈ ÀÚ¿øµéÀ» º¸È£Çϱâ À§ÇØ ½ºÇɶôÀ» »ç¿ëÇØ¾ß ÇÑ´Ù.
MiniportSynchronizeISRÀº µå¶óÀ̹öÀÇ MiniportInitialize ÇÔ¼ö°¡ NdisMRegisterInterrupt¸¦ È£ÃâÇÒ ¶§ ÇÒ´çµÈ
DIRQL¿¡¼ ½ÇÇàÇÑ´Ù. DIRQL¿¡¼ ½ÇÇàÇÏ´Â ¾î¶² µå¶óÀ̹ö ÇÔ¼ö¿Í °°ÀÌ, MiniportSynchronizeISRÀº ¾î¶² IRQL¿¡¼ È£ÃâÇϴµ¥
¾ÈÀüÇÏ°Ô ´ÜÁö ±×·¯ÇÑ NdisXxx ÇÔ¼öµéÀ» È£ÃâÇÒ ¼ö ÀÖ°í °¡´ÉÇÑÇÑ ºü¸£°Ô Á¦¾î¸¦ ¸®ÅÏÇØ¾ß ÇÑ´Ù.
|