- Code reorganization: put all the port control functions together.
- Little simplifications of some functions (from CORE-7106).
svn path=/trunk/; revision=58825
/* FUNCTIONS ******************************************************************/
+NTSTATUS
+NTAPI
+KdD0Transition(VOID)
+{
+ return STATUS_SUCCESS;
+}
+
+NTSTATUS
+NTAPI
+KdD3Transition(VOID)
+{
+ return STATUS_SUCCESS;
+}
+
+NTSTATUS
+NTAPI
+KdSave(IN BOOLEAN SleepTransition)
+{
+ /* Nothing to do on COM ports */
+ return STATUS_SUCCESS;
+}
+
+NTSTATUS
+NTAPI
+KdRestore(IN BOOLEAN SleepTransition)
+{
+ /* Nothing to do on COM ports */
+ return STATUS_SUCCESS;
+}
+
NTSTATUS
NTAPI
KdpPortInitialize(IN ULONG ComPortNumber,
return KdpPortInitialize(ComPortNumber, ComPortBaudRate);
}
+/******************************************************************************
+ * \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;
+}
+
+
VOID
NTAPI
KdpSendByte(IN UCHAR Byte)
return KDP_PACKET_TIMEOUT;
}
-NTSTATUS
-NTAPI
-KdSave(IN BOOLEAN SleepTransition)
-{
- /* Nothing to do on COM ports */
- return STATUS_SUCCESS;
-}
-
-NTSTATUS
-NTAPI
-KdRestore(IN BOOLEAN SleepTransition)
-{
- /* Nothing to do on COM ports */
- return STATUS_SUCCESS;
-}
-
/* EOF */
IN PVOID Buffer,
IN ULONG Length)
{
- ULONG i, Checksum = 0;
-
- for (i = 0; i < Length; i++)
- {
- Checksum += ((PUCHAR)Buffer)[i];
- }
+ PUCHAR ByteBuffer = Buffer;
+ ULONG Checksum = 0;
+ while (Length-- > 0) Checksum += (ULONG)*ByteBuffer++;
return Checksum;
}
/* 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.
return KDP_PACKET_RECEIVED;
}
-
VOID
NTAPI
KdSendPacket(
#include "kddll.h"
-
+/* FUNCTIONS ******************************************************************/
/******************************************************************************
* \name KdpSendBuffer
IN PVOID Buffer,
IN ULONG Size)
{
- ULONG i;
- for (i = 0; i < Size; i++)
- {
- KdpSendByte(((PUCHAR)Buffer)[i]);
- }
+ PUCHAR ByteBuffer = Buffer;
+
+ while (Size-- > 0) KdpSendByte(*ByteBuffer++);
}
/******************************************************************************
OUT PVOID Buffer,
IN ULONG Size)
{
- ULONG i;
PUCHAR ByteBuffer = Buffer;
+ UCHAR Byte;
KDP_STATUS Status;
- for (i = 0; i < Size; i++)
+ while (Size-- > 0)
{
/* Try to get a byte from the port */
- Status = KdpReceiveByte(&ByteBuffer[i]);
+ Status = KdpReceiveByte(&Byte);
if (Status != KDP_PACKET_RECEIVED) return Status;
+ *ByteBuffer++ = Byte;
}
return KDP_PACKET_RECEIVED;