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

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

?? usb-mininurse.c

?? Six objects here: The document you re reading & its Chinese version Set of "HWDesign" includes
?? C
字號(hào):
/* * USB Mini-Nurse Driver - 0.1 * * Copyright (C) 2004 Marco (Chopin_1998@Sina.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. * * * This driver is just to drive Mini-Nurse, Just for Fun. * * Thanks to Linus, USBCORE guys, and all Open-Source World * * BUG: *      - Yes,I canNOT run on a SMP machine or even Sigle-CPU with preemptive kernel.  *  * TODO: *      - let it running on a SMP and Linux2.6 preemptive kernel *      - enhence it to use more feature of PDIUSBD12 (and of course it should be supported by MN's FIRMWARE) *      - add it with more kernel feature (like procfs and so on) * * History: * *  2004_05_26 - 0.1.0 - the first version *  2004_05_31 - 0.1.1 - the second version *                          - serval bugs fixed *                          - full DevFS supported */#include "usb-mininurse.h"#include "usb-mn-ioctls.h"static inline void mn_delete (struct usb_mn *dev)     /* when the driver is useless, free its resource */{  info("Driver of MN will be deleted!");  minor_table[dev->minor] = NULL;  kfree (dev);}static int mn_open (struct inode *inode, struct file *file){  struct usb_mn *dev = NULL;    /* another way to get the Major/Minor, as tranditional method U can read it from inode */  int dmajor,dminor;  devfs_get_maj_min (usb_devfs_handle, &dmajor, &dminor);  dev = minor_table[dminor-1];   //U SHOULD MINUS ONE HERE !!!  if (dev == NULL)    {      info("from mn_open(): device NULL?");      return -ENODEV;    }  ++(dev->open_count);  file->private_data = dev;  info("open Mini-Nurse device now");  return 0;}static int mn_release (struct inode *inode, struct file *file){  struct usb_mn *dev;  int retval = 0;  dev = (struct usb_mn *)file->private_data;  if (dev == NULL)    return -ENODEV;	/*	usb_control_msg(dev->udev,usb_sndctrlpipe(dev->udev,0),			    LEDoff,			    USB_TYPE_VENDOR | USB_DIR_OUT | USB_RECIP_ENDPOINT,			    0,LEDA,			    NULL,0,.1*HZ);	*/  if (dev->open_count <= 0) {    retval = -ENODEV;    goto exit_not_opened;  }  if (dev->udev == NULL) {    mn_delete (dev);    return 0;  }  --dev->open_count;  if (dev->open_count <= 0)    dev->open_count = 0; exit_not_opened:  return retval;}static int mn_ioctl (struct inode *inode, struct file *file, unsigned int cmd, unsigned long arg){  struct usb_mn *dev;  dev = (struct usb_mn *)file->private_data;  if (dev->udev == NULL)    return -ENODEV;  u16 LEDnum=(u16)arg;  info("from mn_ioctl: cmd=%d arg=%d",cmd,LEDnum);  switch (cmd) {    case MN_LEDon:      usb_control_msg(dev->udev,usb_sndctrlpipe(dev->udev,0),		      LEDon,		      USB_TYPE_VENDOR | USB_DIR_OUT | USB_RECIP_ENDPOINT,		      0,LEDnum,		      NULL,0,.1*HZ);      break;    case MN_LEDoff:      usb_control_msg(dev->udev,usb_sndctrlpipe(dev->udev,0),		      LEDoff,		      USB_TYPE_VENDOR | USB_DIR_OUT | USB_RECIP_ENDPOINT,		      0,LEDnum,		      NULL,0,.1*HZ);      break;  default:    /* new return number to mis-understand ioctl call */    return -ENOTTY;  }  return 0;}static void * mn_probe(struct usb_device *udev, unsigned int ifnum, const struct usb_device_id *id){  struct usb_mn *dev = NULL;  int minor;  char name[10]="MiniNurse";/* file name pleaced in /dev */  struct usb_interface *interface;		  if ((udev->descriptor.idVendor != USB_MN_VENDOR_ID) ||      (udev->descriptor.idProduct != USB_MN_PRODUCT_ID)) {    return NULL;  }  for (minor = 0; minor < MAX_DEVICES; ++minor) {    if (minor_table[minor] == NULL)      break;  }  if (minor >= MAX_DEVICES) {    info ("from mn_probe: Too many devices plugged in, can not handle this device.");    mn_delete (dev);    dev=NULL;  }  dev = kmalloc (sizeof(struct usb_mn), GFP_KERNEL);  if (dev == NULL) {    err ("from mn_probe: Out of memory");    mn_delete (dev);    dev=NULL;  }    memset (dev, 0x00, sizeof (*dev));  minor_table[minor] = dev;  interface = &udev->actconfig->interface[ifnum];  dev->udev = udev;  dev->interface = interface;  dev->devfs = devfs_register (NULL, name,			       DEVFS_FL_AUTO_DEVNUM, USB_MAJOR,USB_MN_MINOR_BASE + dev->minor,			       S_IFCHR | S_IRUSR | S_IWUSR | 			       S_IRGRP | S_IWGRP | S_IROTH, 			       &mn_fops, NULL);  usb_devfs_handle = dev->devfs;		  info("%d from mn_probe-->usb_control_msg",       usb_control_msg(udev,usb_sndctrlpipe(udev,0),		       LEDon,		       USB_TYPE_VENDOR | USB_DIR_OUT | USB_RECIP_ENDPOINT,		       0,LEDA,		       NULL,0,.1*HZ)       );  unsigned long j = jiffies + 1.25*HZ;  while (jiffies < j)    schedule();  info("%d from mn_probe-->usb_control_msg",       usb_control_msg(udev,usb_sndctrlpipe(udev,0),		       LEDoff,		       USB_TYPE_VENDOR | USB_DIR_OUT | USB_RECIP_ENDPOINT,		       0,LEDA,		       NULL,0,.1*HZ)       );    return dev;}static void mn_disconnect(struct usb_device *udev, void *ptr){  struct usb_mn *dev;  dev = (struct usb_mn *)ptr;  devfs_unregister(dev->devfs);  if (!dev->open_count)    mn_delete (dev);  else    dev->udev = NULL;  info("MN now disconnected");}static int usb_mn_init(void){  if (usb_register(&mn_driver)<0) {    err("from usb_mn_init: a error on usb_register");    return -1;  }  info(DRIVER_DESC " " DRIVER_VERSION);  return 0;}static void usb_mn_exit(void){  info("ByeBye. MN out of control now.");  usb_deregister(&mn_driver);}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产麻豆精品一区二区| 一级特黄大欧美久久久| 国产一区免费电影| 久久综合九色综合97_久久久| 久久国产乱子精品免费女| 欧美不卡在线视频| 国产一区二区视频在线| 18欧美乱大交hd1984| 色综合久久久久久久久| 亚洲国产精品久久久男人的天堂| 欧美一区二区三区免费在线看| 激情久久久久久久久久久久久久久久| 久久久久国色av免费看影院| 成人性色生活片免费看爆迷你毛片| 亚洲欧美偷拍卡通变态| 欧美久久一二区| 国产成人av福利| 亚洲蜜臀av乱码久久精品蜜桃| 欧美日韩高清一区二区| 国产一区二三区| 亚洲日本电影在线| 91精品国产综合久久精品图片| 国产一区二区三区四区五区美女| 亚洲天堂福利av| 欧美一区二区三区电影| 成人午夜av影视| 亚洲第一成年网| 欧美激情在线一区二区三区| 欧美又粗又大又爽| 国产一区视频网站| 亚洲第一福利一区| 欧美激情一区三区| 91精品国产麻豆国产自产在线 | 欧美视频日韩视频| 九九视频精品免费| 一区二区三区视频在线看| 久久久久综合网| 91精品国产一区二区人妖| av在线不卡网| 精品在线观看视频| 亚洲一本大道在线| 中文字幕二三区不卡| 欧美人与禽zozo性伦| 波多野结衣欧美| 国产在线精品免费av| 日日夜夜精品视频免费| 中文字幕在线观看不卡| 久久综合九色综合欧美亚洲| 欧美二区在线观看| 91美女在线视频| 国产成人精品免费| 捆绑紧缚一区二区三区视频| 亚洲一级在线观看| 综合久久国产九一剧情麻豆| 久久久精品日韩欧美| 欧美大胆人体bbbb| 欧美日韩精品久久久| 色综合久久九月婷婷色综合| 国产一区二区三区四| 捆绑调教美女网站视频一区| 视频一区视频二区中文| 一区二区三区四区激情| 日韩美女久久久| 中文字幕免费不卡| 国产亚洲欧美日韩俺去了| 精品国产电影一区二区| 欧美一二三区在线观看| 欧美一级理论性理论a| 在线不卡一区二区| 91久久一区二区| 在线国产电影不卡| 欧洲一区二区三区在线| 欧美性生活久久| 在线观看一区日韩| 精品视频色一区| 欧美精品乱人伦久久久久久| 欧美久久一二三四区| 在线播放国产精品二区一二区四区| 欧美性受极品xxxx喷水| 欧美男人的天堂一二区| 欧美精品成人一区二区三区四区| 欧美日韩国产不卡| 538在线一区二区精品国产| 在线不卡一区二区| 日韩欧美在线不卡| 精品对白一区国产伦| 久久久久久久久99精品| 国产女主播视频一区二区| 欧美激情一区不卡| 亚洲女与黑人做爰| 三级欧美韩日大片在线看| 五月婷婷激情综合网| 免费高清视频精品| 国产高清不卡二三区| eeuss国产一区二区三区| 色狠狠色噜噜噜综合网| 69av一区二区三区| 精品国产免费人成在线观看| 国产欧美日韩卡一| 亚洲国产精品欧美一二99| 三级不卡在线观看| 国产乱码一区二区三区| 99麻豆久久久国产精品免费优播| 欧美少妇一区二区| 2020国产成人综合网| 亚洲欧美色综合| 日本成人在线看| 懂色av噜噜一区二区三区av| 色呦呦网站一区| 日韩一区二区三区视频| 欧美经典一区二区| 亚洲午夜久久久| 激情综合色播激情啊| 成人av影院在线| 欧美一区二区性放荡片| 国产精品视频在线看| 亚洲成人一区二区在线观看| 国产精品123区| 欧美视频一区二区三区| 久久久精品2019中文字幕之3| 亚洲一区欧美一区| 韩国成人福利片在线播放| 日本高清成人免费播放| 日韩免费视频一区二区| 亚洲猫色日本管| 国产一区视频在线看| 欧美中文字幕一二三区视频| 久久午夜老司机| 亚洲aⅴ怡春院| 99精品1区2区| 欧美精品一区二区三区蜜桃| 亚洲国产精品天堂| 不卡的av中国片| 精品久久一区二区三区| 亚洲成av人片| a在线欧美一区| 亚洲精品一区二区三区精华液 | 成人午夜短视频| 欧美一级在线观看| 亚洲午夜在线视频| 成人激情动漫在线观看| 欧美电影免费观看高清完整版在线观看| 一色桃子久久精品亚洲| 国产一区福利在线| 精品久久99ma| 日韩成人伦理电影在线观看| 91久久精品一区二区二区| 欧美激情一区二区三区蜜桃视频| 久88久久88久久久| 日韩一级完整毛片| 视频在线观看91| 欧美日本视频在线| 亚洲电影视频在线| 91小宝寻花一区二区三区| 中文字幕av一区二区三区高| 国产一区二区电影| 精品久久久久一区二区国产| 青椒成人免费视频| 91精品欧美福利在线观看| 无吗不卡中文字幕| 欧美系列亚洲系列| 亚洲一级二级三级在线免费观看| 色播五月激情综合网| 最近日韩中文字幕| 99精品视频免费在线观看| 中文字幕一区二区三区在线播放 | 国产欧美日韩精品在线| 国产电影精品久久禁18| 久久久久国产精品麻豆| 国产成人免费在线视频| 国产亚洲欧洲一区高清在线观看| 国模冰冰炮一区二区| 久久精品网站免费观看| 丰满少妇在线播放bd日韩电影| 国产婷婷色一区二区三区四区 | 日韩欧美久久久| 美女视频一区二区三区| 欧美电影免费观看高清完整版在 | 精品一区在线看| 欧美tickling挠脚心丨vk| 看片的网站亚洲| 2020国产精品自拍| 国产福利一区二区三区视频在线| 国产精品免费av| 欧洲一区在线电影| 日本不卡免费在线视频| 欧美精品一区二区三区一线天视频 | 色综合天天综合网国产成人综合天| 亚洲欧美另类久久久精品 | 在线播放视频一区| 久久成人精品无人区| 国产免费观看久久| 色爱区综合激月婷婷| 日韩av高清在线观看| 国产三级一区二区三区| 91亚洲午夜精品久久久久久| 日韩高清不卡一区二区三区| 欧美r级在线观看| 91小宝寻花一区二区三区| 日韩福利电影在线|