Fix: mman behavior

This commit is contained in:
2025-04-15 14:20:52 +08:00
parent d3d316a994
commit f25758031a
12 changed files with 98 additions and 37 deletions

View File

@@ -24,6 +24,19 @@ uint64_t msb64(uint64_t x)
return res == 64 ? 0 : ((uint64_t)1 << (63 - res));
}
uint64_t lsb64(uint64_t x)
{
uint64_t res = 0x0;
asm volatile(
"rbit x0, %[val]" ENDL
"clz %[res], x0"
: [res] "=r" (res)
: [val] "r" (x)
: "x0"
);
return res == 64 ? 0 : ((uint64_t)1 << res);
}
uint32_t hton32(const uint32_t h)
{
const uint8_t *p = (const void *)&h;
@@ -106,7 +119,7 @@ uint32_t atoh32(const char *s)
exit(ERR_CONVERSION);
uint32_t ret = 0;
for (int i = 8; i--; ++s) {
for (int i = 8; i-- && *s != '\0'; ++s) {
if (!isxdigit(*s))
exit(ERR_CONVERSION);
ret <<= 4, ret |= (isdigit(*s) ? *s - '0' :