support PIKA_PLATFORM_NO_WEAK macro

This commit is contained in:
Lyon 2023-07-20 13:04:19 +08:00
parent 06b6d9f049
commit 893c6ee058
3 changed files with 112 additions and 105 deletions

View File

@ -35,51 +35,6 @@
void pikaFree(void* mem, uint32_t size); void pikaFree(void* mem, uint32_t size);
void* pikaMalloc(uint32_t size); void* pikaMalloc(uint32_t size);
PIKA_WEAK void pika_platform_disable_irq_handle(void) {
/* disable irq to support thread */
}
PIKA_WEAK void pika_platform_enable_irq_handle(void) {
/* disable irq to support thread */
}
PIKA_WEAK void* pika_platform_malloc(size_t size) {
return malloc(size);
}
PIKA_WEAK void* pika_platform_realloc(void* ptr, size_t size) {
return realloc(ptr, size);
}
PIKA_WEAK void* pika_platform_calloc(size_t num, size_t size) {
return calloc(num, size);
}
PIKA_WEAK void pika_platform_free(void* ptr) {
free(ptr);
}
PIKA_WEAK void* pika_user_malloc(size_t size) {
return pika_platform_malloc(size);
}
PIKA_WEAK void pika_user_free(void* ptr, size_t size) {
pika_platform_free(ptr);
}
PIKA_WEAK void pika_platform_error_handle() {
return;
}
PIKA_WEAK void pika_platform_panic_handle() {
while (1) {
};
}
PIKA_WEAK uint8_t pika_is_locked_pikaMemory(void) {
return 0;
}
#if PIKA_FREERTOS_ENABLE #if PIKA_FREERTOS_ENABLE
static uint32_t platform_uptime_ms(void) { static uint32_t platform_uptime_ms(void) {
#if (configTICK_RATE_HZ == 1000) #if (configTICK_RATE_HZ == 1000)
@ -93,43 +48,6 @@ static uint32_t platform_uptime_ms(void) {
} }
#endif #endif
PIKA_WEAK int64_t pika_platform_get_tick(void) {
#if PIKA_FREERTOS_ENABLE
return platform_uptime_ms();
#elif defined(__linux)
struct timespec ts;
clock_gettime(CLOCK_REALTIME, &ts);
return (ts.tv_sec * 1000 + ts.tv_nsec / 1000000);
#else
return -1;
#endif
}
int pika_vsprintf(char* buff, char* fmt, va_list args) {
/* vsnprintf */
return pika_platform_vsnprintf(buff, PIKA_SPRINTF_BUFF_SIZE, fmt, args);
}
int pika_snprintf(char* buff, size_t size, const char* fmt, ...) {
va_list args;
va_start(args, fmt);
int ret = pika_platform_vsnprintf(buff, size, fmt, args);
va_end(args);
return ret;
}
PIKA_WEAK int pika_platform_fflush(void* stream) {
#if PIKA_UNBUFFERED_ENABLE
return fflush(stream);
#else
return 0;
#endif
}
PIKA_WEAK int pika_platform_putchar(char ch) {
return putchar(ch);
}
int pika_putchar(char ch) { int pika_putchar(char ch) {
int ret = pika_platform_putchar(ch); int ret = pika_platform_putchar(ch);
#if PIKA_UNBUFFERED_ENABLE #if PIKA_UNBUFFERED_ENABLE
@ -244,6 +162,108 @@ __exit:
return ret; return ret;
} }
int pika_sprintf(char* buff, char* fmt, ...) {
va_list args;
va_start(args, fmt);
int res = pika_platform_vsnprintf(buff, PIKA_SPRINTF_BUFF_SIZE, fmt, args);
va_end(args);
if (res >= PIKA_SPRINTF_BUFF_SIZE) {
pika_platform_printf(
"OverflowError: sprintf buff size overflow, please use bigger "
"PIKA_SPRINTF_BUFF_SIZE\r\n");
pika_platform_printf("Info: buff size request: %d\r\n", res);
pika_platform_printf("Info: buff size now: %d\r\n",
PIKA_SPRINTF_BUFF_SIZE);
while (1)
;
}
return res;
}
int pika_vsprintf(char* buff, char* fmt, va_list args) {
/* vsnprintf */
return pika_platform_vsnprintf(buff, PIKA_SPRINTF_BUFF_SIZE, fmt, args);
}
int pika_snprintf(char* buff, size_t size, const char* fmt, ...) {
va_list args;
va_start(args, fmt);
int ret = pika_platform_vsnprintf(buff, size, fmt, args);
va_end(args);
return ret;
}
#if !PIKA_PLATFORM_NO_WEAK
PIKA_WEAK void pika_platform_disable_irq_handle(void) {
/* disable irq to support thread */
}
PIKA_WEAK void pika_platform_enable_irq_handle(void) {
/* disable irq to support thread */
}
PIKA_WEAK void* pika_platform_malloc(size_t size) {
return malloc(size);
}
PIKA_WEAK void* pika_platform_realloc(void* ptr, size_t size) {
return realloc(ptr, size);
}
PIKA_WEAK void* pika_platform_calloc(size_t num, size_t size) {
return calloc(num, size);
}
PIKA_WEAK void pika_platform_free(void* ptr) {
free(ptr);
}
PIKA_WEAK void* pika_user_malloc(size_t size) {
return pika_platform_malloc(size);
}
PIKA_WEAK void pika_user_free(void* ptr, size_t size) {
pika_platform_free(ptr);
}
PIKA_WEAK void pika_platform_error_handle() {
return;
}
PIKA_WEAK void pika_platform_panic_handle() {
while (1) {
};
}
PIKA_WEAK uint8_t pika_is_locked_pikaMemory(void) {
return 0;
}
PIKA_WEAK int64_t pika_platform_get_tick(void) {
#if PIKA_FREERTOS_ENABLE
return platform_uptime_ms();
#elif defined(__linux)
struct timespec ts;
clock_gettime(CLOCK_REALTIME, &ts);
return (ts.tv_sec * 1000 + ts.tv_nsec / 1000000);
#else
return -1;
#endif
}
PIKA_WEAK int pika_platform_fflush(void* stream) {
#if PIKA_UNBUFFERED_ENABLE
return fflush(stream);
#else
return 0;
#endif
}
PIKA_WEAK int pika_platform_putchar(char ch) {
return putchar(ch);
}
#ifndef pika_platform_printf #ifndef pika_platform_printf
PIKA_WEAK void pika_platform_printf(char* fmt, ...) { PIKA_WEAK void pika_platform_printf(char* fmt, ...) {
va_list args; va_list args;
@ -272,24 +292,6 @@ PIKA_WEAK int pika_platform_vsnprintf(char* buff,
return vsnprintf(buff, size, fmt, args); return vsnprintf(buff, size, fmt, args);
} }
int pika_sprintf(char* buff, char* fmt, ...) {
va_list args;
va_start(args, fmt);
int res = pika_platform_vsnprintf(buff, PIKA_SPRINTF_BUFF_SIZE, fmt, args);
va_end(args);
if (res >= PIKA_SPRINTF_BUFF_SIZE) {
pika_platform_printf(
"OverflowError: sprintf buff size overflow, please use bigger "
"PIKA_SPRINTF_BUFF_SIZE\r\n");
pika_platform_printf("Info: buff size request: %d\r\n", res);
pika_platform_printf("Info: buff size now: %d\r\n",
PIKA_SPRINTF_BUFF_SIZE);
while (1)
;
}
return res;
}
PIKA_WEAK void pika_platform_wait(void) { PIKA_WEAK void pika_platform_wait(void) {
while (1) { while (1) {
}; };
@ -478,7 +480,7 @@ PIKA_WEAK pika_platform_thread_t* pika_platform_thread_init(
#endif #endif
} }
uint64_t pika_platform_thread_self(void) { PIKA_WEAK uint64_t pika_platform_thread_self(void) {
#ifdef __linux #ifdef __linux
return (uint64_t)pthread_self(); return (uint64_t)pthread_self();
#elif PIKA_FREERTOS_ENABLE #elif PIKA_FREERTOS_ENABLE
@ -715,3 +717,4 @@ PIKA_WEAK void pika_platform_clear(void) {
PIKA_WEAK void pika_platform_abort_handler(void) { PIKA_WEAK void pika_platform_abort_handler(void) {
return; return;
} }
#endif

View File

@ -1,5 +1,5 @@
#define PIKA_VERSION_MAJOR 1 #define PIKA_VERSION_MAJOR 1
#define PIKA_VERSION_MINOR 12 #define PIKA_VERSION_MINOR 12
#define PIKA_VERSION_MICRO 4 #define PIKA_VERSION_MICRO 4
#define PIKA_EDIT_TIME "2023/07/07 17:48:36" #define PIKA_EDIT_TIME "2023/07/20 13:04:16"

View File

@ -491,6 +491,10 @@ extern "C" {
#define PIKA_SHELL_NO_ECHO 0 #define PIKA_SHELL_NO_ECHO 0
#endif #endif
#ifndef PIKA_PLATFORM_NO_WEAK
#define PIKA_PLATFORM_NO_WEAK 0
#endif
/* configuration validation */ /* configuration validation */
#endif #endif