Updated linux wrapper to contain more funcs (to allow UHCI in the future), also wait...
[reactos.git] / reactos / drivers / usb / cromwell / linux / linux_wrapper.h
index 89308c7..3de8596 100644 (file)
@@ -12,6 +12,9 @@
  *\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
@@ -145,6 +148,14 @@ struct completion {
         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
@@ -286,6 +297,8 @@ struct usbdevfs_hub_portinfo
 #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
@@ -313,6 +326,10 @@ struct usbdevfs_hub_portinfo
 #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
@@ -372,7 +389,7 @@ struct usbdevfs_hub_portinfo
 #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
@@ -383,6 +400,8 @@ struct usbdevfs_hub_portinfo
 \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
@@ -427,6 +446,16 @@ int my_pci_module_init(struct pci_driver *x);
 #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
@@ -451,11 +480,15 @@ int my_pci_module_init(struct pci_driver *x);
 #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
@@ -478,7 +511,7 @@ void my_wait_for_completion(struct completion*);
 #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
@@ -492,6 +525,25 @@ int my_kill_proc(int pid, int signal, int unk);
 #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
@@ -559,6 +611,21 @@ int my_kill_proc(int pid, int signal, int unk);
 #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
@@ -647,6 +714,9 @@ static void __inline__ mod_timer(struct timer_list* t, int ex)
        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
@@ -678,7 +748,7 @@ int my_device_unregister(struct device *dev);
 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