Files
2026-07-30 11:19:44 +05:30

102 lines
2.8 KiB
C

/* wrload.h - wrload header file */
/*
* Copyright (c) 2008-2010 Wind River Systems, Inc.
*
* The right to copy, distribute, modify or otherwise make use of this software
* may be licensed only pursuant to the terms of an applicable
* Wind River license agreement.
*/
/*
modification history
--------------------
01b,27may10,pad Moved extern C statement after include statements.
01e,08jun10,v_r wrload ID type now stored on 8 bits.
01d,30mar10,v_r Hypervisor-specific updates :
+ Moved cpu number to generic id.
+ Added ability to override CPU prepare/enable routines.
01c,01mar10,v_r Linux types now in a dedicated header.
WRLOAD_ADDR_T now a public type (needed by public APIs).
01b,24nov09,v_r Mods for P4080 36bits support (CQ:WIND00174166):
+ added CPU-specific routines support.
+ added symbol list parsing routine.
01a,08aug08,mak written
*/
/*
DESCRIPTION
This header file provides access to the wrload interface.
*/
#ifndef __INCwrloadh
#define __INCwrloadh
#ifndef LINUX
#include <vxWorks.h>
#else
#include <sys/types.h>
#include "wrloadLinux.h"
#endif
#ifdef __cplusplus
extern "C" {
#endif
/* Retrieve the actual value encoded within the wrload opaque ID */
#define WRLOAD_ID_VALUE_GET(wrloadId) ((wrloadId) & 0xFFFFFF)
/* Do the same for the ID type */
#define WRLOAD_ID_TYPE_GET(wrloadId) (((wrloadId) >> 24) & 0xFF)
#define WRLOAD_ID_DEFAULT_TYPE 0
typedef unsigned long long WRLOAD_ADDR_T;
typedef UINT32 WRLOAD_ID;
typedef enum wrload_cpu_rtn_desc
{
WRLOAD_CPU_MEM_READ,
WRLOAD_CPU_MEM_WRITE,
WRLOAD_CPU_MEM_FILL,
WRLOAD_CPU_MEM_OPEN,
WRLOAD_CPU_MEM_CLOSE,
WRLOAD_CPU_MEM_MAP,
WRLOAD_CPU_MEM_UNMAP,
WRLOAD_CPU_PREPARE,
WRLOAD_CPU_ENABLE
} WRLOAD_CPU_RTN_DESC;
typedef union wrload_cpu_rtn
{
ssize_t (* read) (WRLOAD_ID id, WRLOAD_ADDR_T address, void * buffer,
size_t size);
ssize_t (* write) (WRLOAD_ID id, WRLOAD_ADDR_T address, void * buffer,
size_t size);
ssize_t (* fill) (WRLOAD_ID id, WRLOAD_ADDR_T address, char pattern,
size_t size);
STATUS (* open) (WRLOAD_ID id);
STATUS (* close) (WRLOAD_ID id);
void * (* map) (WRLOAD_ID id, WRLOAD_ADDR_T phys_addr, size_t size);
void (* unmap) (WRLOAD_ID id, void * virt_addr, size_t size);
STATUS (* prepare) (WRLOAD_ID id, void * arg);
STATUS (* enable) (WRLOAD_ADDR_T entry, WRLOAD_ID id);
} WRLOAD_CPU_RTN;
extern STATUS wrload (const char * argsString);
extern STATUS wrloadSymValueGet (WRLOAD_ID id, char * symName,
void * pValue, size_t bufLen);
extern STATUS wrloadCpuRtnSet (WRLOAD_CPU_RTN_DESC cpuRtnDesc,
WRLOAD_CPU_RTN routine);
extern STATUS wrloadCpuRtnGet (WRLOAD_CPU_RTN_DESC cpuRtnDesc,
WRLOAD_CPU_RTN * pRoutine);
#ifdef __cplusplus
}
#endif
#endif /* __INCwrloadh */