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

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

?? candrv.h

?? HMS30C7202下的CAN驅(qū)動(dòng)
?? H
字號(hào):
/** candrv.h * This file include general can definitions for the CAN-driver * * Header file for the Linux CAN-bus driver. * Written by Sebastian Stolzenberg email:stolzi@sebastian-stolzenberg.de * Version 1.0  04 Feb 2003 */#include <linux/types.h>#include <linux/version.h>#include <linux/wait.h>#include <linux/pci.h>#include <linux/poll.h>#include <linux/spinlock.h>#include <linux/slab.h>#include <linux/sched.h>#include <asm/io.h>#include "can.h"#ifndef ___CAN_DRIVER___# define ___CAN_DRIVER___/* Define makro for driver debug-messages */# ifdef CAN_DEBUG#  define DEBUGMSG(fmt,args...) printk(KERN_NOTICE "candrv (debug): " fmt "\n",##args)# else#  define DEBUGMSG(fmt,args...)# endif/* Define makro for driver messages  */# define CANMSG(fmt,args...) printk(KERN_NOTICE "candrv: " fmt "\n",##args)# ifndef PACKED#  define PACKED __attribute__((packed))# endif# ifndef SLOW_DOWN_IO#  define SLOW_DOWN_IO __SLOW_DOWN_IO# endif/* Device name as it will appear in /proc/devices */# define DEVICE_NAME "can"/* Default driver major number, see /usr/src/linux/Documentation/devices.txt */# define CAN_MAJOR 91/* Timeout in jiffies before the system calls return with an error */# define CANTIMEOUT (4*HZ)/**    Definition of the maximum number of concurrent supported hardware boards,    chips per board, total number of chips message objects.    Each chip can have its own i/o range and/or irq or share it with others.*/# define MAX_HW_CHIPS     2                             /* Max chips/card */# define MAX_HW_MSGOBJ    32                            /* Max message objects/chip */# define MAX_TOT_MSGOBJ   (MAX_HW_CHIPS*MAX_HW_MSGOBJ)  /* Max total message objects */# define MAX_BUF_LENGTH   128                           /* Size of buffer/message object */enum timing_BTR1{        MAX_TSEG1 = 15,        MAX_TSEG2 = 7};/* Flags for baud_rate function */# define BTR1_SAM (1<<1)/**   Definitions for valid/supported card types*/# define DEVICETYPE_UNDEFIND         0# define DEVICETYPE_HMS30C7202_CAN   1/**   Definitions for valid/supported chip types*/# define CAN_CHIPTYPE_UNDEFINED  0  /* Not defined */# define CAN_CHIPTYPE_C_CAN      1  /* C-CAN *//* Flags of fifo structure */enum CANFIFO_FLAGS{        TX_IN_PROGRESS = 1,    /* transmit in progress */        RX_IN_PROGRESS = 1<<1, /* receive in progress -> not used */        WR_BUFF_OVRWRT = 1<<6, /* write buffer overwrite */        RD_BUFF_OVRWRT = 1<<7  /* read buffer overwrite -> not used */};/** * Structure for the drivers main input and output buffers. The readq, writeq * entries are the wait queues for the driver to sleep on in case of blocking * read/write calls. buf_rx_entry and buf_tx_entry are pointers to the input * and output buffers. The buffers are dynamically allocated. * * The tx_readp, tx_writep, rx_readp and rx_writep pointers are the various * read/write pointers used when reading or writing the input and output * buffers. The rx/tx_size entries are the dynamically allocated input and * output buffer size. * * The flags are used to determine whether the device is already set up * for transmission or reception. They also show if the buffers should be * overwritable or not. */struct canfifo_t{        struct __wait_queue_head readq; /* Read wait queue */        struct __wait_queue_head writeq;/* Write wait queue */        char *ptxbuf;                   /* Transmitt Buffer */        char *prxbuf;                   /* Receive Buffer */        char *txrp;                     /* Transmitt read pointer */        char *txwp;                     /* Transmitt write pointer */        char *rxrp;                     /* Receive read pointer */        char *rxwp;                     /* Receive write pointer */        u16 rxsize;                     /* Receive buffer size, TX Size */        u16 txsize;                     /* Transmitt buffer size */        u16 head, tail;                 /* TEMP!!! */        volatile char flags;             /* flags of fifo structure */};/** * Structure for the RTR queue */struct rtr_id{        u32 id;        struct canmsg_t *rtr_message;        struct __wait_queue_head rtr_wq;        struct rtr_id *next;};/** * Structure that holds information about all chips * that this driver is responsable for. */struct canhardware_t{        u8 cnt_tot_chips;        struct chip_t *pchip[ 1 ];};/* Definitions to use for channel flags */# define CHANNEL_OPENED     ( 1<<0 )  /* Channel is open */# define CHANNEL_CONFIGURED ( 1<<1 )  /* Channel is configured */# define CHANNEL_RECEIVE    ( 1<<2 )  /* Channel is configured for message reception *//**   Structure that holds information about a specific message object */struct msgobj_t{        u16 object;              /* number of message object */        u16 minor;               /* driver minor code to access object */        u32 flags;               /* Flags for channel status (open, configured etc ) */        u8 msg_mode;             /* msg_mode = 0 for standard */                                 /* msg_mode = 1 for extended */        int rv;                  /* return value */        struct canfifo_t *fifo;  /* the fifocontainer for the message object */        struct chip_t *hostchip; /* the chip structure the message object belongs to */};/** * Structure that holds information about a specific chip */struct chip_t{        u8  chip_nr;                       /* Number of Chip */        u8  ntype;                         /* Type of chip */        u16 irq;                           /* IRQ to use for this chip */        u32 base_addr;                     /* the base address for the chip */        u32 vbase_addr;                    /* the virtual base address for the chip */        u16 baudrate;                      /* the baudrate the chip is working with */        u32 clock;                         /* Chip clock in Hz */        u16 chip_status;                   /* Last read chip status */        u16 last_chip_status;              /* Chip status read before the one above*/        struct canstatistics_t stat;       /* Statistics for chip/tx/rx */        u8 time_triggered;                 /* chip running in time triggered mode */        u64 time_trig_nanosec;             /* cycle time for time triggered mode */        struct timer_list interrupt_timer; /* timer_list used by time triggered mode */        u16 intreg_backup;                 /* used to store interrupt settings */        //struct semaphore sem;            /* mutual exclusion semaphore */        spinlock_t spwlock;                /* Spin lock for write operations */        spinlock_t sprlock;                /* Spin lock for read operations */        spinlock_t if1lock;                /* spin lock for the if1 register */        spinlock_t if2lock;                /* spin lcok for the if2 register */        struct rtr_id *prtr_queue;         /*RTR queue */        spinlock_t rtr_lock;               /* rtr lock */        u32 flags;                         /* Flags for channel status (open, configured etc ) */        u8 init_msg_mode;                  /* init_msg_mode = 0 for standard */                                           /* init_msg_mode = 1 for extended */                                           /*    can be induvidually set with ioctl */                                           /*    calls */       /**        * Hardware operations associated with hardware        */        int ( *request_io )(  struct chip_t *pchip  );        int ( *release_io )(  struct chip_t *pchip  );        int ( *reset )(  struct chip_t *pchip  );        void ( *write_register )( u16 data, struct chip_t *pchip, int reg );        u16 ( *read_register )( struct chip_t *pchip, int reg );        void ( *register_dump ) ( struct chip_t *pchip);        int ( *chip_config )( struct chip_t *pchip );        int ( *set_baud_rate )( struct chip_t *pchip,                                u32 rate,                                u32 clock,                                u32 sjw,                                u32 sampl_pt,                                u32 flags );        int ( *clear_objects )( struct chip_t *pchip );        int ( *config_irqs )( struct chip_t *pchip,                              u16 irqs );        int ( *check_tx_stat )( struct chip_t *pchip );        int ( *enable_configuration )( struct chip_t *pchip );        int ( *disable_configuration )( struct chip_t *pchip );        int ( *set_btregs )( struct chip_t *pchip,                             unsigned short btr0,                             unsigned short btr1 );        int ( *start_chip )( struct chip_t *pchip );        int ( *stop_chip )( struct chip_t *pchip );        void ( *irq_handler )( int irq,                               void *dev_id,                               struct pt_regs *regs );       /**        * Message Object operations        */        int ( *set_mask )( struct msgobj_t *pmsgobj, u32 mask, u16 usedirbit );        int ( *set_use_mask )( struct msgobj_t *pmsgobj, u16 useflag );        int ( *pre_read_config )( struct msgobj_t *pmsgobj, u32 id );        int ( *send_msg )( struct msgobj_t *pmsgobj,                           struct canmsg_t *pmsg );        int ( *remote_request )( struct msgobj_t *pmsgobj );        int rv; /* return value */        volatile int obj_cnt;                        /* number of message objects */        volatile int active_obj_cnt;                 /* count of active objects */        struct msgobj_t *pmsgobj[MAX_HW_MSGOBJ];     /* message objects */};/** * Definition of structure for a linked list of memory addresses */struct mem_addr{        void *address;          /* pointer to allocated memory */        struct mem_addr *next;  /* pointer to next memory list element */};/* Prototypes defined in candrv.c */int add_mem_to_list( void *paddress );int del_mem_from_list( void *paddress );int del_mem_list( void );int parse_args( struct canhardware_t *phw );int list_hw( struct canhardware_t *phw );int can_open( struct inode *inode, struct file *file );int can_close( struct inode *inode, struct file *file );inline ssize_t can_std_read( struct file *file,                             struct msgobj_t *pmsgobj,                             char *buffer,                             size_t length );inline ssize_t can_rtr_read( struct msgobj_t *pmsgobj,                             char *buffer );ssize_t can_read( struct file *file,                  char *buffer,                  size_t length,                  loff_t *offset );ssize_t can_write( struct file *file,                   const char *buffer,                   size_t length,                   loff_t *offset );unsigned int can_poll( struct file *filp,                       poll_table *wait );ssize_t sim_write( struct file *file,                   const char *buffer,                   size_t length,                   loff_t *offset );int can_ioctl( struct inode *inode,               struct file *file,               unsigned int cmd,               unsigned long arg );extern int major;extern int minor[MAX_TOT_MSGOBJ];extern int extended[ MAX_HW_CHIPS];extern int baudrate[ MAX_HW_CHIPS];extern char *hw[ MAX_HW_CHIPS ];extern int irq[ MAX_HW_CHIPS ];extern unsigned long io[ MAX_HW_CHIPS ];extern struct canhardware_t *pghw;extern struct mem_addr *pgmem_head;#endif

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产麻豆一精品一av一免费| 欧美撒尿777hd撒尿| 另类中文字幕网| 天天爽夜夜爽夜夜爽精品视频| 亚洲人成小说网站色在线 | 亚洲天堂av一区| 久久久九九九九| 中文字幕av在线一区二区三区| 国产三级精品视频| 国产精品久99| 亚洲手机成人高清视频| 亚洲同性同志一二三专区| 亚洲欧洲日韩一区二区三区| 日韩美女久久久| 亚洲午夜在线电影| 五月激情综合色| 久久国产精品色婷婷| 国产老女人精品毛片久久| 国产在线不卡一区| 风流少妇一区二区| 91在线观看成人| 欧美日韩www| 日韩网站在线看片你懂的| 欧美精品一区二区三区蜜桃 | 精品国产一区二区国模嫣然| 日韩区在线观看| 久久久影视传媒| 亚洲色图一区二区三区| 亚洲午夜在线电影| 毛片不卡一区二区| 成人午夜短视频| 欧美在线视频你懂得| 538prom精品视频线放| 欧美tickling网站挠脚心| 久久精品一区二区| 亚洲免费av在线| 视频一区二区欧美| 国产一区二区三区免费观看| 波多野结衣在线一区| 欧美性受极品xxxx喷水| 日韩欧美久久久| 亚洲国产成人一区二区三区| 一区二区三区欧美亚洲| 蜜臀av性久久久久蜜臀aⅴ流畅| 国产成人超碰人人澡人人澡| 色婷婷国产精品久久包臀| 欧美日韩国产区一| 欧美经典一区二区| 亚洲大片精品永久免费| 国产精品99久久久久久似苏梦涵| 91猫先生在线| 久久综合九色综合97婷婷女人| 亚洲特黄一级片| 奇米一区二区三区av| av亚洲产国偷v产偷v自拍| 91精品在线观看入口| 国产精品久久久久影院亚瑟| 亚洲成人动漫在线免费观看| 国产寡妇亲子伦一区二区| 欧美视频一区在线观看| 国产丝袜美腿一区二区三区| 亚洲一卡二卡三卡四卡五卡| 精久久久久久久久久久| 91丨porny丨户外露出| 精品欧美一区二区三区精品久久| 亚洲色图都市小说| 国产米奇在线777精品观看| 欧美色视频一区| 中日韩免费视频中文字幕| 奇米亚洲午夜久久精品| 91啪亚洲精品| 欧美激情一区二区三区全黄| 日本美女一区二区三区| 91麻豆精品一区二区三区| 国产区在线观看成人精品| 免费在线观看一区| 欧美日韩一区三区四区| 国产精品福利电影一区二区三区四区| 免费成人在线网站| 欧美日韩亚洲综合一区| 中文字幕一区二区三区不卡在线| 精品一区二区精品| 欧美顶级少妇做爰| 亚洲一区二区精品3399| 99re热视频精品| 国产女主播在线一区二区| 美腿丝袜亚洲三区| 欧美丰满一区二区免费视频| 一区二区三区蜜桃网| 99热精品国产| 国产精品免费视频观看| 国产不卡免费视频| 精品日韩欧美一区二区| 久久精品理论片| 日韩一区二区三区精品视频| 香蕉久久一区二区不卡无毒影院| 91成人免费网站| 亚洲免费观看视频| 色综合天天综合网国产成人综合天 | 国产精品高清亚洲| 国产一区二区福利| 精品国产一区二区三区不卡| 久久99精品久久只有精品| 欧美一区二区在线免费播放| 日韩va欧美va亚洲va久久| 欧美三级资源在线| 亚洲va天堂va国产va久| 欧美日韩视频在线观看一区二区三区| 夜夜嗨av一区二区三区四季av| 一本一道久久a久久精品| 亚洲欧美视频一区| 91麻豆国产福利精品| 日韩理论在线观看| 在线免费视频一区二区| 一区二区三区中文在线观看| 在线日韩国产精品| 午夜久久福利影院| 欧美日本在线观看| 丝袜诱惑亚洲看片| 日韩视频一区二区三区在线播放| 蜜桃视频在线观看一区二区| 精品国产免费久久| 韩国午夜理伦三级不卡影院| 中文字幕av在线一区二区三区| 91网站视频在线观看| 亚洲成a人在线观看| 欧美一级久久久| 国产一区二区在线看| 中文字幕第一区第二区| 色综合中文字幕国产| 视频一区欧美精品| 久久先锋资源网| av在线综合网| 亚洲国产精品人人做人人爽| 91精品国产一区二区| 国产精品中文字幕一区二区三区| 国产精品视频一二| 在线视频你懂得一区二区三区| 奇米色777欧美一区二区| 国产亚洲欧美日韩俺去了| 91在线视频观看| 日韩精品免费视频人成| 久久久91精品国产一区二区三区| 99久久婷婷国产综合精品 | 福利一区福利二区| 亚洲精品v日韩精品| 91精品国产欧美日韩| 国产成人日日夜夜| 亚洲国产日产av| 精品国产免费人成电影在线观看四季 | 国产在线看一区| 中文字幕日韩精品一区| 欧美放荡的少妇| 成人黄页毛片网站| 天天操天天色综合| 国产精品全国免费观看高清 | 国产亚洲综合性久久久影院| 在线看国产一区| 国产成人av电影在线观看| 亚洲图片一区二区| 国产欧美日韩亚州综合| 欧美日韩在线精品一区二区三区激情| 狠狠色狠狠色综合系列| 夜夜嗨av一区二区三区| 久久精品夜色噜噜亚洲a∨| 欧美在线视频你懂得| 粉嫩欧美一区二区三区高清影视| 亚洲成av人片www| 综合激情成人伊人| 久久精品人人做| 9191成人精品久久| 色综合天天综合在线视频| 国产精品自拍毛片| 日韩高清中文字幕一区| 国产精品福利一区| 久久久三级国产网站| 欧美精品xxxxbbbb| 色哟哟一区二区| 国产a级毛片一区| 麻豆国产精品一区二区三区| 亚洲综合激情另类小说区| 国产清纯在线一区二区www| 日韩欧美综合在线| 88在线观看91蜜桃国自产| 91原创在线视频| 丁香婷婷深情五月亚洲| 精品午夜久久福利影院| 欧美aa在线视频| 亚洲成人资源在线| 一区二区三区四区激情| 亚洲色图制服丝袜| 中文字幕五月欧美| 中文字幕不卡在线| 欧美极品aⅴ影院| 久久免费电影网| 久久日一线二线三线suv| 日韩精品一区二区三区四区| 在线电影国产精品| 欧美绝品在线观看成人午夜影视| 在线观看成人免费视频|