*\r
* All structs and prototypes are based on kernel source 2.5.72\r
*\r
+ * Modified by Aleksey Bragin (aleksey@reactos.com) for ReactOS needs\r
+ *\r
+ *\r
* #include <standard-GPL-header.h>\r
*/\r
\r
wait_queue_head_t wait;\r
};\r
\r
+// windows lookaside list head\r
+typedef void* kmem_cache_t;\r
+\r
+struct dma_pool\r
+{\r
+ int dummy;\r
+};\r
+\r
/* from mod_devicetable.h */\r
\r
struct usb_device_id {\r
#define MODULE_DESCRIPTION(a)\r
#define MODULE_LICENSE(a)\r
#define MODULE_DEVICE_TABLE(type,name) void* module_table_##name=&name\r
+#define MODULE_PARM(a,b)\r
+#define MODULE_PARM_DESC(a,b)\r
\r
#define __devinit\r
#define __exit\r
#define unlikely(x) (x)\r
#define prefetch(x) 1\r
\r
+#define inw(x) READ_PORT_USHORT((PUSHORT)(x))\r
+#define outw(x,p) WRITE_PORT_USHORT((PUSHORT)(p),(x))\r
+#define outl(x,p) WRITE_PORT_ULONG((PUSHORT)(p),(x))\r
+\r
/* The kernel macro for list_for_each_entry makes nonsense (have no clue\r
* why, this is just the same definition...) */\r
\r
#define down_read(a) do {} while(0)\r
#define up_read(a) do {} while(0)\r
\r
-#define DECLARE_WAIT_QUEUE_HEAD(x) int x\r
+#define DECLARE_WAIT_QUEUE_HEAD(x) KEVENT x\r
\r
#define DECLARE_COMPLETION(x) struct completion x\r
\r
\r
\r
/* PCI */\r
+#define to_pci_dev(n) container_of(n, struct pci_dev, dev)\r
+\r
#define pci_pool_create(a,b,c,d,e) (void*)1\r
\r
#define pci_pool_alloc(a,b,c) my_pci_pool_alloc(a,b,c) \r
#define bus_register(a) do {} while(0)\r
#define bus_unregister(a) do {} while(0)\r
\r
+/* DMA */\r
+//#define dma_pool_alloc(a,b,c) my_dma_pool_alloc((a),(b),(c))\r
+#define dma_pool_alloc(a,b,c) pci_pool_alloc(a,b,c)\r
+#define dma_pool_create(a,b,c,d,e) pci_pool_create(a,b,c,d,e)\r
+#define dma_pool_free(a,b,c) pci_pool_free(a,b,c)\r
+#define dma_pool_destroy(a) pci_pool_destroy(a)\r
+\r
+#define dma_alloc_coherent(a,b,c,d) NULL\r
+#define dma_free_coherent(a,b,c,d) do {} while(0)\r
+\r
#define dma_map_single(a,b,c,d) ((u32)(b)&0xfffffff)\r
#define dma_unmap_single(a,b,c,d) do {} while(0)\r
#define pci_unmap_single(a,b,c,d) do {} while(0)\r
#define PCI_ROM_RESOURCE 0\r
#define IORESOURCE_IO 1\r
\r
-#define DECLARE_WAITQUEUE(a,b) wait_queue_head_t a=0\r
-#define init_waitqueue_head(a) do {} while(0)\r
+#define DECLARE_WAITQUEUE(a,b) KEVENT a=0\r
+#define init_waitqueue_head(a) my_init_waitqueue_head(a)\r
#define add_wait_queue(a,b) do {} while(0)\r
#define remove_wait_queue(a,b) do {} while(0)\r
+void my_init_waitqueue_head(PKEVENT a);\r
+\r
+VOID KeMemoryBarrier(VOID);\r
\r
+#define mb() KeMemoryBarrier()\r
#define wmb() __asm__ __volatile__ ("": : :"memory")\r
#define rmb() __asm__ __volatile__ ("lock; addl $0,0(%%esp)": : :"memory")\r
\r
#define wait_event_interruptible(x,y) do {} while(0)\r
\r
#define interruptible_sleep_on(a) my_interruptible_sleep_on(a)\r
-void my_interruptible_sleep_on(int a);\r
+void my_interruptible_sleep_on(PKEVENT evnt);\r
\r
#define flush_scheduled_work() do {} while(0)\r
#define refrigerator(x) do {} while(0)\r
#define yield() do {} while(0)\r
#define cpu_relax() do {} while(0)\r
\r
+#define WARN_ON(a) do {} while(0)\r
+\r
+/*------------------------------------------------------------------------*/ \r
+/* Lookaside lists funcs */\r
+/*------------------------------------------------------------------------*/ \r
+#define kmem_cache_create(a,b,c,d,e,f) my_kmem_cache_create((a),(b),(c),(d),(e),(f))\r
+#define kmem_cache_destroy(a) my_kmem_cache_destroy((a))\r
+#define kmem_cache_alloc(co, flags) my_kmem_cache_alloc((co), (flags))\r
+#define kmem_cache_free(co, ptr) my_kmem_cache_free((co), (ptr))\r
+\r
+kmem_cache_t *my_kmem_cache_create(const char *tag, size_t alloc_size,\r
+ size_t offset, unsigned long flags,\r
+ void *ctor,\r
+ void *dtor);\r
+\r
+void my_kmem_cache_destroy(kmem_cache_t *co);\r
+void *my_kmem_cache_alloc(kmem_cache_t *co, int flags);\r
+void my_kmem_cache_free(kmem_cache_t *co, void *ptr);\r
+\r
/*------------------------------------------------------------------------*/ \r
/* Kernel macros */\r
/*------------------------------------------------------------------------*/ \r
#define PCI_DEVFN(a,b) 0\r
#define PCI_SLOT(a) 0\r
\r
+/**\r
+ * PCI_DEVICE_CLASS - macro used to describe a specific pci device class\r
+ * @dev_class: the class, subclass, prog-if triple for this device\r
+ * @dev_class_mask: the class mask for this device\r
+ *\r
+ * This macro is used to create a struct pci_device_id that matches a\r
+ * specific PCI class. The vendor, device, subvendor, and subdevice \r
+ * fields will be set to PCI_ANY_ID.\r
+ */\r
+#define PCI_DEVICE_CLASS(dev_class,dev_class_mask) \\r
+ .class = (dev_class), .class_mask = (dev_class_mask), \\r
+ .vendor = PCI_ANY_ID, .device = PCI_ANY_ID, \\r
+ .subvendor = PCI_ANY_ID, .subdevice = PCI_ANY_ID\r
+\r
+\r
/*------------------------------------------------------------------------*/ \r
/* Stuff from kernel */\r
/*------------------------------------------------------------------------*/ \r
add_timer(t);\r
}\r
\r
+#define time_after_eq(a,b) \\r
+ (((long)(a) - (long)(b) >= 0))\r
+\r
/*------------------------------------------------------------------------*/ \r
/* Device driver and process related stuff */\r
/*------------------------------------------------------------------------*/ \r
int my_schedule_timeout(int x);\r
\r
#define wake_up(x) my_wake_up(x)\r
-void my_wake_up(void*);\r
+void my_wake_up(PKEVENT);\r
\r
// cannot be mapped via macro due to collision with urb->complete\r
static void __inline__ complete(struct completion *p)\r