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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? demo.c

?? demo驅動程序
?? C
字號:
/****************************************************************************************** **  file name: demo.c**  author   : Zou jian guo**  date     : 2003-12-22**  email    : ah_zou@tom.com**  updated by Wang jun**  data:  2006-6-2**  email:wju_uptech@126.com**  Descriptions: a demo for Linux device deiver  **  This demo character device driver implements the following functions:**  two buffers will be used to simulate a real port.  wbuff is a buffer**  which will be used to store the data that is written to the device,**  rbuff is another buffer which will be used when the data is red from**  the device.**  the string written to wbuff will be copied to rbuff in reverse order.** Copyright (C) 2002-2006  UP-TECH  All rights reserved.**** This file is part of basic demos for UP-NETARM2410 or UP-NETARM2410-S** ** This example program may be used, distributed and modified without limitation.** No warranty is attached, we cannot take responsibility for errors or fitness for use.****************************************************************************************//*************************************************************************************///#define CONFIG_DEVFS_FS      //use devfs#ifndef __KERNEL__#define __KERNEL__#endif#ifndef MODULE#define MODULE#endif/*************************************************************************************/#include <linux/config.h>#include <linux/module.h>#include <linux/kernel.h>#include <linux/fs.h>#include <linux/errno.h>#include <linux/slab.h>#include <linux/mm.h>#include <linux/init.h>#include <linux/interrupt.h>#include <asm/uaccess.h>#include <asm/hardware.h>#include <linux/irq.h>#include "demo.h"static int DEMO_MAJOR = 0;          //major device number allocated dynamicly /****************************************************************************//* open and close *//************************************************************ function name : demo_open         ** input param   :   ** output param  :  0** description   :  open the demo device************************************************************/static int demo_open(struct inode *inode, struct file *filp){	memset(wbuff, 0, BUFFSIZE);	memset(rbuff, 0, BUFFSIZE);	count = 0;	MOD_INC_USE_COUNT;   //increase  usr counter		return 0;}/*********************************************************************************//************************************************************* function name : demo_close         ** input param   :   ** output param  :  0** description   :  close the demo device ************************************************************/static int demo_close(struct inode *inode, struct file *filp){		MOD_DEC_USE_COUNT;  //操作使用計數的宏		return 0;}/*********************************************************************************//* read and write *//************************************************************* function name : demo_read         ** input param   :   ** output param  : cnt** description   :  send reversed data to user************************************************************/static ssize_t demo_read(struct file *filp, char *buf, size_t cnt, 	loff_t *off){	int i;	if(!count)		return 0;	for(i=0; i<count; i++)		rbuff[i] = wbuff[count-i-1];   //reverse data	if(cnt > count)		cnt = count;	copy_to_user(buf, rbuff, cnt);     // send data to user	return cnt;}/***************************************************************************//************************************************************* function name : demo_write         ** input param   :   ** output param  :  cnt** description   :  receive data from user************************************************************/static ssize_t demo_write(struct file *filp, const char *buf, size_t cnt, 	loff_t *off){	if(cnt > BUFFSIZE)		cnt = BUFFSIZE;	copy_from_user(wbuff, buf, cnt);         // receive data from user	count = cnt;	return cnt;}/*************************************************************************************//* ioctl *//************************************************************* function name : demo_ioctl         ** input param   :   ** output param  :  0** description   :  ioctl frame************************************************************/static int demo_ioctl(struct inode *inode, struct file *filp, 	unsigned int cmd, unsigned long arg){	switch(cmd) {	default:		break;	}	return 0;}/*************************************************************************************//* the device fops */static struct file_operations demo_fops = {	owner:		THIS_MODULE,	read:		demo_read,	write:		demo_write,	ioctl:		demo_ioctl,	open:		demo_open,	release:		demo_close,};/*************************************************************************************//*use devfs*/#ifdef CONFIG_DEVFS_FSstatic devfs_handle_t  devfs_demo_dir, devfs_demoraw;#endif/*************************************************************************************//* init and exit *//************************************************************* function name : demo_init         ** input param   :   ** output param  :  ** description   :  initial demo module************************************************************/static int __init demo_init(void){	int result;	wbuff = kmalloc(BUFFSIZE, GFP_KERNEL);	rbuff = kmalloc(BUFFSIZE, GFP_KERNEL);	result = register_chrdev(DEMO_MAJOR, "demo", &demo_fops);	if(result < 0) {		printk(KERN_ERR "Cannot register demo device.\n");		kfree(wbuff);		kfree(rbuff);		return -EIO;	}    if(DEMO_MAJOR==0)    	DEMO_MAJOR = result;	/*devfs*/#ifdef CONFIG_DEVFS_FS    devfs_demo_dir = devfs_mk_dir(NULL, "demo", NULL);   //make demo device directory    devfs_demoraw = devfs_register(devfs_demo_dir, "0", DEVFS_FL_DEFAULT,                    DEMO_MAJOR, DEMO_MINOR, S_IFCHR | S_IRUSR | S_IWUSR,                    &demo_fops, NULL);   //register demo device "0"#endif   	/* some furthertreatment for this case */		return 0;}/***************************************************************************//************************************************************* function name : demo_exit         ** input param   :   ** output param  :  ** description   :  exit demo module************************************************************/static void __exit demo_exit(void){	int result;#ifdef CONFIG_DEVFS_FS		devfs_unregister(devfs_demoraw);    //delete demo device 	devfs_unregister(devfs_demo_dir);   //delete demo device directory #endif	result = unregister_chrdev(DEMO_MAJOR, "demo");	if(result < 0) {		printk(KERN_ERR "Cannot remove demo device.\n");		return;	}	if(wbuff)		kfree(wbuff);          //free memory	if(rbuff)		kfree(rbuff);	return;}/*************************************************************************************/MODULE_LICENSE("GPL");module_init(demo_init);module_exit(demo_exit);

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日本不卡在线视频| 一区二区三区四区av| 欧美日韩一区二区三区四区五区| 高清日韩电视剧大全免费| 精品一区二区三区蜜桃| 久久成人久久爱| 韩国一区二区视频| 韩国v欧美v亚洲v日本v| 国产乱色国产精品免费视频| 狠狠v欧美v日韩v亚洲ⅴ| 国产精品综合二区| 成人精品视频一区二区三区| 99久久久免费精品国产一区二区| a美女胸又www黄视频久久| 91视频在线观看免费| 欧美在线观看18| 91精品国产综合久久久蜜臀粉嫩| 欧美精品xxxxbbbb| 精品国产伦一区二区三区观看方式| 欧美大片一区二区| 欧美极品美女视频| 亚洲一区视频在线| 另类成人小视频在线| 国产传媒一区在线| 色天天综合色天天久久| 欧美色涩在线第一页| 日韩欧美视频一区| 国产精品白丝在线| 日韩中文字幕亚洲一区二区va在线| 日本最新不卡在线| 丁香婷婷综合激情五月色| 91九色最新地址| 日韩三区在线观看| 国产精品国产精品国产专区不蜜 | 亚洲一区二区3| 免费观看91视频大全| 国产不卡免费视频| 欧美视频一二三区| 精品播放一区二区| 一区二区三区电影在线播| 久久精品国产77777蜜臀| 成人午夜看片网址| 日韩亚洲欧美一区二区三区| 国产精品乱子久久久久| 另类的小说在线视频另类成人小视频在线 | 色噜噜狠狠色综合欧洲selulu| 欧美性猛交xxxxxxxx| 国产亚洲精久久久久久| 午夜影视日本亚洲欧洲精品| 福利一区二区在线观看| 日韩免费成人网| 一二三区精品福利视频| 国产成人午夜片在线观看高清观看| 在线亚洲高清视频| 国产精品高潮呻吟久久| 国产一区啦啦啦在线观看| 欧美图区在线视频| 国产精品每日更新| 激情综合色综合久久| 正在播放亚洲一区| 亚洲国产成人av好男人在线观看| 成人h动漫精品一区二| 精品理论电影在线观看 | 成人黄色av电影| 精品欧美乱码久久久久久| 午夜精彩视频在线观看不卡| 9人人澡人人爽人人精品| 久久精品视频在线免费观看| 日本91福利区| 欧美日韩一区三区四区| 一区二区高清免费观看影视大全| 成人午夜短视频| 中文字幕精品综合| 成人h精品动漫一区二区三区| 久久久精品一品道一区| 国产精品一区二区在线看| xvideos.蜜桃一区二区| 久久66热偷产精品| 欧美精品一区二| 国产精品影视在线| 国产日韩欧美不卡| 高清在线不卡av| 亚洲欧洲成人精品av97| 色综合色狠狠综合色| 尤物在线观看一区| 在线观看一区二区视频| 婷婷综合另类小说色区| 91精品啪在线观看国产60岁| 日韩高清一级片| 日韩亚洲电影在线| 国产精品一区在线| 国产欧美日韩不卡免费| av中文字幕一区| 亚洲专区一二三| 91精品免费在线观看| 黄色资源网久久资源365| 国产欧美va欧美不卡在线| 97精品久久久久中文字幕| 亚洲综合免费观看高清完整版 | 久久久精品国产99久久精品芒果 | 91精品国产一区二区三区| 蜜桃视频在线观看一区| 久久日韩粉嫩一区二区三区| 福利91精品一区二区三区| 日韩理论片在线| 欧美情侣在线播放| 岛国精品在线观看| 亚洲国产精品久久艾草纯爱| 91精品国产aⅴ一区二区| 国产在线一区二区| 亚洲最新在线观看| 精品国产污网站| 色综合中文字幕| 国产在线不卡一区| 亚洲精选在线视频| 精品国产百合女同互慰| 99久久国产综合精品麻豆| 亚洲h动漫在线| 国产精品女同一区二区三区| 欧洲av在线精品| 国产在线播放一区三区四| 亚洲一卡二卡三卡四卡五卡| 国产日韩精品一区| 日韩欧美卡一卡二| 欧美日韩精品专区| 成人h动漫精品一区二区 | 久久精品免视看| 欧美精品1区2区3区| 91蜜桃在线免费视频| 国产美女精品一区二区三区| 天天色天天操综合| 亚洲人成网站色在线观看 | 91啦中文在线观看| 丰满放荡岳乱妇91ww| 秋霞电影网一区二区| 亚洲综合区在线| 亚洲欧美一区二区久久| 国产精品久久久久aaaa樱花 | 久久成人免费网站| 欧美一区二区三区小说| 欧洲一区二区av| 成人精品免费看| 亚洲大片精品永久免费| 亚洲激情校园春色| 国产视频一区在线观看| 欧美精品粉嫩高潮一区二区| 成人免费视频网站在线观看| 蜜桃精品视频在线| 亚洲永久精品大片| 最新国产成人在线观看| 精品国产乱码久久久久久图片 | 一区二区三区.www| 国产午夜一区二区三区| 日韩三级av在线播放| 欧美一级理论片| 欧美日韩视频一区二区| 99久久综合精品| 成人网在线播放| 播五月开心婷婷综合| 国产毛片精品视频| 另类小说综合欧美亚洲| 日产精品久久久久久久性色| 麻豆精品一区二区av白丝在线| 亚洲国产毛片aaaaa无费看| 综合激情成人伊人| 国产女人aaa级久久久级 | 天使萌一区二区三区免费观看| 国产精品久久久爽爽爽麻豆色哟哟 | 一卡二卡欧美日韩| 日本一区二区三区高清不卡| 欧美亚洲自拍偷拍| 色婷婷久久久久swag精品| 97精品国产97久久久久久久久久久久| 国产盗摄精品一区二区三区在线| 精品亚洲国产成人av制服丝袜| 香蕉影视欧美成人| 日韩综合在线视频| 六月丁香婷婷久久| 精品中文字幕一区二区| 国产乱色国产精品免费视频| 国产一区二区免费在线| 国产黄色精品视频| 91丨porny丨在线| 在线观看日韩一区| 欧美二区三区91| 日韩精品专区在线影院观看| 中文字幕亚洲电影| 一区二区三区不卡视频在线观看| 一区二区激情视频| 亚洲狠狠爱一区二区三区| 亚洲va欧美va天堂v国产综合| 亚洲韩国一区二区三区| 麻豆91精品91久久久的内涵| 韩国毛片一区二区三区| 99精品1区2区| 67194成人在线观看| 国产日韩欧美精品综合| 洋洋av久久久久久久一区| 国产乱淫av一区二区三区| 91色视频在线|