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

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

?? usb-serial.h

?? Linux 下 USB轉串口驅動程序源代碼,沒有問題,很好用
?? H
字號:
/* * USB Serial Converter driver * *	Copyright (C) 1999, 2000 *	    Greg Kroah-Hartman (greg@kroah.com) * *	This program is free software; you can redistribute it and/or modify *	it under the terms of the GNU General Public License as published by *	the Free Software Foundation; either version 2 of the License, or *	(at your option) any later version. * * See Documentation/usb/usb-serial.txt for more information on using this driver * * (10/05/2000) gkh *	Added interrupt_in_endpointAddress and bulk_in_endpointAddress to help *	fix bug with urb->dev not being set properly, now that the usb core *	needs it. *  * (09/11/2000) gkh *	Added usb_serial_debug_data function to help get rid of #DEBUG in the *	drivers. * * (08/28/2000) gkh *	Added port_lock to port structure. * * (08/08/2000) gkh *	Added open_count to port structure. * * (07/23/2000) gkh *	Added bulk_out_endpointAddress to port structure. * * (07/19/2000) gkh, pberger, and borchers *	Modifications to allow usb-serial drivers to be modules. * *  */#ifndef __LINUX_USB_SERIAL_H#define __LINUX_USB_SERIAL_H#include <linux/config.h>#define SERIAL_TTY_MAJOR      188     /* Nice legal number now */#define SERIAL_TTY_MINORS     255     /* loads of devices :) */#define MAX_NUM_PORTS         8       /* The maximum number of ports one device can grab at once */#define USB_SERIAL_MAGIC      0x6702  /* magic number for usb_serial struct */#define USB_SERIAL_PORT_MAGIC 0x7301  /* magic number for usb_serial_port struct *//* parity check flag */#define RELEVANT_IFLAG(iflag) (iflag & (IGNBRK | BRKINT | IGNPAR | PARMRK | INPCK))struct usb_serial_port {  int               magic;  struct usb_serial *serial;                      /* pointer back to the owner of this port */  struct tty_struct *tty;                         /* the coresponding tty for this port */  unsigned char     number;  char              active;                       /* someone has this device open */  unsigned char     *interrupt_in_buffer;  struct urb        *interrupt_in_urb;  __u8              interrupt_in_endpointAddress;  unsigned char     *bulk_in_buffer;  struct urb        *read_urb;  __u8              bulk_in_endpointAddress;  unsigned char     *bulk_out_buffer;  int               bulk_out_size;  struct urb        *write_urb;  __u8              bulk_out_endpointAddress;  wait_queue_head_t write_wait;  struct tq_struct  tqueue;                       /* task queue for line discipline waking up */  int               open_count;                   /* number of times this port has been opened */  spinlock_t        port_lock;  void *private;                                  /* data private to the specific port */};struct usb_serial {  int                           magic;  struct usb_device             *dev;  struct usb_serial_device_type *type;            /* the type of usb serial device this is */  struct usb_interface          *interface;       /* the interface for this device */  struct tty_driver             *tty_driver;      /* the tty_driver for this device */  unsigned char                 minor;            /* the starting minor number for this device */  unsigned char                 num_ports;        /* the number of ports this device has */  char                          num_interrupt_in; /* number of interrupt in endpoints we have */  char                          num_bulk_in;      /* number of bulk in endpoints we have */  char                          num_bulk_out;     /* number of bulk out endpoints we have */  struct usb_serial_port        port[MAX_NUM_PORTS];  void *private;  /* data private to the specific driver */};#define MUST_HAVE_NOT 0x01#define MUST_HAVE     0x02#define DONT_CARE     0x03#define HAS           0x02#define HAS_NOT       0x01#define NUM_DONT_CARE (-1)/* This structure defines the individual serial converter. */struct usb_serial_device_type {  char                        *name;  const struct usb_device_id  *id_table;  char                        needs_interrupt_in;  char                        needs_bulk_in;  char                        needs_bulk_out;  char                        num_interrupt_in;  char                        num_bulk_in;  char                        num_bulk_out;  char                        num_ports;  /* number of serial ports this device has */  struct list_head            driver_list;  /* function call to make before accepting driver */  /* return 0 to continue initialization, anything else to abort */  int (*startup) (struct usb_serial *serial);  void (*shutdown) (struct usb_serial *serial);  /* serial function calls */  int (*open) (struct usb_serial_port *port, struct file *filp);  void (*close) (struct usb_serial_port *port, struct file *filp);  int (*write) (struct usb_serial_port *port, int from_user, const unsigned char *buf, int count);  int (*write_room) (struct usb_serial_port *port);  int (*ioctl) (struct usb_serial_port *port, struct file *file, unsigned int cmd, unsigned long arg);  void (*set_termios) (struct usb_serial_port *port, struct termios *old);  void (*break_ctl) (struct usb_serial_port *port, int break_state);  int (*chars_in_buffer) (struct usb_serial_port *port);  void (*throttle) (struct usb_serial_port *port);  void (*unthrottle) (struct usb_serial_port *port);  void (*read_int_callback) (struct urb *urb);  void (*read_bulk_callback) (struct urb *urb);  void (*write_bulk_callback) (struct urb *urb);};extern int  usb_serial_register(struct usb_serial_device_type *new_device);extern void usb_serial_deregister(struct usb_serial_device_type *device);/* determine if we should include the EzUSB loader functions */#if defined(CONFIG_USB_SERIAL_KEYSPAN_PDA) || \    defined(CONFIG_USB_SERIAL_WHITEHEAT) || \    defined(CONFIG_USB_SERIAL_KEYSPAN) || \    defined(CONFIG_USB_SERIAL_KEYSPAN_PDA_MODULE) || \    defined(CONFIG_USB_SERIAL_WHITEHEAT_MODULE) || \    defined(CONFIG_USB_SERIAL_KEYSPAN_MODULE)  #define USES_EZUSB_FUNCTIONS  extern int  ezusb_writememory(struct usb_serial *serial, int address, unsigned char *data, int length, __u8 bRequest);extern int  ezusb_set_reset(struct usb_serial *serial, unsigned char reset_bit);#else#undef USES_EZUSB_FUNCTIONS#endif/* Inline functions to check the sanity of a pointer that is passed to us */static inline int serial_paranoia_check(struct usb_serial *serial, const char *function){  if(!serial) {    dbg("%s - serial == NULL", function);    return -1;  }  if(serial->magic != USB_SERIAL_MAGIC) {    dbg("%s - bad magic number for serial", function);    return -1;  }  if(!serial->type) {    dbg("%s - serial->type == NULL!", function);    return -1;  }  return 0;}static inline int port_paranoia_check(struct usb_serial_port *port, const char *function){  if(!port) {    dbg("%s - port == NULL", function);    return -1;  }  if(port->magic != USB_SERIAL_PORT_MAGIC) {    dbg("%s - bad magic number for port", function);    return -1;  }  if(!port->serial) {    dbg("%s - port->serial == NULL", function);    return -1;  }  if(!port->tty) {    dbg("%s - port->tty == NULL", function);    return -1;  }  return 0;}static inline struct usb_serial *get_usb_serial(struct usb_serial_port *port, const char *function){  /* if no port was specified, or it fails a paranoia check */  if(!port || port_paranoia_check(port, function) || serial_paranoia_check(port->serial, function)) {    /* then say that we dont have a valid usb_serial thing, which will		 * end up genrating -ENODEV return values */    return NULL;  }  return port->serial;}static inline void usb_serial_debug_data(const char *file, const char *function, int size, const unsigned char *data){#ifdef USB_SERIAL_DEBUG  int i;  printk(KERN_DEBUG "%s: %s - length = %d, data = ", file, function, size);  for(i = 0; i < size; ++i) {    printk("%.2x ", data[i]);  }  printk("\n");#endif}#endif /* ifdef __LINUX_USB_SERIAL_H */

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品美女久久久久av爽李琼| 免费观看久久久4p| 亚洲一级二级三级在线免费观看| 奇米精品一区二区三区在线观看一| 国产精品一卡二| 欧美丰满美乳xxx高潮www| 国产日韩综合av| 丝袜美腿亚洲色图| 91免费视频观看| 精品美女在线播放| 香蕉乱码成人久久天堂爱免费| 国产精品一线二线三线| 欧美精品久久久久久久多人混战| 国产精品久久久久一区| 久久成人羞羞网站| 欧美午夜理伦三级在线观看| 国产精品视频在线看| 久久99国产精品久久| 欧美人牲a欧美精品| 亚洲激情在线播放| 成人性视频免费网站| 精品国产91九色蝌蚪| 日韩国产精品久久久久久亚洲| 欧美视频你懂的| 日韩一区在线播放| 大尺度一区二区| 久久久久亚洲综合| 乱一区二区av| 欧美一级二级三级乱码| 偷拍亚洲欧洲综合| 欧美日韩一区二区三区在线看| 精品一区二区三区影院在线午夜| 9191国产精品| 亚洲一区视频在线| 欧美最新大片在线看 | 一本一本大道香蕉久在线精品 | 欧美一区二区精美| 首页亚洲欧美制服丝腿| 欧美精品乱码久久久久久| 亚洲v中文字幕| 欧美日韩一区二区欧美激情 | 国产亚洲短视频| 国产精品123区| 国产午夜精品一区二区三区视频| 国产成人啪午夜精品网站男同| 久久婷婷色综合| 国产成人在线视频播放| 日本一区二区视频在线| 成人a区在线观看| 自拍偷拍欧美激情| 在线亚洲一区观看| 午夜一区二区三区在线观看| 在线播放一区二区三区| 久久精品国产色蜜蜜麻豆| 久久精品夜夜夜夜久久| av影院午夜一区| 亚洲午夜激情av| 日韩一区二区三区在线视频| 国产在线不卡视频| 亚洲天堂网中文字| 欧美午夜精品久久久久久孕妇 | 精品国产乱码久久久久久久 | 1区2区3区欧美| 色婷婷精品久久二区二区蜜臀av| 亚洲大片在线观看| 日韩欧美在线1卡| 高清免费成人av| 亚洲影院免费观看| 日韩精品专区在线影院观看| 丁香婷婷综合激情五月色| 亚洲欧美色图小说| 5月丁香婷婷综合| 成人美女视频在线看| 亚洲图片一区二区| 久久久久久久免费视频了| 91小宝寻花一区二区三区| 午夜精品一区二区三区电影天堂| 久久亚洲影视婷婷| 91婷婷韩国欧美一区二区| 免费在线看一区| 国产精品久99| 日韩美女主播在线视频一区二区三区| 国产一区激情在线| 一区二区三区国产| 欧美经典三级视频一区二区三区| 欧洲一区二区av| 国产xxx精品视频大全| 亚洲成av人在线观看| 国产精品伦理在线| 欧美成人一区二区三区片免费| 99麻豆久久久国产精品免费优播| 人禽交欧美网站| 亚洲另类在线制服丝袜| 久久久精品国产免费观看同学| 欧美在线影院一区二区| 国产黑丝在线一区二区三区| 天天影视涩香欲综合网| 中文字幕的久久| 日韩精品一区二| 欧美巨大另类极品videosbest | 最新国产成人在线观看| 欧美成人精品1314www| 欧美性大战久久| 91在线视频18| 成人精品国产一区二区4080| 九九国产精品视频| 免费人成网站在线观看欧美高清| 一区二区国产盗摄色噜噜| 国产精品久久久久久久第一福利| 久久人人爽人人爽| 日韩情涩欧美日韩视频| 欧美三级乱人伦电影| 91成人国产精品| 日本韩国欧美一区| 色哟哟一区二区三区| 91伊人久久大香线蕉| 成人18视频在线播放| 成人激情小说乱人伦| 成人一级黄色片| hitomi一区二区三区精品| 懂色av一区二区三区免费观看| 国产成人精品免费视频网站| 国产成人av一区二区三区在线| 国模一区二区三区白浆| 精品一区二区免费看| 韩国在线一区二区| 国产乱一区二区| 国产精品乡下勾搭老头1| 国产乱码字幕精品高清av | 欧美videossexotv100| 精品久久久久久久久久久久久久久久久 | 99在线热播精品免费| 99国产精品一区| 欧美中文一区二区三区| 欧美日韩三级一区二区| 91麻豆精品国产91久久久使用方法 | 蜜臀精品久久久久久蜜臀 | 久久精品水蜜桃av综合天堂| 国产丝袜欧美中文另类| **欧美大码日韩| 亚洲国产裸拍裸体视频在线观看乱了| 亚洲bt欧美bt精品| 久色婷婷小香蕉久久| 国产一区二区三区蝌蚪| 99国产精品久久久久久久久久久| 色美美综合视频| 日韩一区国产二区欧美三区| 久久久一区二区三区捆绑**| 中文字幕一区二区在线播放| 一区二区免费视频| 极品少妇一区二区三区精品视频| 国产精品一区二区男女羞羞无遮挡| 高清不卡一二三区| 色一区在线观看| 91精品国产色综合久久不卡电影| 国产无一区二区| 亚洲一二三四在线观看| 久久国内精品视频| 99久久99久久精品免费观看| 欧美日本一道本在线视频| 久久色成人在线| 夜夜夜精品看看| 国产精品资源在线看| 91官网在线免费观看| 久久亚洲二区三区| 亚洲一区二区五区| 国产成人精品免费看| 欧美精品第1页| 国产精品久久久久aaaa樱花| 99久久久久免费精品国产| 884aa四虎影成人精品一区| 国产精品乱人伦| 日韩高清在线不卡| 91免费版在线| 精品理论电影在线观看| 亚洲成国产人片在线观看| 成人国产精品免费观看动漫| 日韩欧美高清dvd碟片| 曰韩精品一区二区| 成人国产在线观看| 精品国产网站在线观看| 性做久久久久久免费观看| 成+人+亚洲+综合天堂| 欧美成人免费网站| 午夜精品福利在线| 色丁香久综合在线久综合在线观看| 欧美xingq一区二区| 亚洲一区二区三区四区五区黄 | 成人av影视在线观看| 精品国产乱码久久久久久久久| 亚洲成人动漫在线免费观看| 97aⅴ精品视频一二三区| 国产视频一区二区三区在线观看 | 日韩高清在线电影| 欧美日韩国产a| 亚洲狠狠爱一区二区三区| 91丨porny丨首页| 中文字幕在线免费不卡| 成人一区二区三区中文字幕| 久久亚洲一级片|