mirror of
https://gitee.com/Lyon1998/pikapython.git
synced 2025-02-05 17:28:23 +08:00
77 lines
1.9 KiB
C
77 lines
1.9 KiB
C
#include "pika_config_gtest.h"
|
|
#include <stdio.h>
|
|
#include <stdlib.h>
|
|
#include "dataMemory.h"
|
|
#include "PikaVM.h"
|
|
|
|
char log_buff[LOG_BUFF_MAX][LOG_SIZE] = {0};
|
|
uint32_t log_index = 0;
|
|
|
|
/* save printf content to log_buff */
|
|
void pika_platform_printf(char* fmt, ...) {
|
|
for (int i = LOG_BUFF_MAX - 2; i >= 0; i--) {
|
|
memcpy(log_buff[i + 1], log_buff[i], LOG_SIZE);
|
|
}
|
|
va_list args;
|
|
va_start(args, fmt);
|
|
pika_platform_vsnprintf(log_buff[0], LOG_SIZE - 1, fmt, args);
|
|
va_end(args);
|
|
va_start(args, fmt);
|
|
pika_vprintf(fmt, args);
|
|
va_end(args);
|
|
}
|
|
|
|
// static volatile uint64_t tick_ms = 0;
|
|
// int64_t pika_platform_get_tick(void) {
|
|
// tick_ms += 50;
|
|
// return tick_ms;
|
|
// }
|
|
|
|
/* quick_malloc is always open */
|
|
uint8_t __is_quick_malloc(void) {
|
|
// return 1;
|
|
return 0;
|
|
}
|
|
|
|
void __gtest_hook_default(void) {
|
|
return;
|
|
}
|
|
typedef void (*hook_func)(void);
|
|
|
|
volatile int g_hook_cnt = 0;
|
|
volatile hook_func g_hook_func = __gtest_hook_default;
|
|
void __pks_hook_instruct(void) {
|
|
g_hook_cnt++;
|
|
g_hook_func();
|
|
}
|
|
|
|
volatile pika_bool g_always_repl_mode = pika_true;
|
|
PIKA_WEAK void pika_hook_unused_stack_arg(PikaVMFrame* vm, Arg* arg) {
|
|
if (vm->in_repl || g_always_repl_mode) {
|
|
arg_print(arg, pika_true, "\r\n");
|
|
}
|
|
}
|
|
|
|
#define GETCHAR_BUFFER_SIZE 1024
|
|
uint8_t getchar_buffer[GETCHAR_BUFFER_SIZE] = {0};
|
|
size_t getchar_buffer_index = 0;
|
|
|
|
int write_to_getchar_buffer(const char* str, size_t size) {
|
|
if (size > GETCHAR_BUFFER_SIZE - getchar_buffer_index) {
|
|
return -1;
|
|
}
|
|
memcpy(getchar_buffer + getchar_buffer_index, str, size);
|
|
getchar_buffer_index += size;
|
|
return 0;
|
|
}
|
|
|
|
char pika_platform_getchar(void) {
|
|
if (getchar_buffer_index > 0) {
|
|
char c = getchar_buffer[0];
|
|
memmove(getchar_buffer, getchar_buffer + 1, getchar_buffer_index - 1);
|
|
getchar_buffer_index--;
|
|
return c;
|
|
}
|
|
return getchar();
|
|
}
|