mach_reboot.h

来自「linux 内核源代码」· C头文件 代码 · 共 62 行

H
62
字号
/* *  arch/i386/mach-generic/mach_reboot.h * *  Machine specific reboot functions for generic. *  Split out from reboot.c by Osamu Tomita <tomita@cinet.co.jp> */#ifndef _MACH_REBOOT_H#define _MACH_REBOOT_Hstatic inline void kb_wait(void){	int i;	for (i = 0; i < 0x10000; i++)		if ((inb_p(0x64) & 0x02) == 0)			break;}static inline void mach_reboot(void){	int i;	/* old method, works on most machines */	for (i = 0; i < 10; i++) {		kb_wait();		udelay(50);		outb(0xfe, 0x64);	/* pulse reset low */		udelay(50);	}	/* New method: sets the "System flag" which, when set, indicates	 * successful completion of the keyboard controller self-test (Basic	 * Assurance Test, BAT).  This is needed for some machines with no	 * keyboard plugged in.  This read-modify-write sequence sets only the	 * system flag	 */	for (i = 0; i < 10; i++) {		int cmd;		outb(0x20, 0x64);	/* read Controller Command Byte */		udelay(50);		kb_wait();		udelay(50);		cmd = inb(0x60);		udelay(50);		kb_wait();		udelay(50);		outb(0x60, 0x64);	/* write Controller Command Byte */		udelay(50);		kb_wait();		udelay(50);		outb(cmd | 0x14, 0x60); /* set "System flag" and "Keyboard Disabled" */		udelay(50);		kb_wait();		udelay(50);		outb(0xfe, 0x64);	/* pulse reset low */		udelay(50);	}}#endif /* !_MACH_REBOOT_H */

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?