From c6a6ac928a23d1d616a2c428c2d0222d2bc4fe93 Mon Sep 17 00:00:00 2001 From: Timo Kreuzer Date: Sat, 28 May 2016 15:51:44 +0000 Subject: [PATCH] Revert a mistake commit... svn path=/trunk/; revision=71437 --- reactos/drivers/base/kdcom/kddll.c | 230 ++++++----------------------- 1 file changed, 46 insertions(+), 184 deletions(-) diff --git a/reactos/drivers/base/kdcom/kddll.c b/reactos/drivers/base/kdcom/kddll.c index ca18011c7b6..9a6657a76be 100644 --- a/reactos/drivers/base/kdcom/kddll.c +++ b/reactos/drivers/base/kdcom/kddll.c @@ -8,19 +8,11 @@ #include "kddll.h" -#define _FULL_ 1 -#define _WORKS_ 0 -#define _WORKS2_ 0 - /* GLOBALS ********************************************************************/ ULONG CurrentPacketId = INITIAL_PACKET_ID | SYNC_PACKET_ID; -ULONG RemotePacketId = INITIAL_PACKET_ID; +ULONG RemotePacketId = INITIAL_PACKET_ID; -#if _FULL_ -ULONG KdCompNumberRetries = 5; -ULONG KdCompRetryCount = 5; -#endif /* PRIVATE FUNCTIONS **********************************************************/ @@ -38,13 +30,13 @@ KdpCalculateChecksum( IN PVOID Buffer, IN ULONG Length) { - ULONG i, Checksum = 0; + PUCHAR ByteBuffer = Buffer; + ULONG Checksum = 0; - for (i = 0; i < Length; i++) + while (Length-- > 0) { - Checksum += ((PUCHAR)Buffer)[i]; + Checksum += (ULONG)*ByteBuffer++; } - return Checksum; } @@ -68,36 +60,6 @@ KdpSendControlPacket( /* PUBLIC FUNCTIONS ***********************************************************/ -NTSTATUS -NTAPI -KdD0Transition(VOID) -{ - return STATUS_SUCCESS; -} - -NTSTATUS -NTAPI -KdD3Transition(VOID) -{ - return STATUS_SUCCESS; -} - - -/****************************************************************************** - * \name KdDebuggerInitialize1 - * \brief Phase 1 initialization. - * \param [opt] LoaderBlock Pointer to the Loader parameter block. Can be NULL. - * \return Status - */ -NTSTATUS -NTAPI -KdDebuggerInitialize1( - IN PLOADER_PARAMETER_BLOCK LoaderBlock OPTIONAL) -{ - return STATUS_SUCCESS; -} - - /****************************************************************************** * \name KdReceivePacket * \brief Receive a packet from the KD port. @@ -128,36 +90,21 @@ KdReceivePacket( ULONG Checksum; /* Special handling for breakin packet */ - if (PacketType == PACKET_TYPE_KD_POLL_BREAKIN) + if(PacketType == PACKET_TYPE_KD_POLL_BREAKIN) { return KdpPollBreakIn(); } for (;;) { -#if _FULL_ || _WORKS2_ - if (KdContext) - { - KdContext->KdpControlCPending = FALSE; - } -#endif /* Step 1 - Read PacketLeader */ KdStatus = KdpReceivePacketLeader(&Packet.PacketLeader); -#if _FULL_ - if (KdStatus != KDP_PACKET_TIMEOUT) - { -// KdCompNumberRetries = KdCompRetryCount; - } -#endif if (KdStatus != KDP_PACKET_RECEIVED) { /* Check if we got a breakin */ if (KdStatus == KDP_PACKET_RESEND) { -#if _FULL_ || _WORKS2_ || _PATCH_ - if (KdContext) -#endif - KdContext->KdpControlCPending = TRUE; + KdContext->KdpControlCPending = TRUE; } return KdStatus; } @@ -167,37 +114,22 @@ KdReceivePacket( if (KdStatus != KDP_PACKET_RECEIVED) { /* Didn't receive a PacketType. */ - KDDBGPRINT("KdReceivePacket - Didn't receive a PacketType.\n"); -#if _WORKS_ - continue; -#else return KdStatus; -#endif } /* Check if we got a resend packet */ if (Packet.PacketLeader == CONTROL_PACKET_LEADER && Packet.PacketType == PACKET_TYPE_KD_RESEND) { - KDDBGPRINT("KdReceivePacket - PACKET_TYPE_KD_RESEND.\n"); return KDP_PACKET_RESEND; } /* Step 3 - Read ByteCount */ KdStatus = KdpReceiveBuffer(&Packet.ByteCount, sizeof(USHORT)); -#if _WORKS_ - if (KdStatus != KDP_PACKET_RECEIVED || Packet.ByteCount > PACKET_MAX_SIZE) -#else if (KdStatus != KDP_PACKET_RECEIVED) -#endif { - /* Didn't receive ByteCount _WORKS_: or it's too big. Start over. */ - KDDBGPRINT("KdReceivePacket - Didn't receive ByteCount.\n"); -#if _WORKS_ - continue; -#else + /* Didn't receive ByteCount. */ return KdStatus; -#endif } /* Step 4 - Read PacketId */ @@ -205,12 +137,7 @@ KdReceivePacket( if (KdStatus != KDP_PACKET_RECEIVED) { /* Didn't receive PacketId. */ - KDDBGPRINT("KdReceivePacket - Didn't receive PacketId.\n"); -#if _WORKS_ - continue; -#else return KdStatus; -#endif } /* @@ -226,12 +153,7 @@ KdReceivePacket( if (KdStatus != KDP_PACKET_RECEIVED) { /* Didn't receive Checksum. */ - KDDBGPRINT("KdReceivePacket - Didn't receive Checksum.\n"); -#if _WORKS_ - continue; -#else return KdStatus; -#endif } /* Step 6 - Handle control packets */ @@ -253,9 +175,9 @@ KdReceivePacket( case PACKET_TYPE_KD_RESET: KDDBGPRINT("KdReceivePacket - got PACKET_TYPE_KD_RESET\n"); - CurrentPacketId = INITIAL_PACKET_ID; - RemotePacketId = INITIAL_PACKET_ID; KdpSendControlPacket(PACKET_TYPE_KD_RESET, 0); + CurrentPacketId = INITIAL_PACKET_ID; + RemotePacketId = INITIAL_PACKET_ID; /* Fall through */ case PACKET_TYPE_KD_RESEND: @@ -265,11 +187,8 @@ KdReceivePacket( default: KDDBGPRINT("KdReceivePacket - got unknown control packet\n"); -#if _FULL_ + /* We got an invalid packet, ignore it and start over */ continue; -#else - return KDP_PACKET_RESEND; -#endif } } @@ -277,56 +196,17 @@ KdReceivePacket( if (PacketType == PACKET_TYPE_KD_ACKNOWLEDGE) { /* We received something different */ -#if _FULL_ || _WORKS2_ - if (Packet.PacketId != RemotePacketId) - { - KdpSendControlPacket(PACKET_TYPE_KD_ACKNOWLEDGE, - Packet.PacketId); - continue; - } -#elif _PATCH_ - DBGKD_MANIPULATE_STATE64 State; - KdStatus = KdpReceiveBuffer(&State, sizeof(State)); - KDDBGPRINT("KdReceivePacket - unxpected Packet.PacketType=0x%x, 0x%x, 0x%x\n", - Packet.PacketType, Packet.Checksum, State.ApiNumber); -#endif KdpSendControlPacket(PACKET_TYPE_KD_RESEND, 0); CurrentPacketId ^= 1; return KDP_PACKET_RECEIVED; } /* Get size of the message header */ -#if _WORKS_ - switch (Packet.PacketType) - { - case PACKET_TYPE_KD_STATE_CHANGE64: - MessageHeader->Length = sizeof(DBGKD_WAIT_STATE_CHANGE64); - break; - - case PACKET_TYPE_KD_STATE_MANIPULATE: - MessageHeader->Length = sizeof(DBGKD_MANIPULATE_STATE64); - break; - - case PACKET_TYPE_KD_DEBUG_IO: - MessageHeader->Length = sizeof(DBGKD_DEBUG_IO); - break; - - default: - KDDBGPRINT("KdReceivePacket - unknown PacketType\n"); - return KDP_PACKET_RESEND; - } - - //KDDBGPRINT("KdReceivePacket - got normal PacketType\n"); - - /* Packet smaller than expected? */ - if (MessageHeader->Length > Packet.ByteCount) -#else MessageHeader->Length = MessageHeader->MaximumLength; /* Packet smaller than expected or too big? */ if (Packet.ByteCount < MessageHeader->Length || Packet.ByteCount > PACKET_MAX_SIZE) -#endif { KDDBGPRINT("KdReceivePacket - too few data (%d) for type %d\n", Packet.ByteCount, MessageHeader->Length); @@ -338,11 +218,8 @@ KdReceivePacket( //KDDBGPRINT("KdReceivePacket - got normal PacketType, Buffer = %p\n", MessageHeader->Buffer); /* Receive the message header data */ -#if _WORKS2_ - MessageHeader->Length = MessageHeader->MaximumLength; -#endif KdStatus = KdpReceiveBuffer(MessageHeader->Buffer, - MessageHeader->Length); + MessageHeader->Length); if (KdStatus != KDP_PACKET_RECEIVED) { /* Didn't receive data. Packet needs to be resent. */ @@ -369,7 +246,7 @@ KdReceivePacket( /* Do we have data? */ if (MessageData->Length) { - KDDBGPRINT("KdReceivePacket - 0x%lx bytes data\n", *DataLength); + KDDBGPRINT("KdReceivePacket - got data\n"); /* Receive the message data */ KdStatus = KdpReceiveBuffer(MessageData->Buffer, @@ -401,19 +278,10 @@ KdReceivePacket( if (Packet.Checksum != Checksum) { KDDBGPRINT("KdReceivePacket - wrong cheksum, got %x, calculated %x\n", - Packet.Checksum, Checksum); - KdpSendControlPacket(PACKET_TYPE_KD_RESEND, 0); - continue; - } - -#if _FULL_ || _WORKS2_ - if (Packet.PacketId != INITIAL_PACKET_ID && - Packet.PacketId != (INITIAL_PACKET_ID ^ 1)) - { + Packet.Checksum, Checksum); KdpSendControlPacket(PACKET_TYPE_KD_RESEND, 0); continue; } -#endif /* Acknowledge the received packet */ KdpSendControlPacket(PACKET_TYPE_KD_ACKNOWLEDGE, Packet.PacketId); @@ -422,7 +290,6 @@ KdReceivePacket( if (Packet.PacketId != RemotePacketId) { /* Continue with next packet */ - KDDBGPRINT("KdReceivePacket - Wrong PacketId.\n"); continue; } @@ -442,28 +309,6 @@ KdReceivePacket( return KDP_PACKET_RECEIVED; } -static -BOOLEAN -IsQuickTimeoutAllowed( - IN ULONG PacketType, - IN PSTRING MessageHeader) -{ - PDBGKD_DEBUG_IO DebugIo = (PDBGKD_DEBUG_IO)MessageHeader->Buffer; - ULONG ApiNumber = DebugIo->ApiNumber; - - if ( ((PacketType == PACKET_TYPE_KD_DEBUG_IO) && - ((ApiNumber == DbgKdPrintStringApi))) || - ((PacketType == PACKET_TYPE_KD_FILE_IO) && - ((ApiNumber == DbgKdCreateFileApi))) || - ((PacketType == PACKET_TYPE_KD_STATE_CHANGE64) && - ((ApiNumber == DbgKdLoadSymbolsStateChange))) ) - { - return TRUE; - } - - return FALSE; -} - VOID NTAPI KdSendPacket( @@ -491,11 +336,7 @@ KdSendPacket( MessageData->Length); } -#if _FULL_ - Retries = KdCompNumberRetries = KdCompRetryCount; -#else Retries = KdContext->KdpDefaultRetries; -#endif for (;;) { @@ -508,7 +349,7 @@ KdSendPacket( /* Send the message header */ KdpSendBuffer(MessageHeader->Buffer, MessageHeader->Length); - /* If we have message data, also send it */ + /* If we have meesage data, also send it */ if (MessageData) { KdpSendBuffer(MessageData->Buffer, MessageData->Length); @@ -529,37 +370,58 @@ KdSendPacket( { /* Packet received, we can quit the loop */ CurrentPacketId &= ~SYNC_PACKET_ID; + Retries = KdContext->KdpDefaultRetries; break; } - - if (KdStatus == KDP_PACKET_TIMEOUT) + else if (KdStatus == KDP_PACKET_TIMEOUT) { /* Timeout, decrement the retry count */ - Retries--; + if (Retries > 0) + Retries--; /* * If the retry count reaches zero, bail out * for packet types allowed to timeout. */ - if ((Retries == 0) && - IsQuickTimeoutAllowed(PacketType, MessageHeader)) + if (Retries == 0) { + ULONG MessageId = *(PULONG)MessageHeader->Buffer; + switch (PacketType) + { + case PACKET_TYPE_KD_DEBUG_IO: + { + if (MessageId != DbgKdPrintStringApi) continue; + break; + } + + case PACKET_TYPE_KD_STATE_CHANGE32: + case PACKET_TYPE_KD_STATE_CHANGE64: + { + if (MessageId != DbgKdLoadSymbolsStateChange) continue; + break; + } + + case PACKET_TYPE_KD_FILE_IO: + { + if (MessageId != DbgKdCreateFileApi) continue; + break; + } + } /* Reset debugger state */ KD_DEBUGGER_NOT_PRESENT = TRUE; SharedUserData->KdDebuggerEnabled &= ~0x00000002; CurrentPacketId = INITIAL_PACKET_ID | SYNC_PACKET_ID; - RemotePacketId = INITIAL_PACKET_ID; + RemotePacketId = INITIAL_PACKET_ID; + return; } } + // else (KdStatus == KDP_PACKET_RESEND) /* Resend the packet */ /* Packet timed out, send it again */ KDDBGPRINT("KdSendPacket got KdStatus 0x%x\n", KdStatus); } - -#if _FULL_ - KdCompNumberRetries = Retries; -#endif // _FULL_ } +/* EOF */ -- 2.17.1