ocsd_if_types.h File Reference

OpenCSD : Standard Types used in the library interfaces. More...

`#include <stdint.h>`
`#include <stddef.h>`
`#include <inttypes.h>`
Include dependency graph for ocsd_if_types.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

## Classes

struct | _ocsd_arch_profile_t
struct | _ocsd_instr_info
struct | _ocsd_pe_context
struct | _ocsd_file_mem_region
struct | _ocsd_swt_info

## Macros

Trace Decode Component Name Prefixes
Set of standard prefixes to be used for component names
#define | OCSD_CMPNAME_PREFIX_SOURCE_READER "SRDR"
#define | OCSD_CMPNAME_PREFIX_FRAMEDEFORMATTER "DFMT"
#define | OCSD_CMPNAME_PREFIX_PKTPROC "PKTP"
#define | OCSD_CMPNAME_PREFIX_PKTDEC "PDEC"
Packet Processor Operation Control Flags
common operational flags - bottom 16 bits, component specific - top 16 bits.
#define | OCSD_OPFLG_PKTPROC_NOFWD_BAD_PKTS 0x00000001
#define | OCSD_OPFLG_PKTPROC_NOMON_BAD_PKTS 0x00000002
#define | OCSD_OPFLG_PKTPROC_ERR_BAD_PKTS 0x00000004
#define | OCSD_OPFLG_PKTPROC_UNSYNC_ON_BAD_PKTS 0x00000008
#define | OCSD_OPFLG_PKTPROC_COMMON
Packet Decoder Operation Control Flags
common operational flags - bottom 16 bits, component specific - top 16 bits.
#define | OCSD_OPFLG_PKTDEC_ERROR_BAD_PKTS 0x00000001
#define | OCSD_OPFLG_PKTDEC_COMMON (OCSD_OPFLG_PKTDEC_ERROR_BAD_PKTS)

## Trace Indexing and Channel IDs

#define | OCSD_TRC_IDX_STR PRIu32
#define | OCSD_BAD_TRC_INDEX ((ocsd_trc_index_t)-1)
#define | OCSD_BAD_CS_SRC_ID ((uint8_t)-1)
#define | OCSD_IS_VALID_CS_SRC_ID(id) ((id > 0) && (id < 0x70))
#define | OCSD_IS_RESERVED_CS_SRC_ID(id) ((id == 0) || ((id >= 0x70) && (id <= 0x7F))
typedef uint32_t | ocsd_trc_index_t

## General Library Return and Error Codes

#define | OCSD_INVALID_HANDLE (unsigned int)-1

enum

_ocsd_err_t {
OCSD_OK = 0, OCSD_ERR_FAIL, OCSD_ERR_MEM, OCSD_ERR_NOT_INIT,
OCSD_ERR_INVALID_ID, OCSD_ERR_BAD_HANDLE, OCSD_ERR_INVALID_PARAM_VAL, OCSD_ERR_INVALID_PARAM_TYPE,
OCSD_ERR_FILE_ERROR, OCSD_ERR_NO_PROTOCOL, OCSD_ERR_ATTACH_TOO_MANY, OCSD_ERR_ATTACH_INVALID_PARAM,
OCSD_ERR_ATTACH_COMP_NOT_FOUND, OCSD_ERR_RDR_FILE_NOT_FOUND, OCSD_ERR_RDR_INVALID_INIT, OCSD_ERR_RDR_NO_DECODER,
OCSD_ERR_DATA_DECODE_FATAL, OCSD_ERR_DFMTR_NOTCONTTRACE, OCSD_ERR_DFMTR_BAD_FHSYNC, OCSD_ERR_BAD_PACKET_SEQ,
OCSD_ERR_INVALID_PCKT_HDR, OCSD_ERR_PKT_INTERP_FAIL, OCSD_ERR_UNSUPPORTED_ISA, OCSD_ERR_HW_CFG_UNSUPP,
OCSD_ERR_UNSUPP_DECODE_PKT, OCSD_ERR_BAD_DECODE_PKT, OCSD_ERR_COMMIT_PKT_OVERRUN, OCSD_ERR_MEM_NACC,
OCSD_ERR_RET_STACK_OVERFLOW, OCSD_ERR_DCDT_NO_FORMATTER, OCSD_ERR_MEM_ACC_OVERLAP, OCSD_ERR_MEM_ACC_FILE_NOT_FOUND,
OCSD_ERR_MEM_ACC_FILE_DIFF_RANGE, OCSD_ERR_MEM_ACC_RANGE_INVALID, OCSD_ERR_MEM_ACC_BAD_LEN, OCSD_ERR_TEST_SNAPSHOT_PARSE,
OCSD_ERR_TEST_SNAPSHOT_PARSE_INFO, OCSD_ERR_TEST_SNAPSHOT_READ, OCSD_ERR_TEST_SS_TO_DECODER, OCSD_ERR_DCDREG_NAME_REPEAT,
OCSD_ERR_DCDREG_NAME_UNKNOWN, OCSD_ERR_DCDREG_TYPE_UNKNOWN, OCSD_ERR_DCDREG_TOOMANY, OCSD_ERR_DCD_INTERFACE_UNUSED,
OCSD_ERR_LAST
}

enum | _ocsd_err_severity_t { OCSD_ERR_SEV_NONE, OCSD_ERR_SEV_ERROR, OCSD_ERR_SEV_WARN, OCSD_ERR_SEV_INFO }
typedef enum _ocsd_err_t | ocsd_err_t
typedef unsigned int | ocsd_hndl_rdr_t
typedef unsigned int | ocsd_hndl_err_log_t
typedef enum _ocsd_err_severity_t | ocsd_err_severity_t

## Trace Datapath

#define | OCSD_DATA_RESP_IS_FATAL(x) (x >= OCSD_RESP_FATAL_NOT_INIT)
#define | OCSD_DATA_RESP_IS_WARN(x) ((x == OCSD_RESP_WARN_CONT) || (x == OCSD_RESP_WARN_WAIT))
#define | OCSD_DATA_RESP_IS_ERR(x) ((x == OCSD_RESP_ERR_CONT) || (x == OCSD_RESP_ERR_WAIT))
#define | OCSD_DATA_RESP_IS_WARN_OR_ERR(x) (OCSD_DATA_RESP_IS_ERR(x) || OCSD_DATA_RESP_IS_WARN(x))
#define | OCSD_DATA_RESP_IS_CONT(x) (x < OCSD_RESP_WAIT)
#define | OCSD_DATA_RESP_IS_WAIT(x) ((x >= OCSD_RESP_WAIT) && (x < OCSD_RESP_FATAL_NOT_INIT))
enum | _ocsd_datapath_op_t { OCSD_OP_DATA = 0, OCSD_OP_EOT, OCSD_OP_FLUSH, OCSD_OP_RESET }
enum | _ocsd_datapath_resp_t { OCSD_RESP_CONT, OCSD_RESP_WARN_CONT, OCSD_RESP_ERR_CONT, OCSD_RESP_WAIT, OCSD_RESP_WARN_WAIT, OCSD_RESP_ERR_WAIT, OCSD_RESP_FATAL_NOT_INIT, OCSD_RESP_FATAL_INVALID_OP, OCSD_RESP_FATAL_INVALID_PARAM, OCSD_RESP_FATAL_INVALID_DATA, OCSD_RESP_FATAL_SYS_ERR }
typedef enum _ocsd_datapath_op_t | ocsd_datapath_op_t
typedef enum _ocsd_datapath_resp_t | ocsd_datapath_resp_t

## Trace Decode component types

#define | OCSD_DFRMTR_HAS_FSYNCS 0x01
#define | OCSD_DFRMTR_HAS_HSYNCS 0x02
#define | OCSD_DFRMTR_FRAME_MEM_ALIGN 0x04
#define | OCSD_DFRMTR_PACKED_RAW_OUT 0x08
#define | OCSD_DFRMTR_UNPACKED_RAW_OUT 0x10
#define | OCSD_DFRMTR_RESET_ON_4X_FSYNC 0x20
#define | OCSD_DFRMTR_VALID_MASK 0x3F
#define | OCSD_DFRMTR_FRAME_SIZE 0x10
enum | _rcdtl_rawframe_elem_t { OCSD_FRM_NONE, OCSD_FRM_PACKED, OCSD_FRM_HSYNC, OCSD_FRM_FSYNC, OCSD_FRM_ID_DATA }
enum | _ocsd_dcd_tree_src_t { OCSD_TRC_SRC_FRAME_FORMATTED, OCSD_TRC_SRC_SINGLE }
typedef enum _rcdtl_rawframe_elem_t | ocsd_rawframe_elem_t
typedef enum _ocsd_dcd_tree_src_t | ocsd_dcd_tree_src_t

## Trace Decode Arch and Profile

#define | OCSD_IS_V8_ARCH(arch) ((arch >= ARCH_V8) && (arch <= ARCH_V8r3))
#define | OCSD_MIN_V8_ARCH(arch) (arch >= ARCH_V8)
#define | OCSD_MAX_VA_BITSIZE 64
#define | OCSD_VA_MASK ~0ULL
#define | OCSD_BIT_MASK(bits) (bits == OCSD_MAX_VA_BITSIZE) ? OCSD_VA_MASK : ((ocsd_vaddr_t)1 << bits) - 1
enum | _ocsd_arch_version { ARCH_UNKNOWN, ARCH_CUSTOM, ARCH_V7, ARCH_V8, ARCH_V8r3 }
enum | _ocsd_core_profile { profile_Unknown, profile_CortexM, profile_CortexR, profile_CortexA, profile_Custom }
typedef enum _ocsd_arch_version | ocsd_arch_version_t
typedef enum _ocsd_core_profile | ocsd_core_profile_t
typedef struct _ocsd_arch_profile_t | ocsd_arch_profile_t
typedef uint64_t | ocsd_vaddr_t

## Instruction Decode Information

enum | _ocsd_isa { ocsd_isa_arm, ocsd_isa_thumb2, ocsd_isa_aarch64, ocsd_isa_tee, ocsd_isa_jazelle, ocsd_isa_custom, ocsd_isa_unknown }
enum | _ocsd_sec_level { ocsd_sec_secure, ocsd_sec_nonsecure }
enum | _ocsd_ex_level { ocsd_EL_unknown = -1, ocsd_EL0 = 0, ocsd_EL1, ocsd_EL2, ocsd_EL3 }
enum | _ocsd_instr_type { OCSD_INSTR_OTHER, OCSD_INSTR_BR, OCSD_INSTR_BR_INDIRECT, OCSD_INSTR_ISB, OCSD_INSTR_DSB_DMB, OCSD_INSTR_WFI_WFE }
enum | _ocsd_instr_subtype { OCSD_S_INSTR_NONE, OCSD_S_INSTR_BR_LINK, OCSD_S_INSTR_V8_RET, OCSD_S_INSTR_V8_ERET, OCSD_S_INSTR_V7_IMPLIED_RET }
typedef enum _ocsd_isa | ocsd_isa
typedef enum _ocsd_sec_level | ocsd_sec_level
typedef enum _ocsd_ex_level | ocsd_ex_level
typedef enum _ocsd_instr_type | ocsd_instr_type
typedef enum _ocsd_instr_subtype | ocsd_instr_subtype
typedef struct _ocsd_instr_info | ocsd_instr_info
typedef struct _ocsd_pe_context | ocsd_pe_context

## Opcode Memory Access

Types used when accessing memory storage for traced opcodes..
enum | _ocsd_mem_space_acc_t { OCSD_MEM_SPACE_EL1S = 0x1, OCSD_MEM_SPACE_EL1N = 0x2, OCSD_MEM_SPACE_EL2 = 0x4, OCSD_MEM_SPACE_EL3 = 0x8, OCSD_MEM_SPACE_S = 0x9, OCSD_MEM_SPACE_N = 0x6, OCSD_MEM_SPACE_ANY = 0xF }
typedef enum _ocsd_mem_space_acc_t | ocsd_mem_space_acc_t
typedef uint32_t(* | Fn_MemAcc_CB) (const void *p_context, const ocsd_vaddr_t address, const ocsd_mem_space_acc_t mem_space, const uint32_t reqBytes, uint8_t *byteBuffer)
typedef uint32_t(* | Fn_MemAccID_CB) (const void *p_context, const ocsd_vaddr_t address, const ocsd_mem_space_acc_t mem_space, const uint8_t trcID, const uint32_t reqBytes, uint8_t *byteBuffer)
typedef struct _ocsd_file_mem_region | ocsd_file_mem_region_t

## Decoder creation information

Flags to use when creating decoders by name Builtin decoder names. Protocol type enum.
#define | OCSD_CREATE_FLG_PACKET_PROC 0x01
#define | OCSD_CREATE_FLG_FULL_DECODER 0x02
#define | OCSD_CREATE_FLG_INST_ID 0x04
#define | OCSD_BUILTIN_DCD_STM "STM"
#define | OCSD_BUILTIN_DCD_ETMV3 "ETMV3"
#define | OCSD_BUILTIN_DCD_ETMV4I "ETMV4I"
#define | OCSD_BUILTIN_DCD_ETMV4D "ETMV4D"
#define | OCSD_BUILTIN_DCD_PTM "PTM"
#define | OCSD_PROTOCOL_IS_BUILTIN(P) ((P > OCSD_PROTOCOL_UNKNOWN) && (P < OCSD_PROTOCOL_BUILTIN_END))
#define | OCSD_PROTOCOL_IS_CUSTOM(P) ((P >= OCSD_PROTOCOL_CUSTOM_0) && (P < OCSD_PROTOCOL_END ))

enum

_ocsd_trace_protocol_t {
OCSD_PROTOCOL_UNKNOWN = 0, OCSD_PROTOCOL_ETMV3, OCSD_PROTOCOL_ETMV4I, OCSD_PROTOCOL_ETMV4D,
OCSD_PROTOCOL_PTM, OCSD_PROTOCOL_STM, OCSD_PROTOCOL_BUILTIN_END, OCSD_PROTOCOL_CUSTOM_0 = 100,
OCSD_PROTOCOL_CUSTOM_1, OCSD_PROTOCOL_CUSTOM_2, OCSD_PROTOCOL_CUSTOM_3, OCSD_PROTOCOL_CUSTOM_4,
OCSD_PROTOCOL_CUSTOM_5, OCSD_PROTOCOL_CUSTOM_6, OCSD_PROTOCOL_CUSTOM_7, OCSD_PROTOCOL_CUSTOM_8,
OCSD_PROTOCOL_CUSTOM_9, OCSD_PROTOCOL_END
}

typedef enum _ocsd_trace_protocol_t | ocsd_trace_protocol_t

## Software Trace Packets Info

Contains the information for the generic software trace output packet.

Software trace packet master and channel data. Payload info:
size - packet payload size in bits; marker - if this packet has a marker/flag timestamp - if this packet has a timestamp associated number of packets - packet processor can optionally correlate identically sized packets on the same master / channel to be output as a single generic packet

Payload output as separate LE buffer, of sufficient bytes to hold all the packets.

#define | SWT_ID_VALID_MASK (0x1 << 23)
typedef struct _ocsd_swt_info | ocsd_swt_info_t

## Detailed Description

OpenCSD : Standard Types used in the library interfaces.

Copyright
  Copyright (c) 2015, ARM Limited. All Rights Reserved.

Definition in file ocsd_if_types.h.