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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? scull.h

?? linux設(shè)備驅(qū)動第二版例子程序
?? H
字號:
/* * scull.h -- definitions for the char module * * Copyright (C) 2001 Alessandro Rubini and Jonathan Corbet * Copyright (C) 2001 O'Reilly & Associates * * The source code in this file can be freely used, adapted, * and redistributed in source or binary form, so long as an * acknowledgment appears in derived source files.  The citation * should list that the code comes from the book "Linux Device * Drivers" by Alessandro Rubini and Jonathan Corbet, published * by O'Reilly & Associates.   No warranty is attached; * we cannot take responsibility for errors or fitness for use. * * $Id: scull.h,v 1.11 2001/07/18 22:28:18 rubini Exp $ */#ifndef _SCULL_H_#define _SCULL_H_#include <linux/ioctl.h> /* needed for the _IOW etc stuff used later *//* version dependencies have been confined to a separate file */#include "sysdep.h"/* * Macros to help debugging */#undef PDEBUG             /* undef it, just in case */#ifdef SCULL_DEBUG#  ifdef __KERNEL__     /* This one if debugging is on, and kernel space */#    define PDEBUG(fmt, args...) printk( KERN_DEBUG "scull: " fmt, ## args)#  else     /* This one for user space */#    define PDEBUG(fmt, args...) fprintf(stderr, fmt, ## args)#  endif#else#  define PDEBUG(fmt, args...) /* not debugging: nothing */#endif#undef PDEBUGG#define PDEBUGG(fmt, args...) /* nothing: it's a placeholder */#ifndef SCULL_MAJOR#define SCULL_MAJOR 0   /* dynamic major by default */#endif#ifndef SCULL_NR_DEVS#define SCULL_NR_DEVS 4    /* scull0 through scull3 */#endif#ifndef SCULL_P_NR_DEVS#define SCULL_P_NR_DEVS 4  /* scullpipe0 through scullpipe3 */#endif/* * The bare device is a variable-length region of memory. * Use a linked list of indirect blocks. * * "Scull_Dev->data" points to an array of pointers, each * pointer refers to a memory area of SCULL_QUANTUM bytes. * * The array (quantum-set) is SCULL_QSET long. */#ifndef SCULL_QUANTUM#define SCULL_QUANTUM 4000#endif#ifndef SCULL_QSET#define SCULL_QSET    1000#endif/* * The pipe device is a simple circular buffer. Here its default size */#ifndef SCULL_P_BUFFER#define SCULL_P_BUFFER 4000#endif#ifdef CONFIG_DEVFS_FS /* only if enabled, to avoid errors in 2.0 */#include <linux/devfs_fs_kernel.h>#else  typedef void * devfs_handle_t;  /* avoid #ifdef inside the structure */#endif/* * This is somehow a hack: avoid ifdefs in the cleanup code by declaring * an empty procedure as a placeholder for devfs_unregister. This is * only done *unless* <linux/devfs_fs_kernel.h> was included, as that * header already implements placeholder for all the devfs functions *//*............................................... degin-tag devfs-ifdef */#ifndef DEVFS_FL_DEFAULTextern inline void devfs_unregister(devfs_handle_t de) {}#endifextern devfs_handle_t scull_devfs_dir;typedef struct Scull_Dev {   void **data;   struct Scull_Dev *next;   /* next listitem */   int quantum;              /* the current quantum size */   int qset;                 /* the current array size */   unsigned long size;   devfs_handle_t handle;    /* only used if devfs is there */   unsigned int access_key;  /* used by sculluid and scullpriv */   struct semaphore sem;     /* mutual exclusion semaphore     */} Scull_Dev;/* * Split minors in two parts */#define TYPE(dev)   (MINOR(dev) >> 4)  /* high nibble */#define NUM(dev)    (MINOR(dev) & 0xf) /* low  nibble *//* * Different minors behave differently, so let's use multiple fops */extern struct file_operations scull_fops;        /* simplest: global */extern struct file_operations scull_priv_fops;   /* private region   */extern struct file_operations scull_pipe_fops;   /* circular buffer  */extern struct file_operations scull_sngl_fops;   /* single open      */extern struct file_operations scull_user_fops;   /* single process   */extern struct file_operations scull_wusr_fops;   /* single user      *//* * The different configurable parameters */extern int scull_major;     /* main.c */extern int scull_nr_devs;extern int scull_quantum;extern int scull_qset;extern int scull_p_nr_devs;    /* pipe.c */extern int scull_p_buffer;/* * Prototypes for shared functions */int     scull_p_init(void);void    scull_p_cleanup(void);int     scull_access_init(void);void    scull_access_cleanup(void);int     scull_trim(Scull_Dev *dev);ssize_t scull_read (struct file *filp, char *buf, size_t count,                    loff_t *f_pos);ssize_t scull_write (struct file *filp, const char *buf, size_t count,                     loff_t *f_pos);loff_t  scull_llseek (struct file *filp, loff_t off, int whence);int     scull_ioctl (struct inode *inode, struct file *filp,                     unsigned int cmd, unsigned long arg);/* * Ioctl definitions *//* Use 'k' as magic number */#define SCULL_IOC_MAGIC  'k'#define SCULL_IOCRESET    _IO(SCULL_IOC_MAGIC, 0)/* * S means "Set" through a ptr, * T means "Tell" directly with the argument value * G means "Get": reply by setting through a pointer * Q means "Query": response is on the return value * X means "eXchange": G and S atomically * H means "sHift": T and Q atomically */#define SCULL_IOCSQUANTUM _IOW(SCULL_IOC_MAGIC,  1, scull_quantum)#define SCULL_IOCSQSET    _IOW(SCULL_IOC_MAGIC,  2, scull_qset)#define SCULL_IOCTQUANTUM _IO(SCULL_IOC_MAGIC,   3)#define SCULL_IOCTQSET    _IO(SCULL_IOC_MAGIC,   4)#define SCULL_IOCGQUANTUM _IOR(SCULL_IOC_MAGIC,  5, scull_quantum)#define SCULL_IOCGQSET    _IOR(SCULL_IOC_MAGIC,  6, scull_qset)#define SCULL_IOCQQUANTUM _IO(SCULL_IOC_MAGIC,   7)#define SCULL_IOCQQSET    _IO(SCULL_IOC_MAGIC,   8)#define SCULL_IOCXQUANTUM _IOWR(SCULL_IOC_MAGIC, 9, scull_quantum)#define SCULL_IOCXQSET    _IOWR(SCULL_IOC_MAGIC,10, scull_qset)#define SCULL_IOCHQUANTUM _IO(SCULL_IOC_MAGIC,  11)#define SCULL_IOCHQSET    _IO(SCULL_IOC_MAGIC,  12)/* * The other entities only have "Tell" and "Query", because they're * not printed in the book, and there's no need to have all six. * (The previous stuff was only there to show different ways to do it. */#define SCULL_P_IOCTSIZE _IO(SCULL_IOC_MAGIC,   13)#define SCULL_P_IOCQSIZE _IO(SCULL_IOC_MAGIC,   14)/* ... more to come */#define SCULL_IOCHARDRESET _IO(SCULL_IOC_MAGIC, 15) /* debugging tool */#define SCULL_IOC_MAXNR 15#endif /* _SCULL_H_ */

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
精品欧美乱码久久久久久| 亚洲黄一区二区三区| 最新久久zyz资源站| 石原莉奈一区二区三区在线观看 | 亚洲午夜久久久久久久久电影网| 人禽交欧美网站| 99精品欧美一区| 亚洲精品一区二区三区福利| 一区二区激情视频| 国产成人在线视频免费播放| 91精品国产日韩91久久久久久| 国产精品午夜久久| 狠狠色丁香久久婷婷综合丁香| 在线一区二区三区四区五区 | 91在线云播放| 久久只精品国产| 日韩在线一二三区| 在线免费不卡视频| 亚洲男同性视频| av在线不卡电影| 国产精品天美传媒沈樵| 国内精品视频一区二区三区八戒| 日韩一区二区三区精品视频| 日日噜噜夜夜狠狠视频欧美人| 色狠狠色狠狠综合| 亚洲精品免费电影| 一本到不卡免费一区二区| 国产精品久久久久影院色老大| 国产成人无遮挡在线视频| 久久色.com| 国产精品综合网| wwwwww.欧美系列| 久久99精品国产.久久久久| 欧美一级精品大片| 蜜桃久久精品一区二区| 日韩欧美黄色影院| 国产乱码字幕精品高清av| 精品美女在线播放| 国产a级毛片一区| 国产精品成人一区二区艾草| 99久久er热在这里只有精品66| 最好看的中文字幕久久| 色综合色狠狠综合色| 亚洲午夜一区二区三区| 欧美精选午夜久久久乱码6080| 亚洲一区二区三区四区五区黄| 欧美视频在线一区| 婷婷激情综合网| 精品卡一卡二卡三卡四在线| 国产91精品精华液一区二区三区| 欧美国产一区二区| 色婷婷精品久久二区二区蜜臂av| 午夜视频久久久久久| 欧美电影免费观看完整版| 国产高清亚洲一区| 国产精品久久久久影院色老大| 在线视频国内自拍亚洲视频| 日日夜夜免费精品| 国产欧美视频在线观看| 色综合中文字幕国产| 亚洲一区视频在线| 精品国精品国产| 色综合久久久久综合体| 日韩成人dvd| 国产精品区一区二区三| 欧美日韩综合一区| 国产美女娇喘av呻吟久久| 亚洲婷婷国产精品电影人久久| 777色狠狠一区二区三区| 国产毛片精品视频| 亚洲一区中文日韩| 久久久久久99精品| 欧美日韩免费视频| 国产成人av电影在线| 亚洲伊人伊色伊影伊综合网| 国产亚洲一区二区三区在线观看 | 国产一区二区美女| 一区二区三区不卡视频 | 精品制服美女丁香| 亚洲视频一二三| 精品蜜桃在线看| 精品视频在线免费观看| 成人一道本在线| 美女一区二区久久| 亚洲情趣在线观看| 久久精品一区二区三区不卡| 在线播放中文字幕一区| 91在线一区二区三区| 韩日欧美一区二区三区| 亚洲www啪成人一区二区麻豆| 中文字幕久久午夜不卡| 欧美成人猛片aaaaaaa| 欧美亚洲自拍偷拍| 91在线视频在线| 国产高清久久久久| 蜜桃免费网站一区二区三区| 亚洲国产裸拍裸体视频在线观看乱了| 中文字幕欧美激情| 久久尤物电影视频在线观看| 91精品国产福利在线观看| 91激情五月电影| 91色乱码一区二区三区| 国产91精品免费| 精品写真视频在线观看| 日韩电影在线观看一区| 天堂久久一区二区三区| 亚洲综合色成人| 亚洲麻豆国产自偷在线| 中文字幕一区二区日韩精品绯色| 国产欧美一区二区精品性| 精品国产髙清在线看国产毛片 | 色综合天天综合网国产成人综合天| 国产一区免费电影| 国模冰冰炮一区二区| 久久99国产精品久久| 蜜乳av一区二区| 免费日本视频一区| 日本不卡视频在线观看| 日韩电影在线观看一区| 麻豆久久一区二区| 国产在线不卡一区| 国产精品一区二区久激情瑜伽| 精品在线你懂的| 国产激情偷乱视频一区二区三区 | 国产精品福利一区| 国产精品美女久久久久久久久久久| 国产欧美在线观看一区| 国产精品网站在线观看| 亚洲丝袜制服诱惑| 一区二区三区精品在线观看| 午夜av电影一区| 麻豆精品一区二区| 国产成人在线影院| 色综合久久66| 欧美精品v国产精品v日韩精品| 欧美一区二区网站| 久久久久国产精品厨房| 亚洲欧洲精品成人久久奇米网| 亚洲天堂成人网| 日韩有码一区二区三区| 国产一区二区三区综合| 99久久婷婷国产| 欧美日韩一区二区三区视频| 日韩午夜激情免费电影| 国产精品美女www爽爽爽| 一区二区三区中文在线观看| 日韩黄色一级片| 国产很黄免费观看久久| 色天使色偷偷av一区二区| 91精品国产综合久久久蜜臀粉嫩| 精品盗摄一区二区三区| 亚洲色图视频网站| 久久99久久久欧美国产| av成人动漫在线观看| 欧美二区在线观看| 亚洲欧美综合另类在线卡通| 香蕉影视欧美成人| 成人97人人超碰人人99| 欧美一区二区三区思思人| 中文字幕欧美国产| 麻豆精品蜜桃视频网站| 91视频免费观看| 精品粉嫩aⅴ一区二区三区四区| 综合精品久久久| 国产一区二区三区不卡在线观看| 欧美日韩在线电影| 中文字幕巨乱亚洲| 美国毛片一区二区三区| 91小视频免费观看| 国产亚洲欧美日韩日本| 日韩激情一区二区| 色综合天天性综合| 久久久91精品国产一区二区精品| 日韩电影一二三区| 日本道免费精品一区二区三区| 国产欧美一区二区精品秋霞影院| 日产欧产美韩系列久久99| 色悠悠亚洲一区二区| 国产精品网友自拍| 国产老肥熟一区二区三区| 日韩亚洲欧美成人一区| 亚洲成a天堂v人片| 一本在线高清不卡dvd| 国产精品无码永久免费888| 国内精品写真在线观看| 日韩一区二区中文字幕| 日韩av一区二区三区四区| 欧美日韩小视频| 亚洲午夜精品久久久久久久久| 色婷婷久久一区二区三区麻豆| 国产精品另类一区| 丁香一区二区三区| 久久久久久亚洲综合影院红桃 | 91视频你懂的| 日韩理论片在线| www.av精品| 最新高清无码专区| 91免费视频大全| 亚洲免费大片在线观看| 色94色欧美sute亚洲线路一久 |