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

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

?? msbusmouse.c

?? <Linux1.0核心游記>電子書+書后源碼+Linux1.0源碼
?? C
字號:
/* * Microsoft busmouse driver based on Logitech driver (see busmouse.c) * * Microsoft BusMouse support by Teemu Rantanen (tvr@cs.hut.fi) (02AUG92) * * Microsoft Bus Mouse support modified by Derrick Cole (cole@concert.net) *    8/28/92 * * Microsoft Bus Mouse support folded into 0.97pl4 code *    by Peter Cervasio (pete%q106fm.uucp@wupost.wustl.edu) (08SEP92) * Changes:  Logitech and Microsoft support in the same kernel. *           Defined new constants in busmouse.h for MS mice. *           Added int mse_busmouse_type to distinguish busmouse types *           Added a couple of new functions to handle differences in using *             MS vs. Logitech (where the int variable wasn't appropriate). * * Modified by Peter Cervasio (address above) (26SEP92) * Changes:  Included code to (properly?) detect when a Microsoft mouse is *           really attached to the machine.  Don't know what this does to *           Logitech bus mice, but all it does is read ports. * * Modified by Christoph Niemann (niemann@rubdv15.etdv.ruhr-uni-bochum.de) * Changes:  Better interrupt-handler (like in busmouse.c). *	     Some changes to reduce code-size. *	     Changed dectection code to use inb_p() instead of doing empty *	     loops to delay i/o. * * version 0.3a */#include <linux/kernel.h>#include <linux/sched.h>#include <linux/busmouse.h>#include <linux/signal.h>#include <linux/errno.h>#include <asm/io.h>#include <asm/segment.h>#include <asm/system.h>#include <asm/irq.h>static struct mouse_status mouse;static void ms_mouse_interrupt(int unused){        char dx, dy;	unsigned char buttons;	outb(MS_MSE_COMMAND_MODE, MS_MSE_CONTROL_PORT);	outb((inb(MS_MSE_DATA_PORT) | 0x20), MS_MSE_DATA_PORT);	outb(MS_MSE_READ_X, MS_MSE_CONTROL_PORT);	dx = inb(MS_MSE_DATA_PORT);	outb(MS_MSE_READ_Y, MS_MSE_CONTROL_PORT);	dy = inb(MS_MSE_DATA_PORT);	outb(MS_MSE_READ_BUTTONS, MS_MSE_CONTROL_PORT);	buttons = ~(inb(MS_MSE_DATA_PORT)) & 0x07;	outb(MS_MSE_COMMAND_MODE, MS_MSE_CONTROL_PORT);	outb((inb(MS_MSE_DATA_PORT) & 0xdf), MS_MSE_DATA_PORT);	if (dx != 0 || dy != 0 || buttons != mouse.buttons || ((~buttons) & 0x07)) {		mouse.buttons = buttons;		mouse.dx += dx;		mouse.dy += dy;		mouse.ready = 1;		wake_up_interruptible(&mouse.wait);	}}static void release_mouse(struct inode * inode, struct file * file){	MS_MSE_INT_OFF();	mouse.active = mouse.ready = 0; 	free_irq(MOUSE_IRQ);}static int open_mouse(struct inode * inode, struct file * file){	if (!mouse.present)		return -EINVAL;	if (mouse.active)		return -EBUSY;	mouse.active = 1;	mouse.ready = mouse.dx = mouse.dy = 0;		mouse.buttons = 0x80;	if (request_irq(MOUSE_IRQ, ms_mouse_interrupt)) {		mouse.active = 0;		return -EBUSY;	}	outb(MS_MSE_START, MS_MSE_CONTROL_PORT);	MS_MSE_INT_ON();		return 0;}static int write_mouse(struct inode * inode, struct file * file, char * buffer, int count){	return -EINVAL;}static int read_mouse(struct inode * inode, struct file * file, char * buffer, int count){	int i, dx, dy;	if (count < 3)		return -EINVAL;	if (!mouse.ready)		return -EAGAIN;	put_fs_byte(mouse.buttons | 0x80, buffer);	dx = mouse.dx < -127 ? -127 : mouse.dx > 127 ?  127 :  mouse.dx;	dy = mouse.dy < -127 ?  127 : mouse.dy > 127 ? -127 : -mouse.dy;	put_fs_byte((char)dx, buffer + 1);	put_fs_byte((char)dy, buffer + 2);	for (i = 3; i < count; i++)		put_fs_byte(0x00, buffer + i);	mouse.dx -= dx;	mouse.dy += dy;	mouse.ready = 0;	return i;	}static int mouse_select(struct inode *inode, struct file *file, int sel_type, select_table * wait){	if (sel_type != SEL_IN)		return 0;	if (mouse.ready) 		return 1;	select_wait(&mouse.wait,wait);	return 0;}struct file_operations ms_bus_mouse_fops = {	NULL,		/* mouse_seek */	read_mouse,	write_mouse,	NULL, 		/* mouse_readdir */	mouse_select, 	/* mouse_select */	NULL, 		/* mouse_ioctl */	NULL,		/* mouse_mmap */	open_mouse,	release_mouse,};unsigned long ms_bus_mouse_init(unsigned long kmem_start){	int mse_byte, i;	mouse.present = mouse.active = mouse.ready = 0;	mouse.buttons = 0x80;	mouse.dx = mouse.dy = 0;	mouse.wait = NULL;	if (inb_p(MS_MSE_SIGNATURE_PORT) == 0xde) {		mse_byte = inb_p(MS_MSE_SIGNATURE_PORT);		for (i = 0; i < 4; i++) {			if (inb_p(MS_MSE_SIGNATURE_PORT) == 0xde) {				if (inb_p(MS_MSE_SIGNATURE_PORT) == mse_byte)					mouse.present = 1;				else					mouse.present = 0;			} else				mouse.present = 0;		}	}	if (mouse.present == 0) {		return kmem_start;	}	MS_MSE_INT_OFF();	printk("Microsoft BusMouse detected and installed.\n");	return kmem_start;}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
成人精品国产一区二区4080| 国产精品亚洲成人| 日韩一卡二卡三卡| 色av一区二区| 九九**精品视频免费播放| 亚洲色图视频免费播放| 日韩欧美色电影| 在线亚洲人成电影网站色www| 蜜桃视频一区二区三区| 亚洲黄色性网站| 国产三级一区二区| 欧美tickling挠脚心丨vk| 在线观看一区日韩| 成人成人成人在线视频| 国产专区欧美精品| 天天免费综合色| 亚洲主播在线播放| 亚洲欧美日韩综合aⅴ视频| 国产日韩欧美高清| 日韩精品影音先锋| 欧美一区二区三区视频在线观看| 色噜噜偷拍精品综合在线| 成人免费视频免费观看| 国产一区二区三区电影在线观看| 婷婷久久综合九色综合绿巨人| 亚洲天堂a在线| 国产精品色婷婷| 亚洲精品在线免费观看视频| 日韩午夜激情视频| 欧美精品一二三区| 欧美日韩午夜在线| 欧美图片一区二区三区| 色婷婷综合中文久久一本| 成人免费观看视频| 成人av网站在线| 成人av午夜电影| 91视频免费播放| 91在线免费视频观看| 91视频国产资源| 日本韩国欧美国产| 色婷婷av久久久久久久| 在线观看免费成人| 欧美视频在线一区二区三区| 欧美视频一区在线观看| 欧美日韩不卡视频| 69堂精品视频| 日韩视频在线永久播放| 欧美tk—视频vk| 国产午夜精品一区二区| 中文字幕国产一区二区| 中文成人综合网| 亚洲美女偷拍久久| 亚洲韩国一区二区三区| 日韩国产精品久久| 久99久精品视频免费观看| 国产精品18久久久久久久久 | 欧美剧在线免费观看网站| 欧美日韩美女一区二区| 欧美色图在线观看| 精品国产髙清在线看国产毛片| 国产亚洲综合在线| 亚洲免费观看高清| 亚洲国产精品久久艾草纯爱| 蜜臀av性久久久久蜜臀aⅴ流畅| 久久99精品国产麻豆婷婷洗澡| 久久av资源网| www.欧美.com| 欧美日韩在线播放三区| 日韩你懂的在线观看| 日本一区二区免费在线| 亚洲一区视频在线| 国产资源精品在线观看| 色综合久久中文综合久久97| 欧美日本在线播放| 国产女同互慰高潮91漫画| 亚洲裸体xxx| 成人午夜在线视频| 91精品1区2区| 欧美变态口味重另类| 国产精品午夜春色av| 亚洲综合丝袜美腿| 国产精品一区二区久久不卡| 91老师片黄在线观看| 日韩三级免费观看| 综合久久久久综合| 人禽交欧美网站| 成人99免费视频| 欧美成人免费网站| 一区二区欧美在线观看| 久久国产成人午夜av影院| 一本一本大道香蕉久在线精品| 91精品国产麻豆国产自产在线| 国产欧美一区二区在线| 免费成人在线视频观看| 色狠狠桃花综合| 日本一区二区综合亚洲| 日本va欧美va欧美va精品| 91女人视频在线观看| 国产亚洲欧美一级| 美女性感视频久久| 在线视频综合导航| 国产精品久久久久久久久免费相片| 日韩电影在线一区二区三区| 91网址在线看| 久久久九九九九| 麻豆视频观看网址久久| 精品视频在线免费| 亚洲色图视频免费播放| 成人免费毛片高清视频| 久久日一线二线三线suv| 免费黄网站欧美| 欧美情侣在线播放| 亚洲成av人片一区二区| 一本久久综合亚洲鲁鲁五月天| 亚洲精品一区在线观看| 国产无一区二区| 亚洲一区二区在线播放相泽| 97精品视频在线观看自产线路二| 亚洲午夜久久久久中文字幕久| 久久久99精品免费观看不卡| 一区2区3区在线看| 国产一区二区按摩在线观看| 在线不卡中文字幕播放| 日韩毛片在线免费观看| 九色综合国产一区二区三区| 色哦色哦哦色天天综合| 亚洲欧美日韩中文字幕一区二区三区| 久久国产精品色婷婷| 欧美日韩日日摸| 一区二区三区在线免费播放| 国产乱码精品1区2区3区| 日韩网站在线看片你懂的| 亚洲成a人v欧美综合天堂下载| 不卡视频在线观看| 欧美激情综合五月色丁香 | 夜夜嗨av一区二区三区网页| 国产一区二区在线视频| 91丨九色丨蝌蚪富婆spa| 亚洲女同一区二区| 91女厕偷拍女厕偷拍高清| 国产欧美日韩亚州综合| 国产毛片精品一区| 久久这里只精品最新地址| 精品在线一区二区三区| 欧美大片国产精品| 亚洲国产日韩精品| 日韩午夜三级在线| 久久99国产精品久久99| 欧美一区二区免费| 久久超碰97人人做人人爱| 精品捆绑美女sm三区| 秋霞电影网一区二区| 欧美一区二区三区喷汁尤物| 日韩av中文在线观看| 欧美一区二区精品在线| 久久精品国产99久久6| 日韩欧美黄色影院| 国产在线精品一区二区不卡了| 国产欧美一区二区精品秋霞影院| 国产精品影音先锋| 日本一区二区免费在线观看视频 | 欧美—级在线免费片| 国产98色在线|日韩| 中文字幕不卡一区| 成人18视频在线播放| 亚洲福利一二三区| 欧美一区二区三区在线电影| 精品午夜一区二区三区在线观看| 精品国产免费视频| 国产精品一卡二卡| 亚洲一区在线看| 日韩欧美不卡在线观看视频| 国产一区二区导航在线播放| 国产欧美日韩综合| 欧美在线观看你懂的| 日本不卡1234视频| 国产午夜亚洲精品不卡| 91亚洲精华国产精华精华液| 日本一区二区高清| 欧美精品在线一区二区三区| 麻豆成人免费电影| 中文无字幕一区二区三区| 色婷婷综合久色| 国产成人综合亚洲91猫咪| 国产精品成人免费在线| 欧美日韩精品免费| 精品影视av免费| 亚洲欧美另类综合偷拍| 91麻豆精品国产91久久久资源速度 | 91黄色免费看| 精品一区在线看| 美女被吸乳得到大胸91| 国产日韩欧美精品电影三级在线| 91在线观看高清| 精品一区二区免费视频| 国产精品电影院| 日韩欧美在线不卡| 91尤物视频在线观看| 国产精品久久久久aaaa| 2024国产精品|