⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 debuggerinputstream.c

📁 Nucleus_2_kvm_Hello 是kvm移植到Nucleus系统的源代码。。。好东西啊
💻 C
字号:
/* * Copyright (c) 1997-2001 Sun Microsystems, Inc. All Rights Reserved. *  * This software is the confidential and proprietary information of Sun * Microsystems, Inc. ("Confidential Information").  You shall not * disclose such Confidential Information and shall use it only in * accordance with the terms of the license agreement you entered into * with Sun. *  * SUN MAKES NO REPRESENTATIONS OR WARRANTIES ABOUT THE SUITABILITY OF THE * SOFTWARE, EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE * IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR * PURPOSE, OR NON-INFRINGEMENT. SUN SHALL NOT BE LIABLE FOR ANY DAMAGES * SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR DISTRIBUTING * THIS SOFTWARE OR ITS DERIVATIVES. *  *  * Use is subject to license terms. *//*========================================================================= * SYSTEM:    KVM * SUBSYSTEM: Input stream for debugger interface * FILE:      debuggerInputStream.c * OVERVIEW:  Presents a stream-based interface to data coming *            from the user-level debugger. * AUTHOR:    From JPDA sources/modified by Bill Pittore, Sun Labs *=======================================================================*//*========================================================================= * Include files *=======================================================================*/#include "global.h"/*========================================================================= * Functions *=======================================================================*/#if ENABLE_JAVA_DEBUGGER/* * TO DO: Support processing of replies through command input streams. */voidinStream_init(PACKET_INPUT_STREAM_HANDLE streamH){    PACKET_INPUT_STREAM stream = unhand(streamH);    stream->error = JDWP_Error_NONE;    stream->segment = stream->packet->type.cmd.data;    stream->left = stream->segment->length;    stream->segment->index = 0;}long inStream_id(PACKET_INPUT_STREAM_HANDLE streamH){    return unhand(streamH)->packet->type.cmd.id;}#if NOT_USEDunsigned charinStream_command(PACKET_INPUT_STREAM_HANDLE streamH){    return unhand(streamH)->packet->type.cmd.cmd;}#endifstatic long readBytes(PACKET_INPUT_STREAM_HANDLE streamH, void *dest, long size) {    /*     * Iteration handles items that span multiple packet segments     */    PACKET_INPUT_STREAM stream = unhand(streamH);    if (stream->error) {        return stream->error;    }    while (size > 0) {        long count = MIN(size, stream->left);        if (count == 0) {            /* end of input */            stream->error = JDWP_Error_INTERNAL;            return stream->error;        }        if (dest) {            memcpy(dest, &stream->segment->data[stream->segment->index], count);        }        stream->segment->index += count;        stream->left -= count;        if (stream->left == 0) {            /*             * Move to the next segment             */            stream->segment = stream->segment->next;            if (stream->segment) {                stream->left = stream->segment->length;                stream->segment->index = 0;            }        }        size -= count;        if (dest) {            dest = (char *)dest + count;        }    }    return stream->error;}bool_t inStream_readBoolean(PACKET_INPUT_STREAM_HANDLE streamH){    unsigned char flag;    readBytes(streamH, &flag, sizeof(flag));    if (unhand(streamH)->error) {        return 0;    } else {        return flag ? TRUE : FALSE;    }}unsigned char inStream_readByte(PACKET_INPUT_STREAM_HANDLE streamH){    unsigned char val = 0;    readBytes(streamH, &val, sizeof(val));    return val;}char inStream_readChar(PACKET_INPUT_STREAM_HANDLE streamH){    char val = 0;    readBytes(streamH, &val, sizeof(val));    return JAVA_TO_HOST_CHAR(val);}short inStream_readShort(PACKET_INPUT_STREAM_HANDLE streamH){    short val = 0;    readBytes(streamH, &val, sizeof(val));    return JAVA_TO_HOST_SHORT(val);}int inStream_readInt(PACKET_INPUT_STREAM_HANDLE streamH){    int val = 0;    readBytes(streamH, &val, sizeof(val));    return JAVA_TO_HOST_INT(val);}longinStream_readLong(PACKET_INPUT_STREAM_HANDLE streamH){    long val = 0;    readBytes(streamH, &val, sizeof(val));    return JAVA_TO_HOST_INT(val);}/*  val1 is lower 32 bits, val2 is upper 32 bits */voidinStream_readLong64(PACKET_INPUT_STREAM_HANDLE streamH, unsigned long *val1, unsigned long *val2){    readBytes(streamH, val2, sizeof(val2));    readBytes(streamH, val1, sizeof(val1));    *val1 = JAVA_TO_HOST_INT(*val1);    *val2 = JAVA_TO_HOST_INT(*val2);}char * inStream_readString(PACKET_INPUT_STREAM_HANDLE streamH){    long length = inStream_readLong(streamH);    char *result;    START_TEMPORARY_ROOTS        DECLARE_TEMPORARY_ROOT(char *, string, mallocBytes(length + 1));        readBytes(streamH, string, length);        string[length] = '\0';        result = string;    END_TEMPORARY_ROOTS    return result;}OBJECT inStream_readObject(PACKET_OUTPUT_STREAM_HANDLE inH){    return getObjectPtr(inStream_readLong(inH));}bool_t inStream_endOfInput(PACKET_INPUT_STREAM_HANDLE streamH){    return (unhand(streamH)->left > 0);}int inStream_error(PACKET_INPUT_STREAM_HANDLE streamH){    return unhand(streamH)->error;}#endif /* ENABLE_JAVA_DEBUGGER */

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -