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

📄 ixosalosservices.c

📁 AMCC POWERPC 44X系列的U-BOOT文件
💻 C
字号:
/** * @file IxOsalOsServices.c (linux) * * @brief Implementation for Irq, Mem, sleep. * * * @par * IXP400 SW Release version 1.5 * * -- Copyright Notice -- * * @par * Copyright 2001-2005, Intel Corporation. * All rights reserved. * * @par * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright *    notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright *    notice, this list of conditions and the following disclaimer in the *    documentation and/or other materials provided with the distribution. * 3. Neither the name of the Intel Corporation nor the names of its contributors *    may be used to endorse or promote products derived from this software *    without specific prior written permission. * * @par * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``AS IS'' * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * * @par * -- End of Copyright Notice -- */#include <config.h>#include <common.h>#include "IxOsal.h"#include <IxEthAcc.h>#include <IxEthDB.h>#include <IxNpeDl.h>#include <IxQMgr.h>#include <IxNpeMh.h>static char *traceHeaders[] = {    "",    "[fatal] ",    "[error] ",    "[warning] ",    "[message] ",    "[debug1] ",    "[debug2] ",    "[debug3] ",    "[all]"};/* by default trace all but debug message */PRIVATE int ixOsalCurrLogLevel = IX_OSAL_LOG_LVL_MESSAGE;/************************************** * Irq services *************************************/PUBLIC IX_STATUSixOsalIrqBind (UINT32 vector, IxOsalVoidFnVoidPtr routine, void *parameter){    return IX_FAIL;}PUBLIC IX_STATUSixOsalIrqUnbind (UINT32 vector){    return IX_FAIL;}PUBLIC UINT32ixOsalIrqLock (){    return 0;}/* Enable interrupts and task scheduling, * input parameter: irqEnable status returned * by ixOsalIrqLock(). */PUBLIC voidixOsalIrqUnlock (UINT32 lockKey){}PUBLIC UINT32ixOsalIrqLevelSet (UINT32 level){    return IX_FAIL;}PUBLIC voidixOsalIrqEnable (UINT32 irqLevel){}PUBLIC voidixOsalIrqDisable (UINT32 irqLevel){}/********************* * Log function *********************/INT32ixOsalLog (IxOsalLogLevel level,    IxOsalLogDevice device,    char *format, int arg1, int arg2, int arg3, int arg4, int arg5, int arg6){    /*     * Return -1 for custom display devices     */    if ((device != IX_OSAL_LOG_DEV_STDOUT)        && (device != IX_OSAL_LOG_DEV_STDERR))    {        debug("ixOsalLog: only IX_OSAL_LOG_DEV_STDOUT and IX_OSAL_LOG_DEV_STDERR are supported \n");        return (IX_OSAL_LOG_ERROR);    }    if (level <= ixOsalCurrLogLevel && level != IX_OSAL_LOG_LVL_NONE)    {#if 0 /* sr: U-Boots printf or debug doesn't return a length */        int headerByteCount = (level == IX_OSAL_LOG_LVL_USER) ? 0 : diag_printf(traceHeaders[level - 1]);        return headerByteCount + diag_printf (format, arg1, arg2, arg3, arg4, arg5, arg6);#else        int headerByteCount = (level == IX_OSAL_LOG_LVL_USER) ? 0 : strlen(traceHeaders[level - 1]);        return headerByteCount + strlen(format);#endif    }    else    {        /*         * Return error         */        return (IX_OSAL_LOG_ERROR);    }}PUBLIC UINT32ixOsalLogLevelSet (UINT32 level){    UINT32 oldLevel;    /*     * Check value first     */    if ((level < IX_OSAL_LOG_LVL_NONE) || (level > IX_OSAL_LOG_LVL_ALL))    {        ixOsalLog (IX_OSAL_LOG_LVL_MESSAGE,            IX_OSAL_LOG_DEV_STDOUT,            "ixOsalLogLevelSet: Log Level is between %d and%d \n",            IX_OSAL_LOG_LVL_NONE, IX_OSAL_LOG_LVL_ALL, 0, 0, 0, 0);        return IX_OSAL_LOG_LVL_NONE;    }    oldLevel = ixOsalCurrLogLevel;    ixOsalCurrLogLevel = level;    return oldLevel;}/************************************** * Task services *************************************/PUBLIC voidixOsalBusySleep (UINT32 microseconds){	udelay(microseconds);}PUBLIC voidixOsalSleep (UINT32 milliseconds){    if (milliseconds != 0) {#if 1	/*	 * sr: We poll while we wait because interrupts are off in U-Boot	 * and CSR expects messages, etc to be dispatched while sleeping.	 */	int i;	IxQMgrDispatcherFuncPtr qDispatcherFunc;	ixQMgrDispatcherLoopGet(&qDispatcherFunc);	while (milliseconds--) {		for (i = 1; i <= 2; i++)			ixNpeMhMessagesReceive(i);		(*qDispatcherFunc)(IX_QMGR_QUELOW_GROUP);		udelay(1000);	}#endif    }}/************************************** * Memory functions *************************************/void *ixOsalMemAlloc (UINT32 size){    return (void *)0;}voidixOsalMemFree (void *ptr){}/* * Copy count bytes from src to dest , * returns pointer to the dest mem zone. */void *ixOsalMemCopy (void *dest, void *src, UINT32 count){    IX_OSAL_ASSERT (dest != NULL);    IX_OSAL_ASSERT (src != NULL);    return (memcpy (dest, src, count));}/* * Fills a memory zone with a given constant byte, * returns pointer to the memory zone. */void *ixOsalMemSet (void *ptr, UINT8 filler, UINT32 count){    IX_OSAL_ASSERT (ptr != NULL);    return (memset (ptr, filler, count));}

⌨️ 快捷键说明

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