oss_wrapper.h

来自「6440linuxDriver的源代码」· C头文件 代码 · 共 139 行

H
139
字号
/* * Operating System Service Wrapper  * * Notes : * ** DO NOT include headers other than common & os specific ones * * ** This header is included in mv_os.h, you don't have to include it *        explicitly in your code. * */#ifndef __OSS_WRAPPER_H__#define __OSS_WRAPPER_H__#include "com_mod_mgmt.h"/* Sychronization Services *//* expect pointers */#define OSSW_INIT_SPIN_LOCK(plock) spin_lock_init(plock)#define OSSW_SPIN_LOCK_IRQ(plock)            \             do {                            \	              spin_lock_irq(plock);  \             } while (0)#define OSSW_SPIN_UNLOCK_IRQ(plock)           \             do {                             \	              spin_unlock_irq(plock); \             } while (0)#define OSSW_SPIN_LOCK_IRQSAVE(plock, flag)           \             do {                                     \	             spin_lock_irqsave(plock, flag);  \             } while (0)#define OSSW_SPIN_UNLOCK_IRQRESTORE(plock, flag)           \             do {                                          \	             spin_unlock_irqrestore(plock, flag);  \             } while (0)/* Delayed Execution Services */#define OSSW_INIT_TIMER(ptimer) init_timer(ptimer)/* delay in milliseconds */void ossw_add_timer(struct timer_list *timer,		    u32 msec, 		    void (*function)(unsigned long),		    unsigned long data);void ossw_del_timer(struct timer_list *timer);/* OS Information Query Services */u32 ossw_get_time_in_sec(void);u32 ossw_get_msec_of_time(void);#ifdef __AC_PROF__ /* debug purpose */inline unsigned long __ossw_get_jiffies(void){	return jiffies;}#endif /* __AC_PROF__ *//* MISC Services */#define ossw_mdelay(x) mdelay(x)#define ossw_udelay(x) udelay(x)#define MV_PCI_READ_CONFIG_DWORD(ext, offset, ptr) \          pci_read_config_dword(ext->desc->hba_desc->dev, offset, ptr)#define MV_PCI_READ_CONFIG_WORD(ext, offset, ptr) \          pci_read_config_word(ext->desc->hba_desc->dev, offset, ptr)#define MV_PCI_READ_CONFIG_BYTE(ext, offset, ptr) \          pci_read_config_byte(ext->desc->hba_desc->dev, offset, ptr)#define MV_PCI_WRITE_CONFIG_DWORD(ext, offset, val) \          pci_write_config_dword(ext->desc->hba_desc->dev, offset, val)#define MV_PCI_WRITE_CONFIG_WORD(ext, offset, val) \          pci_write_config_word(ext->desc->hba_desc->dev, offset, val)#define MV_PCI_WRITE_CONFIG_BYTE(ext, offset, val) \          pci_write_config_byte(ext->desc->hba_desc->dev, offset, val)/* System dependent macro for flushing CPU write cache */#define MV_CPU_WRITE_BUFFER_FLUSH() smp_wmb()#define MV_CPU_READ_BUFFER_FLUSH()  smp_rmb()#define MV_CPU_BUFFER_FLUSH()       smp_mb()/* register read write: memory io */#define MV_REG_WRITE_BYTE(base, offset, val)    \    writeb(val, base + offset)#define MV_REG_WRITE_WORD(base, offset, val)    \    writew(val, base + offset)#define MV_REG_WRITE_DWORD(base, offset, val)    \    writel(val, base + offset)#define MV_REG_READ_BYTE(base, offset)			\	readb(base + offset)#define MV_REG_READ_WORD(base, offset)			\	readw(base + offset)#define MV_REG_READ_DWORD(base, offset)			\	readl(base + offset)/* register read write: port io */#define MV_IO_WRITE_BYTE(base, offset, val)    \    outb(val, (unsigned)(MV_PTR_INTEGER)(base + offset))#define MV_IO_WRITE_WORD(base, offset, val)    \    outw(val, (unsigned)(MV_PTR_INTEGER)(base + offset))#define MV_IO_WRITE_DWORD(base, offset, val)    \    outl(val, (unsigned)(MV_PTR_INTEGER)(base + offset))#define MV_IO_READ_BYTE(base, offset)			\	inb((unsigned)(MV_PTR_INTEGER)(base + offset))#define MV_IO_READ_WORD(base, offset)			\	inw((unsigned)(MV_PTR_INTEGER)(base + offset))#define MV_IO_READ_DWORD(base, offset)			\	inl((unsigned)(MV_PTR_INTEGER)(base + offset))#if __LEGACY_OSSW__static inline void HBA_SleepMillisecond(MV_PVOID ext, MV_U32 msec){	ossw_mdelay(msec);#   ifdef CONFIG_X86_64	touch_nmi_watchdog();#   endif /* CONFIG_X86_64*/#   if LINUX_VERSION_CODE > KERNEL_VERSION(2, 6, 10)	touch_softlockup_watchdog();#   endif /* LINUX_VERSION_CODE > KERNEL_VERSION(2, 6, 10) */}#   define HBA_SleepMicrosecond(_x, _y) ossw_udelay(_y)#   define HBA_GetTimeInSecond          ossw_get_time_in_sec#   define HBA_GetMillisecondInDay      ossw_get_msec_of_time#endif /* __LEGACY_OSSW__ */#endif /* __OSS_WRAPPER_H__ */

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?