-
Notifications
You must be signed in to change notification settings - Fork 5.3k
[klibc] Align function signatures with standard libc to fix type conflicts #10890
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
|
|
Co-authored-by: BernardXiong <[email protected]>
📌 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 <[email protected]>
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 <[email protected]>
|
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 <[email protected]>
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.