From 6c16e664026b76ec926e21f81f054e83027f4632 Mon Sep 17 00:00:00 2001 From: Magnus Olsen Date: Sat, 22 Mar 2008 22:11:54 +0000 Subject: [PATCH] implemented NdisScheduleWorkItem writen by me and arty svn path=/trunk/; revision=32750 --- reactos/drivers/network/ndis/ndis.def | 1 + reactos/drivers/network/ndis/ndis/stubs.c | 24 ++++++++++++++++++++++- reactos/include/ddk/ndis.h | 21 ++++++++++---------- 3 files changed, 35 insertions(+), 11 deletions(-) diff --git a/reactos/drivers/network/ndis/ndis.def b/reactos/drivers/network/ndis/ndis.def index b3d9b41cccb..357875c90b1 100644 --- a/reactos/drivers/network/ndis/ndis.def +++ b/reactos/drivers/network/ndis/ndis.def @@ -269,5 +269,6 @@ NdisWritePciSlotInformation@20 NdisWritePcmciaAttributeMemory@16 TrFilterDprIndicateReceive@28 TrFilterDprIndicateReceiveComplete@4 +NdisScheduleWorkItem@4 ; EOF diff --git a/reactos/drivers/network/ndis/ndis/stubs.c b/reactos/drivers/network/ndis/ndis/stubs.c index 3e91141d49d..a22dc167c3d 100644 --- a/reactos/drivers/network/ndis/ndis/stubs.c +++ b/reactos/drivers/network/ndis/ndis/stubs.c @@ -10,7 +10,6 @@ #include "ndissys.h" - /* * @unimplemented */ @@ -1037,4 +1036,27 @@ NdisIMInitializeDeviceInstanceEx( return NDIS_STATUS_FAILURE; } + + +VOID +STDCALL +ndisProcWorkItemHandler(PVOID pContext) +{ + PNDIS_WORK_ITEM pNdisItem = (PNDIS_WORK_ITEM)pContext; + pNdisItem->Routine(pNdisItem, pNdisItem->Context); +} + +EXPORT +NDIS_STATUS +NdisScheduleWorkItem( + IN PNDIS_WORK_ITEM pWorkItem) +{ + PWORK_QUEUE_ITEM pntWorkItem = (PWORK_QUEUE_ITEM)pWorkItem->WrapperReserved; + ExInitializeWorkItem(pntWorkItem, ndisProcWorkItemHandler, pWorkItem); + ExQueueWorkItem(pntWorkItem, CriticalWorkQueue); + return NDIS_STATUS_SUCCESS; +} + + + /* EOF */ diff --git a/reactos/include/ddk/ndis.h b/reactos/include/ddk/ndis.h index 396c5d0dbb9..6e140ad425c 100644 --- a/reactos/include/ddk/ndis.h +++ b/reactos/include/ddk/ndis.h @@ -2285,7 +2285,7 @@ NdisDestroyLookaheadBufferFromSharedMemory( #endif -#if defined(_M_IX86) || defined(_M_AMD64) || defined(_M_ARM) +#if defined(_M_IX86) || defined(_M_AMD64) || defined(_M_ARM) || defined(_M_PPC) /* * VOID @@ -2309,17 +2309,17 @@ NdisDestroyLookaheadBufferFromSharedMemory( #else #define NdisMoveMappedMemory(Destination, Source, Length) \ -{ - PUCHAR _Dest = Destination, _Src = Source, _End = _Dest + Length; - while (_Dest < _End) - *_Dest++ = _Src++; +{ \ + PUCHAR _Dest = Destination, _Src = Source, _End = _Dest + Length; \ + while (_Dest < _End) \ + *_Dest++ = _Src++; \ } #define NdisZeroMappedMemory(Destination, Length) \ -{ - PUCHAR _Dest = Destination, _End = _Dest + Length; - while (_Dest < _End) - *_Dest++ = 0; +{ \ + PUCHAR _Dest = Destination, _End = _Dest + Length; \ + while (_Dest < _End) \ + *_Dest++ = 0; \ } #endif /* _M_IX86 or _M_AMD64 */ @@ -4152,6 +4152,8 @@ typedef struct _NDIS_MINIPORT_WORK_ITEM { PVOID WorkItemContext; } NDIS_MINIPORT_WORK_ITEM, *PNDIS_MINIPORT_WORK_ITEM; +/* Forward declare to pick up a consistent type */ +typedef struct _NDIS_WORK_ITEM; #pragma warning(push) typedef VOID (*NDIS_PROC)(struct _NDIS_WORK_ITEM *, PVOID); #pragma warning(pop) @@ -4162,7 +4164,6 @@ typedef struct _NDIS_WORK_ITEM UCHAR WrapperReserved[8*sizeof(PVOID)]; } NDIS_WORK_ITEM, *PNDIS_WORK_ITEM; - typedef struct _NDIS_BIND_PATHS { UINT Number; NDIS_STRING Paths[1];