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
Function Documentation
| int __attribute | ( | (weak) | ) |
| static __attribute__ | ( | (noinline) | ) |
| int _isatty | ( | ) |
| int _write | ( | int | fd, |
| char * | pBuffer, | ||
| int | size | ||
| ) |
|
pure virtual |
|
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() |
| char Data[FAST_SEMIHOSTING_BUFFER_SIZE] |
| done = WriteToFastSemihostingChannel(channel, pPayload, payloadSize, 1) |
| else |
Initial value:
{
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 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 |
