X-Git-Url: https://git.ucc.asn.au/?a=blobdiff_plain;f=KernelLand%2FKernel%2Fdrv%2Fserial.c;h=bc7597e4bdb0b6b3b9858c1ccdcf66a3cc24e7cc;hb=93482c6bcb01a912abd27618d9f99d4aa33dd617;hp=2792df9166b693832aeae4312a73f6401b06b223;hpb=9ae39ccdd3d650b307dee2726efd38dca3233854;p=tpg%2Facess2.git diff --git a/KernelLand/Kernel/drv/serial.c b/KernelLand/Kernel/drv/serial.c index 2792df91..bc7597e4 100644 --- a/KernelLand/Kernel/drv/serial.c +++ b/KernelLand/Kernel/drv/serial.c @@ -12,6 +12,8 @@ #include #include +extern void Validate_VirtualMemoryUsage(void); + // === TYPES === struct sSerialPort { @@ -67,23 +69,32 @@ void Serial_ByteReceived(tSerialPort *Port, char Ch) return ; if( Port == gSerial_KernelDebugPort ) { + static tDebugHook info; static int serial_debug_mode = 0; // Kernel serial debug hooks. - if( serial_debug_mode ) + if( serial_debug_mode == 2 ) + { + // Leave latched mode + if( Ch == '.' ) + serial_debug_mode = 0; + else + DebugHook_HandleInput(&info, 1, &Ch); + return ; + } + else if( serial_debug_mode ) { - switch(Ch) - { - case 'p': - Threads_Dump(); - break; - case 'h': - Heap_Dump(); - break; - case 'X'-'A'+1: + if( Ch == 'X'-'A'+1 ) { PTY_SendInput(Port->PTY, &Ch, 1); - break; + serial_debug_mode = 0; + } + else if( Ch == '~' ) { + // Enter latched mode + serial_debug_mode = 2; + } + else { + DebugHook_HandleInput(&info, 1, &Ch); + serial_debug_mode = 0; } - serial_debug_mode = 0; return ; } else if( Ch == 'X'-'A'+1 )