[klibc] Align function signatures with standard libc to fix type conflicts#10890
[klibc] Align function signatures with standard libc to fix type conflicts#10890
Conversation
|
|
Co-authored-by: BernardXiong <1241087+BernardXiong@users.noreply.github.com>
📌 Code Review Assignment🏷️ Tag: kernelReviewers: GorrayLi ReviewSun hamburger-os lianux-mm wdfk-prog xu18838022837 Changed Files (Click to expand)
📊 Current Review Status (Last Updated: 2025-11-05 23:42 CST)
📝 Review Instructions
|
|
针对rt_vsnprintf也一样进行处理; 以及包括 kstdio 中的 API。 |
Co-authored-by: BernardXiong <1241087+BernardXiong@users.noreply.github.com>
Updated kstdio functions to use standard types. Changes in commit 9652a0a: kstdio.h:
kstdio.c:
All kstdio APIs now match standard libc signatures while retaining |
|
@copilot 对于 int rt_vsnprintf(char *buf, rt_size_t size, const char *fmt, va_list args);
int rt_snprintf(char *buf, rt_size_t size, const char *format, ...);也完成对应实现的更改。 |
Co-authored-by: BernardXiong <1241087+BernardXiong@users.noreply.github.com>
|
Updated both files in commit c351ee5: rt_vsnprintf_std.c:
rt_vsnprintf_tiny.c:
All |
[cpp_check.py 80 INFO] src/klibc/rt_vsnprintf_std.c:225:2: error: #error "Non-binary-radix floating-point types are unsupported." [preprocessorErrorDirective]
#error "Non-binary-radix floating-point types are unsupported."
^针对以上ci时的cpp check,需要做对应的处理,尝试修复下。 |
Co-authored-by: BernardXiong <1241087+BernardXiong@users.noreply.github.com>
Fix klibc function signatures to match standard libc conventions
Problem Summary
The issue occurs when using mlibc on qemu/aarch64. The klibc functions have non-standard type signatures that conflict with standard libc headers, causing compilation errors when libfdt_env.h defines
#define strnlen rt_strnlen.Solution
Updated all klibc function signatures to use standard C types to ensure compatibility with standard libc.
Implementation Plan
Changes Made
include/klibc/kstring.h
All function signatures updated to use standard types:
void *rt_memset(void *s, int c, size_t n)void *rt_memcpy(void *dest, const void *src, size_t n)void *rt_memmove(void *dest, const void *src, size_t n)int rt_memcmp(const void *cs, const void *ct, size_t count)size_t rt_strnlen(const char *s, size_t maxlen)int rt_strcasecmp(const char *a, const char *b)int rt_strncmp(const char *cs, const char *ct, size_t count)int rt_strcmp(const char *cs, const char *ct)size_t rt_strlen(const char *src)char *rt_strncpy(char *dest, const char *src, size_t n)src/klibc/kstring.c
include/klibc/kstdio.h
All function signatures updated to use standard types:
int rt_vsnprintf(char *buf, size_t size, const char *fmt, va_list args)int rt_snprintf(char *buf, size_t size, const char *format, ...)src/klibc/kstdio.c
rt_size_t→size_trt_int32_t n→int n(rt_size_t) - 1→(size_t) - 1src/klibc/rt_vsnprintf_std.c
rt_vsnprintffunction signature:rt_size_t size→size_t sizesrc/klibc/rt_vsnprintf_tiny.c
rt_vsnprintffunction signature:rt_size_t size→size_t sizeva_argfor%zformat:va_arg(args, rt_size_t)→va_arg(args, size_t)Testing
Original prompt
💬 We'd love your input! Share your thoughts on Copilot coding agent in our 2 minute survey.