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

📄 logadp.c

📁 ARM入门的好帮手.包含了从简单到相对较复杂的程序.
💻 C
字号:
/* -*-C-*-
 *
 * $Revision: 1.1 $
 *   $Author: mgray $
 *     $Date: 1996/08/22 15:42:32 $
 *
 * Copyright (c) 1996 Advanced RISC Machines Limited.
 * All Rights Reserved.
 *
 *   Project: ANGEL
 *
 *     Title: Debug interface via ADP to host
 */

#include "channels.h"
#include "logadp.h"
#include "debug.h"

#define LOGADP_PREFIX_STR "TLOG: "
#define LOGADP_PREFIX_LEN 6        /* set by hand, to avoid strlen */

static p_Buffer logadp_buf = NULL;
char           *logadp_pos;
char           *logadp_end;

extern bool logadp_inUSRmode( void );

#pragma no_check_stack

bool logadp_PreWarn(WarnLevel level)
{
    IGNORE(level);

    if ( ! boot_completed )
       return FALSE;

    if ( logadp_buf != NULL )
       return FALSE;            /* busy */

    if ( ! logadp_inUSRmode() )
       return FALSE;

    logadp_buf = angel_ChannelAllocBuffer( Angel_ChanBuffSize );
    if (logadp_buf != NULL)
    {
        char *prefix = LOGADP_PREFIX_STR;

        logadp_pos = (char *)logadp_buf;
        logadp_end = (char *)(logadp_buf + Angel_ChanBuffSize - 1);

        while ( (*logadp_pos++ = *prefix++) != '\0' )
           /* classic strcpy, no body required */ ;

        return TRUE;
    }
    else
       return FALSE;
}

void logadp_PostWarn(unsigned int len)
{
    ChanError err;

    len += LOGADP_PREFIX_LEN;
    *logadp_pos = '\0';
    ++len;

    err = angel_ChannelSendThenRead( CH_DEFAULT_DEV, CI_TLOG,
                                     &logadp_buf, &len);
    if ( err == CE_OKAY )
       angel_ChannelReleaseBuffer( logadp_buf );

    logadp_buf = NULL;
}

#pragma check_stack

/* EOF logadp.c */

⌨️ 快捷键说明

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