Files
m241Neelima/vxworks-6.9/target/h/private/pxTraceStreamBufferLibP.h
2026-07-30 11:19:44 +05:30

106 lines
3.6 KiB
C

/* pxTraceStreamBufferLibP.h - private header for POSIX trace buffer */
/* Copyright 2005-2006, 2010, 2012 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
--------------------
01d,23jul12,wzc WIND00358305 - Remove building warnings.
01c,29apr10,pad Moved extern C statement after include statements.
01b,01aug06,tcr fix format
01a,15nov05,tcr created
*/
/*
DESCRIPTION
This file contains definitions for the in-memory buffer of the POSIX trace
facility in RTPs.
*/
#ifndef __INCpxTraceStreamBufferLibPh
#define __INCpxTraceStreamBufferLibPh
#include <base/b_pthread_t.h>
#include <base/b_trace_attr_t.h>
#include <base/b_trace_event_id_t.h>
#include <base/b_struct_posix_trace_event_info.h>
#ifdef __cplusplus
extern "C" {
#endif
/*
* overrunState tracks whether, and how much, of the overrun data has been
* handled.
*
* 0 - No overrun
* 1 - Overrun detected, no events transmitted
* 2 - Overrun over, OVERRUN event transmitted but not RESUME
*
*
* State Condition Action Next state
*
* 0 | Read | | 0
* 0 | Write - No event loss | | 0
* 0 | Write - Event lost | Drop event, and save time of lost event | 1
* | | in overrunStart |
* 1 | Event read | Send OVERRUN event | 2
* 1 | Write | | 2
* 2 | Read | Send RESUME event, with time of next | 0
* | | event in buffer |
* 2 | Write | | 1
*
*/
/* typedefs */
typedef struct trace_stream_buffer
{
struct trace_stream * pStream;
size_t readIndex;
size_t writeIndex;
size_t freeSpace;
char * dataBlockStart;
size_t dataBlockSizeRequested;
size_t dataBlockSizeActual;
SEM_ID ptrUpdateSem;
SEM_ID dataAvailableSem;
int overrunState;
struct timespec overrunStartTime;
pid_t overrunPid;
pthread_t overrunThreadId;
void * overrunProgAddress;
} TRACE_STREAM_BUFFER;
typedef unsigned char TRACE_EVENT_TRUNCATION_TYPE;
/* function declarations */
extern int pxTraceStreamBufferCreate (trace_attr_t * pAttr,
struct trace_stream * pStream);
extern void pxTraceStreamBufferDelete (TRACE_STREAM_BUFFER * pBuffer);
extern void pxTraceStreamBufferClear (TRACE_STREAM_BUFFER * pBuffer);
extern STATUS pxTraceStreamBufferWrite (TRACE_STREAM_BUFFER * pBuffer,
struct posix_trace_event_info * evtInfo,
char * src);
extern int pxTraceStreamBufferRead (TRACE_STREAM_BUFFER * pBuffer,
struct posix_trace_event_info * evtInfo,
char * dest, size_t dataSize,
size_t * pNumBytesRead,
int * pUnavailable, int timeout);
#ifdef __cplusplus
}
#endif
#endif /* __INCpxTraceStreamBufferLibPh */