亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來(lái)到蟲(chóng)蟲(chóng)下載站! | ?? 資源下載 ?? 資源專(zhuān)輯 ?? 關(guān)于我們
? 蟲(chóng)蟲(chóng)下載站

?? sysdep.h

?? Linux設(shè)備驅(qū)動(dòng)程序第二版
?? H
字號(hào):
/* * sysdep.h -- fixes some problems of portability in the range 1.2 - 2.0 * * kdev_t                         for kernels < 1.3.28 * do_gettimeofday                for kernels < 1.3.46 * request_irq/free_irq/SA_SHIRQ  for kernels < 1.3.70 * FMODE_READ/FMODE_WRITE         for kernels < 1.3.46 * ioctl definitions              for kernels < 1.3.42 * get_user/put_user              for kernels < 1.3.0 * __*_ENDIAN                     for kernels < 1.3.19 * put_unaligned etc              for kernels < 1.99.6 * readb etc.                     for kernels < 1.3.4 * add_timer                      fir kernels < 1.3.14 * typing for count in read/write to account for differences in 2.1 * typing for offset in lseek to account for differences in 2.1 * *********/#ifndef _ORABOOK_SYSDEP_H#define _ORABOOK_SYSDEP_H#ifndef VERSION_CODE#  define VERSION_CODE(vers,rel,seq) ( ((vers)<<16) | ((rel)<<8) | (seq) )#endif#include <linux/sched.h> /* this is needed for functions I use here *//* * Macros to fake kdev_t with old kernels */#if LINUX_VERSION_CODE < VERSION_CODE(1,3,28)#  define kdev_t dev_t   /* two conversion functions are defined in newer kernels */#  define kdev_t_to_nr(dev) (dev)#  define to_kdev_t(dev)    (dev)#endif/* * Reimplement do_gettimeofday (with less precision) for versions * not exporting the true code */#if LINUX_VERSION_CODE < VERSION_CODE(1,3,46)/*  * kernel headers already declare the function as non-static. * We reimplement it with another name, and #define it */extern inline void redo_gettimeofday(struct timeval *tv){    unsigned long flags;    save_flags(flags);    cli();    *tv = xtime;    restore_flags(flags);}#define do_gettimeofday(tv) redo_gettimeofday(tv)#endif/* * 1.3.70 changed the semantics of irq request/free to allow shared irq's */#if LINUX_VERSION_CODE < VERSION_CODE(1,3,70)   /* the preprocessor is able to handle recursive definitions */#  define request_irq(irq,fun,fla,nam,dev) request_irq(irq,fun,fla,nam)#  define free_irq(irq,dev)                free_irq(irq)#  define SA_SHIRQ 0 /* doesn't exist */#endif/* * FMODE_READ was introduced in 1.3.46. * Explicit numbers were used before then */#if LINUX_VERSION_CODE < VERSION_CODE(1,3,46)#  define FMODE_READ 1#  define FMODE_WRITE 2#endif/* * 1.3.22 added the full featured ioctl bitmasks and macros *        but with _IOC_READ and _IOC_WRITE swapped. *        Earlier kernels defined some of them, but not all. *        Besides, macros in 1.2.x are really ugly to read. * 1.3.32 added _IOC_TYPE * 1.3.42 fixed _IOC_READ and _IOC_WRITE * * The errors are understandable in experimental kernels, but * try to fix them here. I, for one, still run 1.3.30 and 1.3.41, * which used to be very stable kernels. At the time no drivers used * such macros, so nobody noticed the were buggy. Since I uses them here, * I want them right. */#if LINUX_VERSION_CODE < VERSION_CODE(1,3,22)#  define _IOC_NRBITS     8#  define _IOC_TYPEBITS   8#  define _IOC_SIZEBITS   14#  define _IOC_DIRBITS    2#  define _IOC_NRMASK     ((1 << _IOC_NRBITS)-1)#  define _IOC_TYPEMASK   ((1 << _IOC_TYPEBITS)-1)#  define _IOC_SIZEMASK   ((1 << _IOC_SIZEBITS)-1)#  define _IOC_DIRMASK    ((1 << _IOC_DIRBITS)-1)#  define _IOC_NRSHIFT    0#  define _IOC_TYPESHIFT  (_IOC_NRSHIFT+_IOC_NRBITS)#  define _IOC_SIZESHIFT  (_IOC_TYPESHIFT+_IOC_TYPEBITS)#  define _IOC_DIRSHIFT   (_IOC_SIZESHIFT+_IOC_SIZEBITS)#  define _IOC_DIR(nr)            (((nr) >> _IOC_DIRSHIFT) & _IOC_DIRMASK)#  define _IOC_NR(nr)             (((nr) >> _IOC_NRSHIFT) & _IOC_NRMASK)#  define _IOC_SIZE(nr)           (((nr) >> _IOC_SIZESHIFT) & _IOC_SIZEMASK)#endif#if LINUX_VERSION_CODE < VERSION_CODE(1,3,32)#  define _IOC_TYPE(nr)           (((nr) >> _IOC_TYPESHIFT) & _IOC_TYPEMASK)#endif#if LINUX_VERSION_CODE < VERSION_CODE(1,3,42)#  undef _IOC_NONE#  undef _IOC_WRITE#  undef _IOC_READ#  define _IOC_NONE       0U#  define _IOC_WRITE      1U#  define _IOC_READ       2U#endif/******************************************************************* * 1.3.0 added the put_user size-independent macro. Copy it here * * This code (up to the next line of stars) comes from the kernel headers */#if LINUX_VERSION_CODE < VERSION_CODE(1,3,0)#define put_user(x,ptr) __put_user((unsigned long)(x),(ptr),sizeof(*(ptr)))#define get_user(ptr) ((__typeof__(*(ptr)))__get_user((ptr),sizeof(*(ptr))))/* * This is a silly but good way to make sure that * the __put_user function is indeed always optimized, * and that we use the correct sizes.. */extern int bad_user_access_length(void);/* * dummy pointer type structure.. gcc won't try to do something strange * this way.. */struct __segment_dummy { unsigned long a[100]; };#define __sd(x) ((struct __segment_dummy *) (x))#define __const_sd(x) ((const struct __segment_dummy *) (x))static inline void __put_user(unsigned long x, void * y, int size){        switch (size) {	case 1:                        __asm__ ("movb %b1,%%fs:%0"				 :"=m" (*__sd(y))				 :"iq" ((unsigned char) x), "m" (*__sd(y)));                        break;			case 2:                        __asm__ ("movw %w1,%%fs:%0"				 :"=m" (*__sd(y))				 :"ir" ((unsigned short) x), "m" (*__sd(y)));                        break;			case 4:                        __asm__ ("movl %1,%%fs:%0"				 :"=m" (*__sd(y))				 :"ir" (x), "m" (*__sd(y)));                        break;			default:                        bad_user_access_length();			}	}static inline unsigned long __get_user(const void * y, int size){        unsigned long result;        switch (size) {	case 1:                        __asm__ ("movb %%fs:%1,%b0"				 :"=q" (result)				 :"m" (*__const_sd(y)));                        return (unsigned char) result;			case 2:                        __asm__ ("movw %%fs:%1,%w0"				 :"=r" (result)				 :"m" (*__const_sd(y)));                        return (unsigned short) result;			case 4:                        __asm__ ("movl %%fs:%1,%0"				 :"=r" (result)				 :"m" (*__const_sd(y)));                        return result;			default:                        return bad_user_access_length();			}	}/*******************************************************************/#endif/* * __LITTLE_ENDIAN and friends missed the underscore before 1.3.19 */#if LINUX_VERSION_CODE < VERSION_CODE(1,3,19)#  ifdef LITTLE_ENDIAN#    define __LITTLE_ENDIAN#    define __LITTLE_ENDIAN_BITFIELD#  endif#  ifdef BIG_ENDIAN#    define __BIG_ENDIAN#    define __BIG_ENDIAN_BITFIELD#  endif#endif/* * get_unaligned was only incroduced in 1.99.6, but asm-generic * has a C reimplementation for it. Here it is (just copied :) */#if LINUX_VERSION_CODE < VERSION_CODE(1,99,6)#  ifndef __i386__#    include <asm/string.h> /* memcpy */#    define get_unaligned(ptr)                             \       ({ __typeof__(*(ptr)) __tmp;                        \         memcpy(&__tmp, (ptr), sizeof(*(ptr))); __tmp; })#    define put_unaligned(val, ptr)                        \       ({ __typeof__(*(ptr)) __tmp = (val);                \         memcpy((ptr), &__tmp, sizeof(*(ptr)));            \         (void)0; })#  else#    define get_unaligned(ptr) (*(ptr))#    define put_unaligned(val, ptr) ((void)( *(ptr) = (val) ))#  endif /* i386 */#endif/* * define readb etc. This is only valid for the Intel platform */#if LINUX_VERSION_CODE < VERSION_CODE(1,3,4)#define readb(addr) (*(volatile unsigned char *) (addr))#define readw(addr) (*(volatile unsigned short *) (addr))#define readl(addr) (*(volatile unsigned int *) (addr))#define writeb(b,addr) ((*(volatile unsigned char *) (addr)) = (b))#define writew(b,addr) ((*(volatile unsigned short *) (addr)) = (b))#define writel(b,addr) ((*(volatile unsigned int *) (addr)) = (b))#define memset_io(a,b,c)        memset((void *)(a),(b),(c))#define memcpy_fromio(a,b,c)    memcpy((a),(void *)(b),(c))#define memcpy_toio(a,b,c)      memcpy((void *)(a),(b),(c))#endif/* * 2.1 (and the axp-diffs-2.0.x) changed from `int' to `unsigned long' * the count argument to read() and write(). Define a portable count_t */#if defined(__alpha__) || (LINUX_VERSION_CODE >= VERSION_CODE(2,1,0))# define count_t unsigned long# define read_write_t long#else# define count_t int# define read_write_t int#endif#if LINUX_VERSION_CODE < VERSION_CODE(1,3,14)# define add_timer(t) do {(t)->expires-=jiffies; add_timer(t);} while(0)#endif#endif /* _ORABOOK_SYSDEP_H */

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
91精品国产欧美一区二区18| 色噜噜狠狠成人中文综合| 中文字幕精品一区二区精品绿巨人| 成人午夜看片网址| 亚洲精品成a人| 日韩欧美电影一二三| 成人av网在线| 蜜臀va亚洲va欧美va天堂 | 韩国av一区二区三区四区| 中文字幕精品一区| 欧美精品日日鲁夜夜添| 国产精品一二三四五| 国产精品欧美精品| 日韩午夜中文字幕| 在线精品视频一区二区| 国产在线不卡一区| 亚洲国产色一区| 久久久噜噜噜久久中文字幕色伊伊| av亚洲产国偷v产偷v自拍| 日韩高清国产一区在线| 国产精品免费视频网站| 91精品国产综合久久久久久久 | 亚洲欧美日韩综合aⅴ视频| 在线播放国产精品二区一二区四区| 国产很黄免费观看久久| 肉色丝袜一区二区| 成人免费一区二区三区在线观看| 日韩一区二区三区电影| 日本道精品一区二区三区 | 黑人精品欧美一区二区蜜桃| 亚洲久草在线视频| 国产精品三级视频| 精品国产一区二区三区久久久蜜月| 日本精品一区二区三区高清 | 免费成人av在线播放| 国产精品每日更新| 国产视频在线观看一区二区三区| 欧美一区二区播放| 欧美日韩精品系列| 色婷婷久久久久swag精品 | 国产色婷婷亚洲99精品小说| 91精品国产高清一区二区三区蜜臀| 色综合天天综合给合国产| 国产精品综合一区二区| 久久精品国产久精国产| 首页国产欧美日韩丝袜| 亚洲午夜精品17c| 亚洲综合色婷婷| 亚洲桃色在线一区| 日本一区二区三区电影| 国产色产综合色产在线视频 | 91福利精品第一导航| 成人午夜视频网站| 粉嫩嫩av羞羞动漫久久久| 狠狠色丁香久久婷婷综| 韩国三级电影一区二区| 经典三级一区二区| 精品一区二区久久| 经典三级视频一区| 国产一区二区三区在线观看免费| 精品一区二区三区在线观看国产| 琪琪一区二区三区| 久久99久久99小草精品免视看| 国产在线精品国自产拍免费| 国产一区在线精品| 国产麻豆精品theporn| 国产成人啪免费观看软件| 成人免费的视频| 91色乱码一区二区三区| 91福利社在线观看| 欧美挠脚心视频网站| 3d成人h动漫网站入口| 日韩一区二区在线播放| 精品理论电影在线观看 | 精品一区二区三区免费视频| 国产一区二区在线观看视频| 国产xxx精品视频大全| 岛国av在线一区| 色婷婷精品大视频在线蜜桃视频| 欧美视频在线一区| 在线不卡的av| 久久中文娱乐网| 国产精品久久久一本精品| 成人欧美一区二区三区白人| 亚洲综合成人网| 久久激情综合网| 成人精品视频一区二区三区| 99久久国产综合精品色伊| 色婷婷久久久亚洲一区二区三区| 日韩一级黄色片| 欧美群妇大交群的观看方式| 久久久综合激的五月天| 五月激情六月综合| 丰满少妇久久久久久久| 3atv一区二区三区| 亚洲激情在线播放| 粉嫩av一区二区三区在线播放| 欧美美女喷水视频| 国产精品久久久久久久久晋中| 日韩av中文字幕一区二区| 91美女片黄在线观看| 国产亚洲欧洲一区高清在线观看| 亚洲成av人片一区二区梦乃 | 国产99精品在线观看| 欧美日韩视频专区在线播放| 国产精品国产三级国产有无不卡| 麻豆91在线看| 欧美精品九九99久久| 亚洲色图另类专区| 成人免费高清在线观看| 欧美mv日韩mv国产网站app| 午夜亚洲福利老司机| 不卡视频一二三四| 国产亚洲短视频| 国产一区激情在线| 日韩欧美国产三级| 日韩二区在线观看| 欧美日韩一区二区在线观看| 亚洲美腿欧美偷拍| 不卡视频在线观看| 国产三级精品在线| 国产精品影视在线观看| 精品久久国产字幕高潮| 蜜臀精品一区二区三区在线观看| 欧美日韩精品三区| 亚洲国产成人高清精品| 在线亚洲高清视频| 亚洲精品国产无套在线观| 91老师国产黑色丝袜在线| 国产精品电影院| 成人教育av在线| 中文字幕一区在线观看| 成人黄色在线看| 中文字幕中文字幕一区| 播五月开心婷婷综合| 国产精品不卡一区二区三区| www.性欧美| 中文字幕一区二区不卡| 97久久人人超碰| 亚洲精品视频在线观看网站| 一本高清dvd不卡在线观看| 亚洲精品国产无套在线观| 欧美专区亚洲专区| 午夜精品福利视频网站| 欧美精品色综合| 精品中文av资源站在线观看| 久久精品人人爽人人爽| 粉嫩av一区二区三区| 亚洲欧美日韩系列| 欧美亚洲一区二区在线| 偷窥少妇高潮呻吟av久久免费| 欧美一卡2卡3卡4卡| 国精产品一区一区三区mba桃花 | 国产一区中文字幕| 日本一区二区三区四区| 91麻豆视频网站| 亚洲www啪成人一区二区麻豆| 69堂精品视频| 国产精品一级片| 18成人在线观看| 欧美精品在线一区二区| 久久精品国产精品亚洲综合| 国产日产亚洲精品系列| 91啪亚洲精品| 蜜臀va亚洲va欧美va天堂| 久久精品欧美日韩精品 | 91久久一区二区| 日本最新不卡在线| 欧美韩国一区二区| 欧洲另类一二三四区| 久久不见久久见免费视频7| 国产精品毛片大码女人| 欧美色涩在线第一页| 狠狠狠色丁香婷婷综合久久五月| 国产精品久久久久久久久久久免费看 | 欧美精选一区二区| 国产成人免费视频网站 | 久久亚洲综合色| 在线一区二区三区| 久久99精品久久久久| 日韩毛片视频在线看| 欧美一区二区美女| 91影视在线播放| 久久精品国产精品亚洲红杏| 亚洲欧洲成人精品av97| 欧美一区二区三区日韩视频| 99久久精品免费看国产免费软件| 视频一区免费在线观看| 国产精品视频免费看| 欧美大片顶级少妇| 91国在线观看| 成人午夜免费电影| 日韩中文字幕亚洲一区二区va在线| 国产精品乱码一区二三区小蝌蚪| 51精品国自产在线| 色综合 综合色| 国产成人免费xxxxxxxx| 奇米精品一区二区三区在线观看一| 亚洲私人黄色宅男| 国产亚洲一区二区三区四区 |