kdpacket.c (c2c66aff) | kdpacket.c (de369ce2) |
---|---|
1/* 2 * COPYRIGHT: GPL, see COPYING in the top level directory 3 * PROJECT: ReactOS kernel 4 * FILE: drivers/base/kddll/kdpacket.c 5 * PURPOSE: Base functions for the kernel debugger. 6 */ 7 8#include "kdgdb.h" --- 346 unchanged lines hidden (view full) --- 355NTAPI 356KdReceivePacket( 357 _In_ ULONG PacketType, 358 _Out_ PSTRING MessageHeader, 359 _Out_ PSTRING MessageData, 360 _Out_ PULONG DataLength, 361 _Inout_ PKD_CONTEXT KdContext) 362{ | 1/* 2 * COPYRIGHT: GPL, see COPYING in the top level directory 3 * PROJECT: ReactOS kernel 4 * FILE: drivers/base/kddll/kdpacket.c 5 * PURPOSE: Base functions for the kernel debugger. 6 */ 7 8#include "kdgdb.h" --- 346 unchanged lines hidden (view full) --- 355NTAPI 356KdReceivePacket( 357 _In_ ULONG PacketType, 358 _Out_ PSTRING MessageHeader, 359 _Out_ PSTRING MessageData, 360 _Out_ PULONG DataLength, 361 _Inout_ PKD_CONTEXT KdContext) 362{ |
363 KDDBGPRINT("KdReceivePacket.\n"); | 363 KDDBGPRINT("KdReceivePacket --> "); |
364 365 if (PacketType == PACKET_TYPE_KD_POLL_BREAKIN) 366 { | 364 365 if (PacketType == PACKET_TYPE_KD_POLL_BREAKIN) 366 { |
367 static BOOLEAN firstTime = TRUE; 368 KDDBGPRINT("Polling break in.\n"); 369 if (firstTime) 370 { 371 /* Force debug break on init */ 372 firstTime = FALSE; 373 return KdPacketReceived; 374 } 375 |
|
367 return KdpPollBreakIn(); 368 } 369 370 if (PacketType == PACKET_TYPE_KD_DEBUG_IO) 371 { | 376 return KdpPollBreakIn(); 377 } 378 379 if (PacketType == PACKET_TYPE_KD_DEBUG_IO) 380 { |
381 KDDBGPRINT("Debug prompt.\n"); |
|
372 /* HACK ! RtlAssert asks for (boipt), always say "o" --> break once. */ 373 MessageData->Length = 1; 374 MessageData->Buffer[0] = 'o'; 375 return KdPacketReceived; 376 } 377 378 if (PacketType == PACKET_TYPE_KD_STATE_MANIPULATE) 379 { 380 DBGKD_MANIPULATE_STATE64* State = (DBGKD_MANIPULATE_STATE64*)MessageHeader->Buffer; 381 | 382 /* HACK ! RtlAssert asks for (boipt), always say "o" --> break once. */ 383 MessageData->Length = 1; 384 MessageData->Buffer[0] = 'o'; 385 return KdPacketReceived; 386 } 387 388 if (PacketType == PACKET_TYPE_KD_STATE_MANIPULATE) 389 { 390 DBGKD_MANIPULATE_STATE64* State = (DBGKD_MANIPULATE_STATE64*)MessageHeader->Buffer; 391 |
392 KDDBGPRINT("State manipulation: "); 393 |
|
382 /* Maybe we are in a send<->receive loop that GDB doesn't need to know about */ 383 if (KdpManipulateStateHandler != NULL) 384 { | 394 /* Maybe we are in a send<->receive loop that GDB doesn't need to know about */ 395 if (KdpManipulateStateHandler != NULL) 396 { |
385 KDDBGPRINT("KDGBD: We have a manipulate state handler.\n"); | 397 KDDBGPRINT("We have a manipulate state handler.\n"); |
386 return KdpManipulateStateHandler(State, MessageData, DataLength, KdContext); 387 } 388 389 /* Receive data from GDB and interpret it */ | 398 return KdpManipulateStateHandler(State, MessageData, DataLength, KdContext); 399 } 400 401 /* Receive data from GDB and interpret it */ |
402 KDDBGPRINT("Receiving data from GDB.\n"); |
|
390 return gdb_receive_and_interpret_packet(State, MessageData, DataLength, KdContext); 391 } 392 393 /* What should we do ? */ 394 while (1); 395 return KdPacketNeedsResend; 396} 397 --- 40 unchanged lines hidden --- | 403 return gdb_receive_and_interpret_packet(State, MessageData, DataLength, KdContext); 404 } 405 406 /* What should we do ? */ 407 while (1); 408 return KdPacketNeedsResend; 409} 410 --- 40 unchanged lines hidden --- |