NdisDprFreePacketNonInterlocked
VOID
NdisDprFreePacketNonInterlocked(
IN PNDIS_PACKET Packet
);
|
NdisDprFreePacketNonInterlockedÇÔ¼ö´Â µå¶óÀ̹ö ÇÒ´ç ÆÐŶ µð½ºÅ©¸³Å͸¦ ÇØÁ¦Çϰí È£ÃâÀÚ°¡ IRQL DISPATCH_LEVEL¿¡¼ µ¿À۵ɶ§ ÇÁ¸®¸®½ºÆ®·Î ±×°ÍÀ» ¸®ÅÏÇÑ´Ù. ±×¸®°í ±× È£ÃâÀÚ´Â ÆÐŶ POOL¿¡ Á¢±ÙÇϴ°Ϳ¡´ëÇØ ³»ºÎÀûÀ¸·Î µ¿±âȸ¦ Á¦°øÇÑ´Ù.
¸Å°³º¯¼ö
- Packet
- NdisDprAllocatePacketNonInterlockedÇÔ¼ö¿¡ÀÇÇØ ¸®ÅÏµÈ ÆÐŶ µð½ºÅ©¸³ÅÍÀÇ Æ÷ÀÎÅÍ.
ÁÖ¼®
NdisDprFreePacketNonInterlockedÇÔ¼ö¸¦ È£ÃâÇϱâÀü¿¡, µå¶óÀ̹ö´Â ÆÐŶ¿¡ üÀÎµÈ ¸ðµç ¹öÆÛ µð½ºÅ©¸³Å͵éÀ» ÇØÁ¦ÇϱâÀ§ÇØ ÇÊ¿äÇÑ ¸¸Å NdisFreeBufferÇÔ¼ö¸¦ È£ÃâÇØ¾ß¸¸ ÇÑ´Ù. ȤÀº ¹öÆÛ µð½ºÅ©¸³Å͵éÀÇ ¸ðµç Æ÷ÀÎÅ͵éÀ» ÀúÀåÇϱâÀ§ÇØ ÇÊ¿äÇÑ ¸¸Å NdisUnchainBufferAtXxxÇÔ¼ö¸¦ È£ÃâÇØ¾ß¸¸ ÇÑ´Ù. ±×·¸Áö ¾ÊÀ¸¸é, üÀγ»ÀÇ ¹öÆÛ µð½ºÅ©¸³Å͵é°ú °ü°èµÈ ¸Þ¸ð¸®´Â µå¶óÀ̹ö¿¡ÀÇÇØ »ç¿ëµÉ¼ö ¾ø´Ù.
NdisDprFreePacketNonInterlockedÇÔ¼öÀÇ È£ÃâÀÚ¿Í »óº¸ÀûÀÎ NdisDprAllocatePacketNonInterlockedÇÔ¼ö´Â µå¶óÀ̹ö°¡ NdisAllocatePacketPoolÇÔ¼ö·Î ÇÒ´çÇÑ ÆÐŶ POOL¿¡ Á¢±Ù ÇÏ´Â ¸ðµç µ¿±âÈ¿¡´ëÇØ Ã¥ÀÓÀÌ ÀÖ´Ù. ±×·¸Áö¾ÊÀ¸¸é, µå¶óÀ̹ö´Â NDIS°¡ NdisAllocate/FreePacket ȤÀº NdisDprAllocate/FreePacketÇÔ¼öÀÇ È£Ãâ¿¡ÀÇÇÑ ÀÌÀÍ¿¡ ÀÌ µ¿±âȸ¦ ´Ù·çµµ·Ï ÇØ¾ß¸¸ÇÑ´Ù.
ÀϹÝÀûÀ¸·Î ±×·± µå¶óÀ̹ö´Â ÆÐŶ POOLÀ» µå¶óÀ̹ö ÇÒ´ç ½ºÇÉ ¶ôÀ¸·Î º¸È£ÇÑ´Ù. NdisDprFreePacketNonInterlockedÇÔ¼öÀÇ È£ÃâÀü¿¡, µå¶óÀ̹ö´Â NdisAcquireSpinLockÇÔ¼ö¸¦ È£ÃâÇÑ´Ù. À̰ÍÀº IRQL À» DISPATCH_LEVEL·Î ¿Ã¸°´Ù. NdisDprFreePacketNonInterlockedÇÔ¼ö°¡ ÄÁÃß·²À» ¸®ÅÏÇÒ¶§, ±×·± µå¶óÀ̹ö´Â ½ºÇɶôÀ» NdisReleaseSpinLockÇÔ¼ö·Î ÇØÁ¦ÇÑ´Ù.
NdisDprFreePacketNonInterlockedÇÔ¼öÀÇ È£ÃâÀÚ´Â IRQL DISPATCH_LEVEL¿¡¼ µ¿À۵Ǿî¾ß¸¸ ÇÑ´Ù.
|