コード例 #1
0
ファイル: keyboard.c プロジェクト: imgits/rkanalyzer
void
setkbdled (int ledstatus)
{
	u8 gomi;

	wait_for_kbdsend (false);
	asm_outb (KBD_DATA, 0xED);
	wait_for_kbdrecv (true);
	asm_inb (KBD_DATA, &gomi);
	wait_for_kbdsend (false);
	asm_outb (KBD_DATA, ledstatus);
	wait_for_kbdrecv (true);
	asm_inb (KBD_DATA, &gomi);
}
コード例 #2
0
ファイル: keyboard.c プロジェクト: imgits/rkanalyzer
static void
wait_for_kbdsend (bool sending)
{
	u8 status;

	do
		asm_inb (KBD_STATUS, &status);
	while (!(status & 2) != !sending);
}
コード例 #3
0
ファイル: keyboard.c プロジェクト: imgits/rkanalyzer
static void
wait_for_kbdrecv (bool receiving)
{
	u8 status;

	do
		asm_inb (KBD_STATUS, &status);
	while (!(status & 1) != !receiving);
}
コード例 #4
0
ファイル: keyboard.c プロジェクト: imgits/rkanalyzer
static u8
keyboard_getkey (void)
{
	u8 data;

	wait_for_kbdrecv (true);
	asm_inb (KBD_DATA, &data);
	wait_for_kbdrecv (false);
	pressed[data & 127] = (data & 128) ? false : true;
	return data;
}
コード例 #5
0
ファイル: vt_panic.c プロジェクト: anbangr/bitvisor-dev
static void
vt_panic (void)
{
	ulong cr4;
	u8 port0x92;

	asm_rdcr4 (&cr4);
	if (!(cr4 & CR4_VMXE_BIT))
		return;
	/* enable A20 */
	/* the guest can set or clear A20M# because 
	   A20M# is ignored during VMX operation. however
	   A20M# is used after VMXOFF. */
	asm_inb (0x92, &port0x92);
	port0x92 |= 2;
	asm_outb (0x92, port0x92);
	asm_vmxoff ();
	cr4 &= ~CR4_VMXE_BIT;
	asm_wrcr4 (cr4);
}