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

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

?? walei.c

?? linux下can-driver.zip
?? C
字號(hào):
#include <linux/unistd.h>#include <linux/module.h>#if defined(CONFIG_SMP)#define __SMP__#endif#if defined(CONFIG_MODVERSIONS)#define MODVERSIONS#endif#include <linux/sched.h>#include <linux/kernel.h>#include <linux/fs.h>#include <linux/errno.h>#include <linux/malloc.h>#include <linux/ioport.h>#include <linux/mm.h>#include <linux/interrupt.h>#include <linux/tqueue.h>#include <linux/timer.h>#include <linux/delay.h>#include <linux/types.h>#include <asm/io.h>#include <asm/segment.h>#include <asm/irq.h>#include <asm/signal.h>#include <asm/siginfo.h>#include <asm/uaccess.h>#include <asm/fcntl.h>#include <asm/cache.h>#include <asm/atomic.h>#include <sys/syscall.h>#include "sjacan.h"/*****************************Variable define*******************************/unsigned int SJA_major = SJA_MAJOR;struct SJA_device *Device[SJA_NUM];unsigned int SJA_irq[SJA_NUM] = {6,6};unsigned int SJA_baudrate[SJA_NUM] = {40,40};static char *SJA_name[SJA_NUM] = {"sjacan0","sjacan1"};/*****************************Function define*******************************/void SJA_interrupt(int ,void *,struct pt_regs *);void recv_bottom_half(void *);void timer_function(unsigned long);/*****************************SJA device initialize*************************/static int SJA_init(void){        int res,i;        res = check_region(SJA_CMD_PORT,3);        if(res < 0) {               printk(KERN_ALERT"check SJA port failed.\n");               return res;        }        request_region(SJA_CMD_PORT,3,"SJACAN");        for(i=0;i<SJA_NUM;i++) {                Device[i] = kmalloc(sizeof(struct SJA_device),GFP_KERNEL);                if(Device[i] == NULL) {                        printk(KERN_ALERT"allocate device memory failed.\n");                        return(-ENOMEM);                }                memset(Device[i],0,sizeof(struct SJA_device));                Device[i]->RecvBuf = (unsigned char *)get_free_page(GFP_KERNEL);                if(Device[i]->RecvBuf == NULL) {                        printk(KERN_ALERT"allocate Recv memory failed.\n");                        return(-ENOMEM);                }                memset(Device[i]->RecvBuf,0,BUFSIZ);                Device[i]->RecvHead = 0;                Device[i]->RecvTail = 0;                Device[i]->RecvNum = 0;                Device[i]->RecvQueue = NULL;                Device[i]->SendBuf = (unsigned char *)get_free_page(GFP_KERNEL);                if(Device[i]->SendBuf == NULL) {                        printk(KERN_ALERT"allocate Send memory failed.\n");                        return(-ENOMEM);                }                memset(Device[i]->SendBuf,0,BUFSIZ);                Device[i]->recv_bottom_task =                        (struct tq_struct *)kmalloc(sizeof(struct tq_struct),GFP_KERNEL);                if(Device[i]->recv_bottom_task == NULL) {                        printk(KERN_ALERT"allocate bottom memory failed.\n");                        return(-ENOMEM);                }                memset(Device[i]->recv_bottom_task,0,sizeof(struct tq_struct));                Device[i]->recv_bottom_task->routine = recv_bottom_half;                Device[i]->recv_bottom_task->data = (void *)Device[i];                Device[i]->timer =                        (struct timer_list *)kmalloc(sizeof(struct timer_list),GFP_KERNEL);                if(Device[i]->timer == NULL) {                        printk(KERN_ALERT"allocate timer memory failed.\n");                        return(-ENOMEM);                }                Device[i]->timer->data = 0;                Device[i]->timer->function = timer_function;                Device[i]->timer->expires = 0;                Device[i]->TimerCount = 0;                init_timer(Device[i]->timer);                Device[i]->PortNum = i;                Device[i]->FrameMode = 1;                Device[i]->IrqNum = SJA_irq[i];                Device[i]->BaudRate = SJA_baudrate[i];        }        return 0;}/*****************************Function bottom interrupt********************/void recv_bottom_half(void *device){}/*****************************Function interrupt****************************/void SJA_interrupt(int irq,void *dev_id,struct pt_regs *regs){}/*****************************SJACAN open**********************************/int SJA_open(struct inode *inode,struct file *filp){        int res;        int PortNum;        struct SJA_device *dev;        PortNum = MINOR(inode->i_rdev);        if(PortNum > SJA_NUM) return(-ENODEV);                dev = Device[PortNum];        if((filp->f_flags & O_ACCMODE) == O_WRONLY) {        } else {               if(dev->ref_count == 0) {                       res = request_irq(dev->IrqNum, SJA_interrupt,                             SA_SHIRQ | SA_INTERRUPT,SJA_name[dev->PortNum],dev);                       if(res < 0) {                                   printk(KERN_ALERT"can't request irq %i.\n",dev->IrqNum);                                   return res;                       }                       printk(KERN_ALERT"request irq %i success.\n",dev->IrqNum);                       /*****************Initialize SJA1000*********************/                       if(dev->FrameMode)                               SJA_WRITE(0x01,SJA_MODE,(SJA1_DAT_PORT+PortNum));                       SJA_WRITE(0x00,SJA_MODE,(SJA1_DAT_PORT+PortNum));                                       SJA_WRITE(0x01,SJA_ACR0,(SJA1_DAT_PORT+PortNum));                       SJA_WRITE(0xff,SJA_ACR1,(SJA1_DAT_PORT+PortNum));                       SJA_WRITE(0x02,SJA_ACR2,(SJA1_DAT_PORT+PortNum));                       SJA_WRITE(0xff,SJA_ACR3,(SJA1_DAT_PORT+PortNum));                       SJA_WRITE(0xff,SJA_AMR0,(SJA1_DAT_PORT+PortNum));                       SJA_WRITE(0xff,SJA_AMR1,(SJA1_DAT_PORT+PortNum));                       SJA_WRITE(0xff,SJA_AMR2,(SJA1_DAT_PORT+PortNum));                       SJA_WRITE(0xff,SJA_AMR3,(SJA1_DAT_PORT+PortNum));                       SJA_WRITE(0x07,SJA_BTR0,(SJA1_DAT_PORT+PortNum));                       SJA_WRITE(0xff,SJA_BTR1,(SJA1_DAT_PORT+PortNum));/*Set baudrate = 40k*/                       SJA_WRITE(0x1a,SJA_OCR,(SJA1_DAT_PORT+PortNum));                       SJA_WRITE(0x01,SJA_IE,(SJA1_DAT_PORT+PortNum));                       SJA_WRITE(0x00,SJA_MODE,(SJA1_DAT_PORT+PortNum));               }               dev->ref_count++;        }        filp->private_data = dev;        MOD_INC_USE_COUNT;        return 0;}/*****************************Functin SJA_release**************************/int SJA_release(struct inode *inode,struct file *filp){        struct SJA_device *dev = filp->private_data;        if((filp->f_flags & O_ACCMODE) != O_WRONLY) {                if(--dev->ref_count == 0) {                        free_irq(dev->IrqNum,dev);                        SJA_WRITE(0x00,SJA_IE,(SJA1_DAT_PORT+dev->PortNum));                }        }        MOD_DEC_USE_COUNT;        return 0;}/*****************************Function timer*******************************/void timer_function(unsigned long ptr){}/*****************************File operations define************************/struct file_operations SJA_fops = {    NULL,     
    NULL,    //read    NULL,    //write    NULL,      
    NULL,    //EMM_poll,    NULL,    //ioctl    NULL,       
    SJA_open,    //open    NULL,
    SJA_release,    //release    NULL,        
    NULL,    NULL,
    NULL,
    NULL     
};
/****************************Module initialize******************************/int init_module(void){        int res;        EXPORT_NO_SYMBOLS;        res = register_chrdev(SJA_major,"SJACAN",&SJA_fops);        if(res < 0) {               printk(KERN_ALERT"device register failed.\n");               return res;        }        if(SJA_major == 0) SJA_major = res;        if(SJA_init() < 0) printk(KERN_ALERT"SJA device initializition failed.\n");        else printk(KERN_ALERT"SJACAN initializition success.\n");        return 0;}/****************************Module release********************************/void cleanup_module(void){        unregister_chrdev(SJA_major,"SJACAN");        release_region(SJA_CMD_PORT,3);        printk(KERN_ALERT"SJACAN release success.\n");}

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
91老师片黄在线观看| 欧美日本在线播放| 日韩精品91亚洲二区在线观看| 久久综合九色综合欧美就去吻| 91丨九色丨尤物| 国产老女人精品毛片久久| 亚洲成人一区二区| 综合久久久久久| 国产午夜精品在线观看| 日韩三级视频在线观看| 色婷婷av一区二区三区gif| 国内精品嫩模私拍在线| 午夜精品免费在线观看| 亚洲老司机在线| 中文幕一区二区三区久久蜜桃| 91精品黄色片免费大全| 99久久精品免费观看| 国产91在线|亚洲| 精品一区二区三区免费观看| 视频一区二区三区中文字幕| 亚洲国产综合色| 亚洲丝袜精品丝袜在线| 欧美激情一区二区三区四区| 久久久久久久一区| 欧美sm极限捆绑bd| 欧美成人一区二区三区在线观看| 欧美日韩高清一区二区不卡| 欧美色爱综合网| 欧洲精品在线观看| 日本高清无吗v一区| 99精品欧美一区| 9i看片成人免费高清| 成人精品亚洲人成在线| 国产成人免费视频网站| 国产精品一区二区在线观看网站| 国产乱人伦偷精品视频不卡| 久久国内精品自在自线400部| 日本欧美肥老太交大片| 人人狠狠综合久久亚洲| 麻豆91在线看| 国产乱码一区二区三区| 国产成人综合在线观看| 成人一道本在线| caoporm超碰国产精品| 不卡的av在线| 色综合久久精品| 欧美视频中文一区二区三区在线观看 | 91精品国产综合久久精品app| 欧美久久久久免费| 欧美一区二区日韩| 久久综合久久综合久久| 国产欧美日韩综合| 国产精品国产三级国产普通话三级 | 丁香六月久久综合狠狠色| 福利一区在线观看| 99久久精品国产观看| 色婷婷av一区二区三区软件| 欧美日韩一级视频| 精品国精品自拍自在线| 久久久久久久久99精品| 国产精品激情偷乱一区二区∴| 亚洲激情欧美激情| 日产国产欧美视频一区精品| 精品在线亚洲视频| 成人黄动漫网站免费app| 一本大道久久a久久综合婷婷| 欧美人体做爰大胆视频| 精品国产精品一区二区夜夜嗨| 亚洲国产精品t66y| 一区二区三区日韩| 美腿丝袜亚洲色图| 国产成人在线视频网址| 色悠悠久久综合| 欧美成人精精品一区二区频| 亚洲国产岛国毛片在线| 亚洲一区二区五区| 国模少妇一区二区三区| 91麻豆国产福利在线观看| 欧美一区二区三级| 中文字幕一区在线观看视频| 五月天亚洲精品| 福利电影一区二区三区| 欧美久久久一区| 国产精品国产三级国产普通话三级| 亚洲国产日韩一级| 成人午夜激情视频| 欧美乱熟臀69xxxxxx| 亚洲国产成人一区二区三区| 午夜精品爽啪视频| 99久久综合国产精品| 日韩一区二区在线看| 国产精品国产三级国产aⅴ中文 | 国产亚洲综合色| 午夜激情一区二区三区| 成人午夜在线免费| 欧美v亚洲v综合ⅴ国产v| 亚洲一区中文在线| 国产成人午夜99999| 欧美高清hd18日本| 一区二区三区中文字幕| 国产精品一区2区| 538在线一区二区精品国产| 亚洲视频在线观看三级| 国产成人免费9x9x人网站视频| 欧美日韩黄色影视| 一区二区三区不卡视频| 成人免费视频一区| 精品国产一区二区三区四区四| 亚洲国产精品尤物yw在线观看| 成人avav影音| 久久久国际精品| 精品写真视频在线观看| 欧美一区二区美女| 日韩制服丝袜先锋影音| 欧美午夜视频网站| 一区二区三区自拍| 色又黄又爽网站www久久| 亚洲国产成人午夜在线一区 | 91视频观看免费| 国产精品免费久久| 东方欧美亚洲色图在线| 欧美精品一区二区三区蜜桃视频| 蜜臀av性久久久久蜜臀aⅴ流畅| 欧美日韩一级片在线观看| 亚洲最新视频在线观看| 97se亚洲国产综合自在线| 中文字幕人成不卡一区| 99精品国产99久久久久久白柏| 国产精品午夜电影| 播五月开心婷婷综合| 中文字幕精品一区二区三区精品| 国产成人aaa| 国产精品久久久久久久第一福利| 国产精品中文字幕一区二区三区| 精品日韩一区二区三区免费视频| 免费欧美高清视频| 精品久久久久久最新网址| 国产自产2019最新不卡| 久久精品夜色噜噜亚洲a∨| 国产999精品久久久久久绿帽| 国产精品污网站| 99国产欧美另类久久久精品| 亚洲激情欧美激情| 欧美日韩综合不卡| 美女爽到高潮91| 久久亚洲影视婷婷| 成人av网站在线观看| 亚洲精品日日夜夜| 8v天堂国产在线一区二区| 久久成人免费网| 国产欧美一区二区精品性| 波多野结衣中文字幕一区二区三区| 国产精品成人一区二区艾草| 91高清视频免费看| 天天影视色香欲综合网老头| 日韩视频一区在线观看| 国产一区二区三区久久久 | 精品国精品国产| aaa亚洲精品| 婷婷成人综合网| 久久久美女艺术照精彩视频福利播放| 成人黄页在线观看| 一区二区三区蜜桃| 欧美一区二区不卡视频| 粉嫩av一区二区三区粉嫩| 亚洲永久精品国产| 2021久久国产精品不只是精品| bt欧美亚洲午夜电影天堂| 午夜婷婷国产麻豆精品| 日韩欧美成人一区| 成人aa视频在线观看| 一级特黄大欧美久久久| 欧美mv日韩mv亚洲| 91免费视频网| 久久99精品视频| 亚洲人精品午夜| 精品国产区一区| 日本韩国欧美一区二区三区| 精品影院一区二区久久久| 亚洲欧美一区二区三区国产精品| 日韩欧美一级精品久久| 91影院在线观看| 久国产精品韩国三级视频| 亚洲日本在线看| 亚洲制服丝袜av| 日韩一二三区视频| 色婷婷国产精品综合在线观看| 激情六月婷婷久久| 亚洲成a人v欧美综合天堂下载| 中文一区在线播放| 日韩一级免费一区| 在线观看视频欧美| 国产高清久久久| 日本在线不卡一区| 亚洲精品自拍动漫在线| 国产拍欧美日韩视频二区| 欧美一二三区在线| 欧美三级三级三级爽爽爽| 成人午夜精品在线| 国产在线国偷精品免费看|