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

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

?? main.c

?? can bus driver code.
?? C
字號:
/* main.c * Linux CAN-bus device driver. * Written by Arnaud Westenberg email:arnaud@wanadoo.nl * This software is released under the GPL-License. * Version 0.7  6 Aug 2001 */#define EXPORT_SYMTAB#include <linux/autoconf.h>#if defined (CONFIG_MODVERSIONS) && !defined (MODVERSIONS)#define MODVERSIONS#endif#include <linux/module.h>#if defined (MODVERSIONS)#include <linux/modversions.h>#endif#include <linux/kernel.h>#include <linux/fs.h>#include <linux/wrapper.h>#include <linux/sched.h>#include <linux/version.h>#include <linux/autoconf.h>#if (LINUX_VERSION_CODE <= KERNEL_VERSION(2,2,19))#include <asm/spinlock.h>#else#include <linux/spinlock.h>#endif#if !defined (__GENKSYMS__) #if (defined (MODVERSIONS) && !defined(NOVER))#include <linux/modversions.h>#include "../include/main.ver"#endif#endif#include "../include/main.h"#include "../include/modparms.h"#include "../include/setup.h"#include "../include/proc.h"#include "../include/open.h"#include "../include/close.h"#include "../include/read.h"#include "../include/irq.h"#include "../include/ioctl.h"#include "../include/write.h"#define EXPORT_SYMTAB/* Module parameters, some must be supplied at module loading time */int major=CAN_MAJOR;MODULE_PARM(major,"1i");int minor[MAX_TOT_CHIPS]={-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1};MODULE_PARM(minor, "1-" __MODULE_STRING(MAX_TOT_CHIPS)"i");int extended=0;MODULE_PARM(extended,"1i");int pelican=0;MODULE_PARM(pelican,"1i");int baudrate=0;MODULE_PARM(baudrate,"1i");char *hw[MAX_HW_CARDS]={NULL,};MODULE_PARM(hw, "1-" __MODULE_STRING(MAX_HW_CARDS)"s");int irq[MAX_IRQ]={-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1};MODULE_PARM(irq, "1-" __MODULE_STRING(MAX_IRQ)"i");unsigned long io[MAX_HW_CARDS]={-1,-1,-1,-1,-1,-1,-1,-1};MODULE_PARM(io, "1-" __MODULE_STRING(MAX_HW_CARDS)"i");int stdmask=0;MODULE_PARM(stdmask, "1i");int extmask=0;MODULE_PARM(extmask, "1i");int mo15mask=0;MODULE_PARM(mo15mask, "1i");/* Global structures, used to describe the installed hardware. */struct canhardware_t canhardware;struct canhardware_t *hardware_p=&canhardware;struct candevice_t *candevices_p[MAX_HW_CARDS];struct chip_t *chips_p[MAX_TOT_CHIPS];struct msgobj_t *objects_p[MAX_TOT_MSGOBJS];/* Pointers to dynamically allocated memory are maintained in a linked list * to ease memory deallocation. */struct mem_addr *mem_head=NULL;#if (LINUX_VERSION_CODE <= KERNEL_VERSION(2,2,19))struct file_operations can_fops={	NULL,				/* llseek */	read:		can_read,	write:		can_write,	NULL,				/* readdir */	NULL, 				/* poll */	ioctl:		can_ioctl,	NULL,				/* mmap */	open:		can_open,	NULL,				/* flush */	release:	can_close,	NULL,				/* fsync */}; #else struct file_operations can_fops={	owner:		THIS_MODULE,		read:		can_read,	write:		can_write,	ioctl:		can_ioctl,	open:		can_open,	release:	can_close,};#endifEXPORT_SYMBOL(can_fops);int init_module(void){	int res=0,i=0;	if (parse_mod_parms())		return -EINVAL;	if (init_hw_struct())		return -ENODEV;	#ifdef CAN_DEBUG		list_hw();	#endif	res=register_chrdev(major,DEVICE_NAME, &can_fops);	if (res<0) {		CANMSG("Error registering driver.\n");		return -ENODEV;	}	for (i=0; i<hardware_p->nr_boards; i++) {		if (candevices_p[i]->hwspecops->request_io(candevices_p[i]->io_addr)) 		goto memory_error;	}	for (i=0; i<hardware_p->nr_boards; i++) {		if (candevices_p[i]->hwspecops->reset(i)) 			goto reset_error;	}	i=0;	while ( (chips_p[i] != NULL) && (i < MAX_TOT_CHIPS) ) {		if (!strcmp(chips_p[i]->chip_type,"i82527")) {			if (request_irq(chips_p[i]->chip_irq,i82527_irq_handler,SA_SHIRQ,DEVICE_NAME,chips_p[i]))  				goto interrupt_error;			else				DEBUGMSG("Registered interrupt %d\n",chips_p[i]->chip_irq);		}		if (!strcmp(chips_p[i]->chip_type,"sja1000p") ||  				!strcmp(chips_p[i]->chip_type,"sja1000")) {			if (request_irq(chips_p[i]->chip_irq,	chips_p[i]->chipspecops->irq_handler,SA_SHIRQ,DEVICE_NAME,chips_p[i]))				goto interrupt_error;			else				DEBUGMSG("Registered interrupt %d\n",chips_p[i]->chip_irq);		}		i++;	}	for (i=0; i<hardware_p->nr_boards; i++) {		if (candevices_p[i]->flags & PROGRAMMABLE_IRQ)			if (candevices_p[i]->hwspecops->program_irq(i))				goto interrupt_error;	}	spin_lock_init(&hardware_p->rtr_lock);	hardware_p->rtr_queue=NULL;#ifdef CONFIG_PROC_FS	if (can_init_procdir())		goto proc_error;#endif	return 0;#ifdef CONFIG_PROC_FS	proc_error: ;		CANMSG("Error registering /proc entry.\n");		goto memory_error; #endif	interrupt_error: ;		CANMSG("Error registering interrupt line.\n");		goto memory_error;	reset_error: ;		goto memory_error;	memory_error: ;		for (i=0; i<hardware_p->nr_boards; i++)			candevices_p[i]->hwspecops->release_io(candevices_p[i]->io_addr);		goto register_error;	register_error: ;		res=unregister_chrdev(major,DEVICE_NAME);		if (res<0)			CANMSG("Error unloading CAN driver, error: %d\n",res);		else			CANMSG("Successfully unloaded CAN driver.\n");		return -ENODEV;}void cleanup_module(void){	int res=0,i=0;#ifdef CONFIG_PROC_FS	if (can_delete_procdir())		CANMSG("Error unregistering /proc/can entry.\n"); #endif	while ( (chips_p[i] != NULL) & (i < MAX_TOT_CHIPS) ) {		free_irq(chips_p[i]->chip_irq, chips_p[i]);		i++;	}	for (i=0; i<hardware_p->nr_boards; i++) 		candevices_p[i]->hwspecops->release_io(candevices_p[i]->io_addr);	if ( del_mem_list() ) 		CANMSG("Error deallocating memory\n");	res=unregister_chrdev(major,DEVICE_NAME);	if (res<0)		CANMSG("Error unregistering CAN driver, error: %d\n",res);}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
91黄色激情网站| 中文无字幕一区二区三区| 久久精品亚洲麻豆av一区二区| 国产精品久久久久国产精品日日| 五月天激情综合| 色综合天天在线| 久久精品无码一区二区三区| 石原莉奈在线亚洲二区| 91麻豆国产在线观看| 国产欧美一区二区精品忘忧草| 日日摸夜夜添夜夜添精品视频| 91欧美一区二区| 国产欧美一区二区三区网站| 麻豆一区二区三区| 欧美日韩黄色一区二区| 亚洲狠狠丁香婷婷综合久久久| 国产成人啪午夜精品网站男同| 日韩美女主播在线视频一区二区三区| 一区二区激情小说| 色婷婷av一区二区| 一片黄亚洲嫩模| 91久久精品一区二区三区| 综合久久久久久| 99精品视频在线观看| 中文一区在线播放| 成人一区二区三区视频| 国产日韩成人精品| 国产成人h网站| 国产女人aaa级久久久级| 国产成人亚洲精品青草天美| 国产偷国产偷亚洲高清人白洁| 国产精品一区二区视频| 中文字幕av资源一区| 不卡电影免费在线播放一区| 中文无字幕一区二区三区| 成人精品视频一区| 亚洲欧美偷拍三级| 欧美三级三级三级爽爽爽| 亚洲不卡一区二区三区| 在线不卡中文字幕| 美女视频黄免费的久久 | 精品国产91洋老外米糕| 久久99精品久久久久久国产越南| 欧美mv和日韩mv国产网站| 麻豆精品视频在线| 国产喷白浆一区二区三区| 懂色中文一区二区在线播放| 17c精品麻豆一区二区免费| 91国内精品野花午夜精品| 亚洲国产精品视频| 欧美v日韩v国产v| 成人福利视频网站| 亚洲午夜私人影院| 欧美不卡一区二区三区四区| 粉嫩久久99精品久久久久久夜| 亚洲天堂福利av| 69堂成人精品免费视频| 韩国一区二区三区| 一区二区三区在线视频观看58| 在线成人av网站| 波多野结衣视频一区| 视频一区中文字幕国产| 国产三级精品三级在线专区| 在线视频你懂得一区| 久久精品国产一区二区三区免费看| 欧美激情在线一区二区三区| 欧美写真视频网站| 国产又黄又大久久| 亚洲一区在线视频| 久久嫩草精品久久久精品| 欧美在线观看一二区| 激情久久五月天| 亚洲国产精品一区二区www在线| 久久影视一区二区| 欧美视频你懂的| 国产成人综合在线观看| 亚洲v中文字幕| 成人欧美一区二区三区黑人麻豆 | 波多野结衣中文字幕一区| 偷拍一区二区三区四区| 亚洲国产精品二十页| 欧美一级午夜免费电影| 色哟哟一区二区在线观看| 国产精品主播直播| 五月天激情小说综合| 亚洲免费在线看| 中文字幕va一区二区三区| 精品欧美乱码久久久久久| 欧美亚日韩国产aⅴ精品中极品| 成人免费av在线| 国产在线精品一区二区| 天天色综合成人网| 又紧又大又爽精品一区二区| 中文字幕欧美国产| 久久亚洲免费视频| 欧美一卡二卡在线观看| 7777精品伊人久久久大香线蕉超级流畅 | 欧美精品在线观看一区二区| 成人av高清在线| 国产精品亚洲成人| 久久er精品视频| 免费一级欧美片在线观看| 亚洲综合av网| 一区二区三区精品在线| 亚洲视频图片小说| 最新日韩在线视频| 成人欧美一区二区三区白人| 国产精品久久网站| 国产午夜精品一区二区三区嫩草| 日韩欧美中文字幕公布| 日韩一区二区三区视频在线| 欧美精品久久99久久在免费线 | 国产91清纯白嫩初高中在线观看| 激情丁香综合五月| 国内精品伊人久久久久av一坑| 老汉av免费一区二区三区| 蜜桃在线一区二区三区| 久久99精品久久久| 国产成人免费在线| 不卡一区二区三区四区| 91在线播放网址| 欧美日韩一本到| 日韩亚洲欧美高清| 欧美精品一区二区在线观看| 国产丝袜在线精品| 最近日韩中文字幕| 亚洲综合无码一区二区| 性久久久久久久久久久久| 日本视频一区二区三区| 韩国精品免费视频| 99视频在线精品| 欧美日韩一区二区三区不卡| 91精品国产综合久久久久久| 国产亚洲一区二区三区在线观看 | av在线一区二区三区| 在线亚洲精品福利网址导航| 欧美美女黄视频| 久久麻豆一区二区| 1024成人网| 蜜桃久久av一区| 成人网页在线观看| 欧美午夜视频网站| 精品国产一二三区| 亚洲精品福利视频网站| 奇米亚洲午夜久久精品| 成人av手机在线观看| 4438x成人网最大色成网站| 久久久久国产精品麻豆| 亚洲制服丝袜av| 国产伦精一区二区三区| 色综合久久久久网| 久久午夜羞羞影院免费观看| 亚洲精品欧美激情| 九九九精品视频| 欧美性xxxxxxxx| 国产精品伦理在线| 另类小说色综合网站| 99久久er热在这里只有精品66| 欧美人妖巨大在线| 国产精品家庭影院| 久草这里只有精品视频| 日本韩国欧美三级| 国产人伦精品一区二区| 日本va欧美va精品| 欧美在线色视频| 国产精品网站在线观看| 蜜桃久久久久久久| 欧美日韩一区二区三区四区| 欧美国产日本韩| 国内国产精品久久| 欧美一区二区三区色| 一区二区在线观看免费视频播放 | 国产午夜精品久久久久久免费视 | 蜜臀a∨国产成人精品| 日本高清无吗v一区| 国产亚洲美州欧州综合国| 麻豆精品国产91久久久久久| 在线观看日韩一区| 亚洲色图19p| 成人精品小蝌蚪| 国产欧美一区二区精品忘忧草 | 美女网站视频久久| 欧美高清你懂得| 午夜精品久久一牛影视| 色婷婷久久99综合精品jk白丝| 中文字幕欧美国产| 成人听书哪个软件好| 国产午夜精品久久久久久久 | 亚洲日本丝袜连裤袜办公室| 成人国产精品视频| 国产欧美中文在线| 国产成人精品亚洲777人妖 | 精品国产电影一区二区| 免费的国产精品| 日韩久久久久久| 久久电影网站中文字幕 | 在线不卡a资源高清| 舔着乳尖日韩一区| 日韩免费高清视频| 黄色日韩网站视频|