Files
.github
.vscode
Architecture
Core
Execute
FileSystem
Files
GUI
Library
Network
Profiling
cyg.cpp
gcov.cpp
gprof.cpp
Recovery
SystemCalls
Tasking
Tests
include
.gitignore
DAPI.hpp
Doxyfile
Fex.hpp
KConfig.cpp
KThread.cpp
Kernel.cpp
LICENSE
Makefile
README.md
dump.sh
ipc.h
kernel.h
syscalls.h
Kernel/Profiling/gcov.cpp
2023-02-27 22:19:40 +02:00

72 lines
1.3 KiB
C++

#include <types.h>
#include <printf.h>
#include <uart.hpp>
#include "../kernel.h"
using namespace UniversalAsynchronousReceiverTransmitter;
#if BITS_PER_LONG >= 64
typedef long gcov_type;
#else
typedef long long gcov_type;
#endif
struct gcov_fn_info
{
unsigned int ident;
unsigned int checksum;
unsigned int n_ctrs[0];
};
struct gcov_ctr_info
{
unsigned int num;
gcov_type *values;
void (*merge)(gcov_type *, unsigned int);
};
struct gcov_info
{
unsigned int version;
struct gcov_info *next;
unsigned int stamp;
const char *filename;
unsigned int n_functions;
const struct gcov_fn_info *functions;
unsigned int ctr_mask;
struct gcov_ctr_info counts[0];
};
static inline SafeFunction NIF void gcov_uart_wrapper(char c, void *unused)
{
UART(COM2).Write(c);
UNUSED(unused);
}
// TODO: Implement
EXTERNC SafeFunction NIF void __gcov_init(gcov_info *p __unused)
{
}
EXTERNC SafeFunction NIF void __gcov_exit(void)
{
}
EXTERNC SafeFunction NIF void __gcov_flush(void)
{
}
EXTERNC SafeFunction NIF void __gcov_merge_add(gcov_type *counters, unsigned int n_counters)
{
UNUSED(counters);
UNUSED(n_counters);
}
EXTERNC SafeFunction NIF void __gcov_merge_single(gcov_type *counters, unsigned int n_counters)
{
UNUSED(counters);
UNUSED(n_counters);
}