FastSemihosting.cpp File Reference
#include <string.h>
#include "DebuggerChecker.h"
#include "FastSemihosting.h"
#include "ProfilerCompatibility.h"
#include "SysprogsProfilerInterface.h"

Macros

#define AngelSWI   AngelSWI_ARM
 
#define FAST_SEMIHOSTING_BUFFER_SIZE   4096
 
#define FAST_SEMIHOSTING_BLOCKING_MODE   1
 
#define FAST_SEMIHOSTING_STDIO_DRIVER   1
 
#define FAST_SEMIHOSTING_PROFILER_DRIVER   1
 
#define FAST_SEMIHOSTING_HOLD_INTERRUPTS   0
 

Typedefs

typedef unsigned ChannelDescriptorType
 

Enumerations

enum  { kInitializeFastSemihosting, kControlFastSemihostingPolling }
 

Functions

int _isatty ()
 
int _write (int fd, char *pBuffer, int size)
 
void InitializeFastSemihosting ()
 Do not call directly. More...
 
int WriteToFastSemihostingChannel (unsigned char channel, const void *pBuffer, int size, int writeAll)
 Do not call directly. Enable the Redirect printf() to fast semihosting option instead and use regular printf(). More...
 
int __attribute ((weak)) SysprogsProfiler_WriteData(ProfilerDataChannel channel
 
 if (availableSpace< (headerSize+payloadSize)) result=0
 
else if (g_FastSemihostingCallActive) result=0
 
 if (done!=(int) headerSize) asm("bkpt 255")
 
int SysprogsProfiler_GetBufferAvailability (unsigned exp)
 
void __attribute__ ((noinline)) SuspendFastSemihostingPolling()
 
void RequestBlockingProcessingViaFastSemihosting ()
 

Variables

int g_FastSemihostingCallActive
 
int const void * pHeader
 
int const void unsigned headerSize
 
int const void unsigned const void * pPayload
 
int result = headerSize + payloadSize
 
unsigned availableSpace = GetFastSemihostingFreeBufferSize()
 
 else
 
 done = WriteToFastSemihostingChannel(channel, pPayload, payloadSize, 1)
 

Macro Definition Documentation

#define AngelSWI   AngelSWI_ARM
#define FAST_SEMIHOSTING_BLOCKING_MODE   1
#define FAST_SEMIHOSTING_BUFFER_SIZE   4096
#define FAST_SEMIHOSTING_HOLD_INTERRUPTS   0
#define FAST_SEMIHOSTING_PROFILER_DRIVER   1
#define FAST_SEMIHOSTING_STDIO_DRIVER   1

Typedef Documentation

typedef unsigned ChannelDescriptorType

Enumeration Type Documentation

anonymous enum
Enumerator
kInitializeFastSemihosting 
kControlFastSemihostingPolling 

Function Documentation

int __attribute ( (weak)  )
static __attribute__ ( (noinline)  )
int _isatty ( )
int _write ( int  fd,
char *  pBuffer,
int  size 
)
if ( )
pure virtual
else if ( g_FastSemihostingCallActive  )
pure virtual
if ( done!  = (int) headerSize)
void InitializeFastSemihosting ( )

Do not call directly.

Do not call this explicitly, unless you want VisualGDB to set global variables like s_FastSemihostingInitialized.

void RequestBlockingProcessingViaFastSemihosting ( )
int SysprogsProfiler_GetBufferAvailability ( unsigned  exp)
int WriteToFastSemihostingChannel ( unsigned char  channel,
const void *  pBuffer,
int  size,
int  writeAll 
)

Do not call directly. Enable the Redirect printf() to fast semihosting option instead and use regular printf().

Variable Documentation

unsigned availableSpace = GetFastSemihostingFreeBufferSize()
done = WriteToFastSemihostingChannel(channel, pPayload, payloadSize, 1)
else
Initial value:
{
done
Definition: FastSemihosting.cpp:294
int const void * pHeader
Definition: FastSemihosting.cpp:274
int WriteToFastSemihostingChannel(unsigned char channel, const void *pBuffer, int size, int writeAll)
Do not call directly. Enable the Redirect printf() to fast semihosting option instead and use regular...
Definition: FastSemihosting.cpp:187
int const void unsigned headerSize
Definition: FastSemihosting.cpp:274
int const void unsigned const void unsigned payloadSize int g_FastSemihostingCallActive
int const void unsigned headerSize
volatile unsigned LastKnownSwitchOffset
int const void* pHeader
int const void unsigned const void* pPayload
volatile unsigned ReadOffset
return result = headerSize + payloadSize
volatile unsigned WriteOffset