--- /dev/null
+/******************************************************************************
+ *
+ * Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved.
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms of version 2 of the GNU General Public License as
+ * published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
+ * more details.
+ *
+ * You should have received a copy of the GNU General Public License along with
+ * this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110, USA
+ *
+ *
+ ******************************************************************************/\r
+\r
+#ifndef __OSDEP_CE_SERVICE_H_\r
+#define __OSDEP_CE_SERVICE_H_\r
+\r
+\r
+#include <ndis.h>\r
+#include <ntddndis.h>\r
+\r
+#ifdef CONFIG_SDIO_HCI\r
+#include "SDCardDDK.h"\r
+#endif\r
+\r
+#ifdef CONFIG_USB_HCI\r
+#include <usbdi.h>\r
+#endif\r
+\r
+typedef HANDLE _sema;\r
+typedef LIST_ENTRY _list;\r
+typedef NDIS_STATUS _OS_STATUS;\r
+\r
+typedef NDIS_SPIN_LOCK _lock;\r
+\r
+typedef HANDLE _rwlock; //Mutex\r
+\r
+typedef u32 _irqL;\r
+\r
+typedef NDIS_HANDLE _nic_hdl;\r
+\r
+\r
+typedef NDIS_MINIPORT_TIMER _timer;\r
+\r
+struct __queue {\r
+ LIST_ENTRY queue;\r
+ _lock lock;\r
+};\r
+\r
+typedef NDIS_PACKET _pkt;\r
+typedef NDIS_BUFFER _buffer;\r
+typedef struct __queue _queue;\r
+\r
+typedef HANDLE _thread_hdl_;\r
+typedef DWORD thread_return;\r
+typedef void* thread_context;\r
+typedef NDIS_WORK_ITEM _workitem;\r
+\r
+#define thread_exit() ExitThread(STATUS_SUCCESS); return 0;\r
+\r
+\r
+#define SEMA_UPBND (0x7FFFFFFF) //8192\r
+\r
+__inline static _list *get_prev(_list *list)\r
+{\r
+ return list->Blink;\r
+}\r
+ \r
+__inline static _list *get_next(_list *list)\r
+{\r
+ return list->Flink;\r
+}\r
+\r
+__inline static _list *get_list_head(_queue *queue)\r
+{\r
+ return (&(queue->queue));\r
+}\r
+\r
+#define LIST_CONTAINOR(ptr, type, member) CONTAINING_RECORD(ptr, type, member)\r
+\r
+__inline static void _enter_critical(_lock *plock, _irqL *pirqL)\r
+{\r
+ NdisAcquireSpinLock(plock);\r
+}\r
+\r
+__inline static void _exit_critical(_lock *plock, _irqL *pirqL)\r
+{\r
+ NdisReleaseSpinLock(plock);\r
+}\r
+\r
+__inline static _enter_critical_ex(_lock *plock, _irqL *pirqL)\r
+{\r
+ NdisDprAcquireSpinLock(plock); \r
+}\r
+\r
+__inline static _exit_critical_ex(_lock *plock, _irqL *pirqL)\r
+{\r
+ NdisDprReleaseSpinLock(plock); \r
+}\r
+\r
+\r
+__inline static void _enter_hwio_critical(_rwlock *prwlock, _irqL *pirqL)\r
+{\r
+ WaitForSingleObject(*prwlock, INFINITE );\r
+\r
+}\r
+\r
+__inline static void _exit_hwio_critical(_rwlock *prwlock, _irqL *pirqL)\r
+{\r
+ ReleaseMutex(*prwlock);\r
+}\r
+\r
+__inline static void rtw_list_delete(_list *plist)\r
+{\r
+ RemoveEntryList(plist);\r
+ InitializeListHead(plist);\r
+}\r
+\r
+#define RTW_TIMER_HDL_ARGS IN PVOID SystemSpecific1, IN PVOID FunctionContext, IN PVOID SystemSpecific2, IN PVOID SystemSpecific3\r
+\r
+__inline static void _init_timer(_timer *ptimer,_nic_hdl nic_hdl,void *pfunc,PVOID cntx)\r
+{\r
+ NdisMInitializeTimer(ptimer, nic_hdl, pfunc, cntx);\r
+}\r
+\r
+__inline static void _set_timer(_timer *ptimer,u32 delay_time)\r
+{\r
+ NdisMSetTimer(ptimer,delay_time);\r
+}\r
+\r
+__inline static void _cancel_timer(_timer *ptimer,u8 *bcancelled)\r
+{\r
+ NdisMCancelTimer(ptimer,bcancelled);\r
+}\r
+\r
+__inline static void _init_workitem(_workitem *pwork, void *pfunc, PVOID cntx)\r
+{\r
+\r
+ NdisInitializeWorkItem(pwork, pfunc, cntx);\r
+}\r
+\r
+__inline static void _set_workitem(_workitem *pwork)\r
+{\r
+ NdisScheduleWorkItem(pwork);\r
+}\r
+\r
+#define ATOMIC_INIT(i) { (i) }\r
+\r
+//\r
+// Global Mutex: can only be used at PASSIVE level.\r
+//\r
+\r
+#define ACQUIRE_GLOBAL_MUTEX(_MutexCounter) \\r
+{ \\r
+ while (NdisInterlockedIncrement((PULONG)&(_MutexCounter)) != 1)\\r
+ { \\r
+ NdisInterlockedDecrement((PULONG)&(_MutexCounter)); \\r
+ NdisMSleep(10000); \\r
+ } \\r
+}\r
+\r
+#define RELEASE_GLOBAL_MUTEX(_MutexCounter) \\r
+{ \\r
+ NdisInterlockedDecrement((PULONG)&(_MutexCounter)); \\r
+}\r
+\r
+// limitation of path length\r
+#define PATH_LENGTH_MAX MAX_PATH\r
+\r
+//Atomic integer operations\r
+#define ATOMIC_T LONG\r
+\r
+#define NDEV_FMT "%s"\r
+#define NDEV_ARG(ndev) ""\r
+#define ADPT_FMT "%s"\r
+#define ADPT_ARG(adapter) ""\r
+#define FUNC_NDEV_FMT "%s"\r
+#define FUNC_NDEV_ARG(ndev) __func__\r
+#define FUNC_ADPT_FMT "%s"\r
+#define FUNC_ADPT_ARG(adapter) __func__\r
+\r
+#define STRUCT_PACKED\r
+\r
+\r
+#endif\r
+\r