-int putDebugChar(char ch)
-{
- if(!gbGDB_SerialSetup) {
- outb(GDB_SERIAL_PORT + 1, 0x00); // Disable all interrupts
- outb(GDB_SERIAL_PORT + 3, 0x80); // Enable DLAB (set baud rate divisor)
- outb(GDB_SERIAL_PORT + 0, 0x03); // Set divisor to 3 (lo byte) 38400 baud
- outb(GDB_SERIAL_PORT + 1, 0x00); // (hi byte)
- outb(GDB_SERIAL_PORT + 3, 0x03); // 8 bits, no parity, one stop bit
- outb(GDB_SERIAL_PORT + 2, 0xC7); // Enable FIFO with 14-byte threshold and clear it
- outb(GDB_SERIAL_PORT + 4, 0x0B); // IRQs enabled, RTS/DSR set
- gbDebug_SerialSetup = 1;
- }
- while( (inb(GDB_SERIAL_PORT + 5) & 0x20) == 0 );
- outb(GDB_SERIAL_PORT, ch);
- return 0;
-}
-int getDebugChar()
-{
- if(!gbGDB_SerialSetup) {
- outb(GDB_SERIAL_PORT + 1, 0x00); // Disable all interrupts
- outb(GDB_SERIAL_PORT + 3, 0x80); // Enable DLAB (set baud rate divisor)
- outb(GDB_SERIAL_PORT + 0, 0x03); // Set divisor to 3 (lo byte) 38400 baud
- outb(GDB_SERIAL_PORT + 1, 0x00); // (hi byte)
- outb(GDB_SERIAL_PORT + 3, 0x03); // 8 bits, no parity, one stop bit
- outb(GDB_SERIAL_PORT + 2, 0xC7); // Enable FIFO with 14-byte threshold and clear it
- outb(GDB_SERIAL_PORT + 4, 0x0B); // IRQs enabled, RTS/DSR set
- gbDebug_SerialSetup = 1;
+static void Debug_Putchar(char ch)
+{
+ Debug_PutCharDebug(ch);
+ if( !gbDebug_IsKPanic )
+ {
+ if(gbInPutChar) return ;
+ gbInPutChar = 1;
+ if(giDebug_KTerm != -1)
+ VFS_Write(giDebug_KTerm, 1, &ch);
+ gbInPutChar = 0;