From fc11139981daa47d15cf809439c1051cbdf9f4fd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Herm=C3=A8s=20B=C3=A9lusca-Ma=C3=AFto?= Date: Fri, 21 Nov 2014 00:13:51 +0000 Subject: [PATCH] [DDK] Add few VDD API prototypes: - VDDReserve/ReleaseIrqLine to get a "lock" on an IRQ line (so that VDDs can check whether some IRQs are free or not). - Add DMA services. svn path=/trunk/; revision=65436 --- reactos/include/ddk/nt_vdd.h | 85 +++++++++++++++++++++++++++++++++--- 1 file changed, 78 insertions(+), 7 deletions(-) diff --git a/reactos/include/ddk/nt_vdd.h b/reactos/include/ddk/nt_vdd.h index e3fa8debb45..8e26ba15101 100644 --- a/reactos/include/ddk/nt_vdd.h +++ b/reactos/include/ddk/nt_vdd.h @@ -41,6 +41,27 @@ WINAPI VDDTerminateVDM(VOID); +/* + * IRQ services + */ + +WORD +WINAPI +VDDReserveIrqLine +( + IN HANDLE hVdd, + IN WORD IrqLine +); + +BOOL +WINAPI +VDDReleaseIrqLine +( + IN HANDLE hVdd, + IN WORD IrqLine +); + + /* * I/O Port services */ @@ -76,19 +97,69 @@ BOOL WINAPI VDDInstallIOHook ( - HANDLE hVdd, - WORD cPortRange, - PVDD_IO_PORTRANGE pPortRange, - PVDD_IO_HANDLERS IOhandler + IN HANDLE hVdd, + IN WORD cPortRange, + IN PVDD_IO_PORTRANGE pPortRange, + IN PVDD_IO_HANDLERS IOhandler ); VOID WINAPI VDDDeInstallIOHook ( - HANDLE hVdd, - WORD cPortRange, - PVDD_IO_PORTRANGE pPortRange + IN HANDLE hVdd, + IN WORD cPortRange, + IN PVDD_IO_PORTRANGE pPortRange +); + + +/* + * DMA services + */ + +typedef struct _VDD_DMA_INFO +{ + WORD addr; + WORD count; + WORD page; + BYTE status; + BYTE mode; + BYTE mask; +} VDD_DMA_INFO, *PVDD_DMA_INFO; + +#define VDD_DMA_ADDR 0x01 +#define VDD_DMA_COUNT 0x02 +#define VDD_DMA_PAGE 0x04 +#define VDD_DMA_STATUS 0x08 +#define VDD_DMA_ALL (VDD_DMA_ADDR | VDD_DMA_COUNT | VDD_DMA_PAGE | VDD_DMA_STATUS) + +DWORD +WINAPI +VDDRequestDMA +( + IN HANDLE hVdd, + IN WORD iChannel, + IN OUT PVOID Buffer, + IN DWORD length +); + +BOOL +WINAPI +VDDQueryDMA +( + IN HANDLE hVdd, + IN WORD iChannel, + IN PVDD_DMA_INFO pDmaInfo +); + +BOOL +WINAPI +VDDSetDMA +( + IN HANDLE hVdd, + IN WORD iChannel, + IN WORD fDMA, + IN PVDD_DMA_INFO pDmaInfo );