cleanup: change _zos to _mtk

This commit is contained in:
2026-08-28 09:15:06 +02:00
parent dac12c22cd
commit 0d23db8a0e
+115 -115
View File
@@ -30,14 +30,14 @@
Raw syscall wrappers (C versions matching kernel ABI) Raw syscall wrappers (C versions matching kernel ABI)
======================================================================== */ ======================================================================== */
static inline long _zos_syscall0(long nr) { static inline long _mtk_syscall0(long nr) {
long ret; long ret;
__asm__ volatile("syscall" : "=a"(ret) : "a"(nr) __asm__ volatile("syscall" : "=a"(ret) : "a"(nr)
: "rcx", "r11", "rdi", "rsi", "rdx", "r8", "r9", "r10", "memory"); : "rcx", "r11", "rdi", "rsi", "rdx", "r8", "r9", "r10", "memory");
return ret; return ret;
} }
static inline long _zos_syscall1(long nr, long a1) { static inline long _mtk_syscall1(long nr, long a1) {
long ret; long ret;
__asm__ volatile( __asm__ volatile(
"mov %[a1], %%rdi\n\t" "mov %[a1], %%rdi\n\t"
@@ -48,7 +48,7 @@ static inline long _zos_syscall1(long nr, long a1) {
return ret; return ret;
} }
static inline long _zos_syscall2(long nr, long a1, long a2) { static inline long _mtk_syscall2(long nr, long a1, long a2) {
long ret; long ret;
__asm__ volatile( __asm__ volatile(
"mov %[a1], %%rdi\n\t" "mov %[a1], %%rdi\n\t"
@@ -60,7 +60,7 @@ static inline long _zos_syscall2(long nr, long a1, long a2) {
return ret; return ret;
} }
static inline long _zos_syscall3(long nr, long a1, long a2, long a3) { static inline long _mtk_syscall3(long nr, long a1, long a2, long a3) {
long ret; long ret;
__asm__ volatile( __asm__ volatile(
"mov %[a1], %%rdi\n\t" "mov %[a1], %%rdi\n\t"
@@ -73,7 +73,7 @@ static inline long _zos_syscall3(long nr, long a1, long a2, long a3) {
return ret; return ret;
} }
static inline long _zos_syscall4(long nr, long a1, long a2, long a3, long a4) { static inline long _mtk_syscall4(long nr, long a1, long a2, long a3, long a4) {
long ret; long ret;
__asm__ volatile( __asm__ volatile(
"mov %[a1], %%rdi\n\t" "mov %[a1], %%rdi\n\t"
@@ -274,12 +274,12 @@ static void _tm_from_epoch(time_t epoch, struct tm *out) {
} }
static int _get_tz_offset_minutes(void) { static int _get_tz_offset_minutes(void) {
return (int)_zos_syscall0(SYS_GETTZ); return (int)_mtk_syscall0(SYS_GETTZ);
} }
static time_t _current_time_epoch(void) { static time_t _current_time_epoch(void) {
struct _mtk_datetime dt = {}; struct _mtk_datetime dt = {};
_zos_syscall1(SYS_GETTIME, (long)&dt); _mtk_syscall1(SYS_GETTIME, (long)&dt);
return _epoch_from_datetime((int)dt.year, (int)dt.month, (int)dt.day, return _epoch_from_datetime((int)dt.year, (int)dt.month, (int)dt.day,
(int)dt.hour, (int)dt.minute, (int)dt.second) (int)dt.hour, (int)dt.minute, (int)dt.second)
- (time_t)_get_tz_offset_minutes() * 60; - (time_t)_get_tz_offset_minutes() * 60;
@@ -320,7 +320,7 @@ static int _append_num(char *buf, size_t max, size_t *pos, int value, int width,
static int _path_is_directory(const char *path) { static int _path_is_directory(const char *path) {
const char *names[1]; const char *names[1];
return (int)_zos_syscall3(SYS_READDIR, (long)path, (long)names, 1L) >= 0; return (int)_mtk_syscall3(SYS_READDIR, (long)path, (long)names, 1L) >= 0;
} }
static int _path_local_prefix(const char *path, char *buf, size_t size) { static int _path_local_prefix(const char *path, char *buf, size_t size) {
@@ -384,13 +384,13 @@ static int _sync_environ_to_kernel(void) {
out += len; out += len;
} }
blob[out++] = '\0'; blob[out++] = '\0';
return _zos_syscall2(SYS_SETENVIRON, (long)blob, (long)out) < 0 ? -1 : 0; return _mtk_syscall2(SYS_SETENVIRON, (long)blob, (long)out) < 0 ? -1 : 0;
} }
static void _ensure_environ_initialized(void) { static void _ensure_environ_initialized(void) {
if (_environ_initialized) return; if (_environ_initialized) return;
static char blob[4096]; static char blob[4096];
int len = (int)_zos_syscall2(SYS_GETENVIRON, (long)blob, (long)sizeof(blob)); int len = (int)_mtk_syscall2(SYS_GETENVIRON, (long)blob, (long)sizeof(blob));
if (len > 0) if (len > 0)
__libc_init_environ(blob, (size_t)len); __libc_init_environ(blob, (size_t)len);
else else
@@ -706,7 +706,7 @@ static volatile uint32_t g_heapLock = 0;
static void heap_lock(void) { static void heap_lock(void) {
while (__atomic_exchange_n(&g_heapLock, 1, __ATOMIC_ACQUIRE) != 0) while (__atomic_exchange_n(&g_heapLock, 1, __ATOMIC_ACQUIRE) != 0)
_zos_syscall0(SYS_YIELD); _mtk_syscall0(SYS_YIELD);
} }
static void heap_unlock(void) { static void heap_unlock(void) {
@@ -805,11 +805,11 @@ static void heap_grow(uint64_t bytes) {
uint64_t slab = (want > g_heap_slab) ? want : g_heap_slab; uint64_t slab = (want > g_heap_slab) ? want : g_heap_slab;
if (g_heap_slab < 4 * 1024 * 1024) g_heap_slab *= 2; if (g_heap_slab < 4 * 1024 * 1024) g_heap_slab *= 2;
void *mem = (void *)_zos_syscall1(SYS_ALLOC, (long)slab); void *mem = (void *)_mtk_syscall1(SYS_ALLOC, (long)slab);
if (mem == NULL && slab > want) { if (mem == NULL && slab > want) {
/* Big slab refused (low memory): retry with the exact need. */ /* Big slab refused (low memory): retry with the exact need. */
slab = want; slab = want;
mem = (void *)_zos_syscall1(SYS_ALLOC, (long)slab); mem = (void *)_mtk_syscall1(SYS_ALLOC, (long)slab);
} }
if (mem != NULL) if (mem != NULL)
heap_insert_overflow(mem, slab); heap_insert_overflow(mem, slab);
@@ -856,7 +856,7 @@ static void *heap_malloc_locked(size_t size) {
if (needed > UINT64_MAX - 0xFFFULL) return NULL; if (needed > UINT64_MAX - 0xFFFULL) return NULL;
uint64_t mapping_size = (needed + 0xFFFULL) & ~0xFFFULL; uint64_t mapping_size = (needed + 0xFFFULL) & ~0xFFFULL;
struct HeapHeader *hdr = (struct HeapHeader *) struct HeapHeader *hdr = (struct HeapHeader *)
_zos_syscall1(SYS_ALLOC, (long)mapping_size); _mtk_syscall1(SYS_ALLOC, (long)mapping_size);
if (hdr == NULL) return NULL; if (hdr == NULL) return NULL;
hdr->magic = DIRECT_MAGIC; hdr->magic = DIRECT_MAGIC;
hdr->requested_size = size; hdr->requested_size = size;
@@ -926,7 +926,7 @@ static void heap_free_locked(void *ptr) {
hdr->magic = FREED_MAGIC; hdr->magic = FREED_MAGIC;
if (direct) { if (direct) {
_zos_syscall1(SYS_FREE, (long)hdr); _mtk_syscall1(SYS_FREE, (long)hdr);
return; return;
} }
@@ -1226,13 +1226,13 @@ int atexit(void (*func)(void)) {
void exit(int status) { void exit(int status) {
for (int i = _atexit_count - 1; i >= 0; i--) for (int i = _atexit_count - 1; i >= 0; i--)
_atexit_funcs[i](); _atexit_funcs[i]();
_zos_syscall1(SYS_EXIT, (long)status); _mtk_syscall1(SYS_EXIT, (long)status);
__builtin_unreachable(); __builtin_unreachable();
} }
void abort(void) { void abort(void) {
_zos_syscall1(SYS_PRINT, (long)"abort() called\n"); _mtk_syscall1(SYS_PRINT, (long)"abort() called\n");
_zos_syscall1(SYS_EXIT, 1); _mtk_syscall1(SYS_EXIT, 1);
__builtin_unreachable(); __builtin_unreachable();
} }
@@ -1252,9 +1252,9 @@ static void _system_build_drive_path(int drive, const char *leaf, char *out, siz
} }
static int _system_try_spawn(const char *path, const char *args) { static int _system_try_spawn(const char *path, const char *args) {
int pid = (int)_zos_syscall2(SYS_SPAWN, (long)path, (long)args); int pid = (int)_mtk_syscall2(SYS_SPAWN, (long)path, (long)args);
if (pid < 0) return -1; if (pid < 0) return -1;
_zos_syscall1(SYS_WAITPID, (long)pid); _mtk_syscall1(SYS_WAITPID, (long)pid);
return 0; return 0;
} }
@@ -1611,18 +1611,18 @@ int printf(const char *fmt, ...) {
va_start(ap, fmt); va_start(ap, fmt);
int ret = vsnprintf(_printbuf, sizeof(_printbuf), fmt, ap); int ret = vsnprintf(_printbuf, sizeof(_printbuf), fmt, ap);
va_end(ap); va_end(ap);
_zos_syscall1(SYS_PRINT, (long)_printbuf); _mtk_syscall1(SYS_PRINT, (long)_printbuf);
return ret; return ret;
} }
int puts(const char *s) { int puts(const char *s) {
_zos_syscall1(SYS_PRINT, (long)s); _mtk_syscall1(SYS_PRINT, (long)s);
_zos_syscall1(SYS_PUTCHAR, (long)'\n'); _mtk_syscall1(SYS_PUTCHAR, (long)'\n');
return 0; return 0;
} }
int putchar(int c) { int putchar(int c) {
_zos_syscall1(SYS_PUTCHAR, (long)c); _mtk_syscall1(SYS_PUTCHAR, (long)c);
return c; return c;
} }
@@ -1631,11 +1631,11 @@ int putchar(int c) {
======================================================================== */ ======================================================================== */
void __assert_fail(const char *expr, const char *file, int line, const char *func) { void __assert_fail(const char *expr, const char *file, int line, const char *func) {
_zos_syscall1(SYS_PRINT, (long)"Assertion failed: "); _mtk_syscall1(SYS_PRINT, (long)"Assertion failed: ");
_zos_syscall1(SYS_PRINT, (long)expr); _mtk_syscall1(SYS_PRINT, (long)expr);
_zos_syscall1(SYS_PRINT, (long)" at "); _mtk_syscall1(SYS_PRINT, (long)" at ");
_zos_syscall1(SYS_PRINT, (long)file); _mtk_syscall1(SYS_PRINT, (long)file);
_zos_syscall1(SYS_PRINT, (long)"\n"); _mtk_syscall1(SYS_PRINT, (long)"\n");
(void)line; (void)func; (void)line; (void)func;
abort(); abort();
} }
@@ -1676,12 +1676,12 @@ static int _stdin_line_ready = 0;
static void _stdin_echo_char(char c) { static void _stdin_echo_char(char c) {
if (c == '\b') { if (c == '\b') {
_zos_syscall1(SYS_PUTCHAR, '\b'); _mtk_syscall1(SYS_PUTCHAR, '\b');
_zos_syscall1(SYS_PUTCHAR, ' '); _mtk_syscall1(SYS_PUTCHAR, ' ');
_zos_syscall1(SYS_PUTCHAR, '\b'); _mtk_syscall1(SYS_PUTCHAR, '\b');
return; return;
} }
_zos_syscall1(SYS_PUTCHAR, (unsigned char)c); _mtk_syscall1(SYS_PUTCHAR, (unsigned char)c);
} }
/* Gather keystrokes into _stdin_linebuf. Returns 1 when a complete line is /* Gather keystrokes into _stdin_linebuf. Returns 1 when a complete line is
@@ -1697,8 +1697,8 @@ static int _stdin_pump(int block) {
} }
for (;;) { for (;;) {
int c = block ? (int)_zos_syscall0(SYS_GETCHAR) int c = block ? (int)_mtk_syscall0(SYS_GETCHAR)
: (int)_zos_syscall0(SYS_GETCHAR_NB); : (int)_mtk_syscall0(SYS_GETCHAR_NB);
if (c <= 0) { if (c <= 0) {
if (block) continue; if (block) continue;
return 0; return 0;
@@ -1763,17 +1763,17 @@ FILE *fopen(const char *path, const char *mode) {
want_write = 1; want_write = 1;
if (mode[1] == '+') want_read = 1; if (mode[1] == '+') want_read = 1;
/* Truncate: delete then create */ /* Truncate: delete then create */
_zos_syscall1(SYS_FDELETE, (long)path); _mtk_syscall1(SYS_FDELETE, (long)path);
handle = (int)_zos_syscall1(SYS_FCREATE, (long)path); handle = (int)_mtk_syscall1(SYS_FCREATE, (long)path);
if (handle < 0) return NULL; if (handle < 0) return NULL;
} else if (mode[0] == 'a') { } else if (mode[0] == 'a') {
want_write = 1; want_write = 1;
want_append = 1; want_append = 1;
if (mode[1] == '+') want_read = 1; if (mode[1] == '+') want_read = 1;
/* Try open existing, create if not found */ /* Try open existing, create if not found */
handle = (int)_zos_syscall1(SYS_OPEN, (long)path); handle = (int)_mtk_syscall1(SYS_OPEN, (long)path);
if (handle < 0) { if (handle < 0) {
handle = (int)_zos_syscall1(SYS_FCREATE, (long)path); handle = (int)_mtk_syscall1(SYS_FCREATE, (long)path);
if (handle < 0) return NULL; if (handle < 0) return NULL;
} }
} else { } else {
@@ -1782,15 +1782,15 @@ FILE *fopen(const char *path, const char *mode) {
/* For read and read+ modes, just open existing */ /* For read and read+ modes, just open existing */
if (mode[0] == 'r') { if (mode[0] == 'r') {
handle = (int)_zos_syscall1(SYS_OPEN, (long)path); handle = (int)_mtk_syscall1(SYS_OPEN, (long)path);
if (handle < 0) return NULL; if (handle < 0) return NULL;
} }
unsigned long fileSize = (unsigned long)_zos_syscall1(SYS_GETSIZE, (long)handle); unsigned long fileSize = (unsigned long)_mtk_syscall1(SYS_GETSIZE, (long)handle);
FILE *f = (FILE *)malloc(sizeof(FILE)); FILE *f = (FILE *)malloc(sizeof(FILE));
if (f == NULL) { if (f == NULL) {
_zos_syscall1(SYS_CLOSE, (long)handle); _mtk_syscall1(SYS_CLOSE, (long)handle);
return NULL; return NULL;
} }
@@ -1812,7 +1812,7 @@ int fclose(FILE *stream) {
if (stream == NULL) return EOF; if (stream == NULL) return EOF;
if (stream->is_std) return 0; if (stream->is_std) return 0;
_zos_syscall1(SYS_CLOSE, (long)stream->handle); _mtk_syscall1(SYS_CLOSE, (long)stream->handle);
free(stream); free(stream);
return 0; return 0;
} }
@@ -1843,7 +1843,7 @@ size_t fread(void *ptr, size_t size, size_t nmemb, FILE *stream) {
} }
if (total == 0) return 0; if (total == 0) return 0;
int ret = (int)_zos_syscall4(SYS_READ, (long)stream->handle, int ret = (int)_mtk_syscall4(SYS_READ, (long)stream->handle,
(long)ptr, (long)stream->pos, (long)total); (long)ptr, (long)stream->pos, (long)total);
if (ret < 0) { if (ret < 0) {
stream->error = 1; stream->error = 1;
@@ -1862,12 +1862,12 @@ size_t fwrite(const void *ptr, size_t size, size_t nmemb, FILE *stream) {
size_t total = size * nmemb; size_t total = size * nmemb;
const char *src = (const char *)ptr; const char *src = (const char *)ptr;
for (size_t i = 0; i < total; i++) for (size_t i = 0; i < total; i++)
_zos_syscall1(SYS_PUTCHAR, (long)(unsigned char)src[i]); _mtk_syscall1(SYS_PUTCHAR, (long)(unsigned char)src[i]);
return nmemb; return nmemb;
} }
size_t total = size * nmemb; size_t total = size * nmemb;
int ret = (int)_zos_syscall4(SYS_FWRITE, (long)stream->handle, int ret = (int)_mtk_syscall4(SYS_FWRITE, (long)stream->handle,
(long)ptr, (long)stream->pos, (long)total); (long)ptr, (long)stream->pos, (long)total);
if (ret < 0) { if (ret < 0) {
stream->error = 1; stream->error = 1;
@@ -1916,7 +1916,7 @@ FILE *freopen(const char *path, const char *mode, FILE *stream) {
if (fresh == NULL) return NULL; if (fresh == NULL) return NULL;
if (!stream->is_std) { if (!stream->is_std) {
_zos_syscall1(SYS_CLOSE, (long)stream->handle); _mtk_syscall1(SYS_CLOSE, (long)stream->handle);
} }
*stream = *fresh; *stream = *fresh;
@@ -1974,7 +1974,7 @@ int fgetc(FILE *stream) {
} }
unsigned char c; unsigned char c;
int ret = (int)_zos_syscall4(SYS_READ, (long)stream->handle, int ret = (int)_mtk_syscall4(SYS_READ, (long)stream->handle,
(long)&c, (long)stream->pos, 1L); (long)&c, (long)stream->pos, 1L);
if (ret <= 0) { if (ret <= 0) {
stream->eof = 1; stream->eof = 1;
@@ -2035,7 +2035,7 @@ int fprintf(FILE *stream, const char *fmt, ...) {
va_end(ap); va_end(ap);
if (stream == NULL || stream->is_std) { if (stream == NULL || stream->is_std) {
_zos_syscall1(SYS_PRINT, (long)buf); _mtk_syscall1(SYS_PRINT, (long)buf);
} else { } else {
fwrite(buf, 1, (size_t)(n > 0 ? n : 0), stream); fwrite(buf, 1, (size_t)(n > 0 ? n : 0), stream);
} }
@@ -2047,7 +2047,7 @@ int vfprintf(FILE *stream, const char *fmt, va_list ap) {
int n = vsnprintf(buf, sizeof(buf), fmt, ap); int n = vsnprintf(buf, sizeof(buf), fmt, ap);
if (stream == NULL || stream->is_std) { if (stream == NULL || stream->is_std) {
_zos_syscall1(SYS_PRINT, (long)buf); _mtk_syscall1(SYS_PRINT, (long)buf);
} else { } else {
fwrite(buf, 1, (size_t)(n > 0 ? n : 0), stream); fwrite(buf, 1, (size_t)(n > 0 ? n : 0), stream);
} }
@@ -2064,20 +2064,20 @@ int vsprintf(char *str, const char *fmt, va_list ap) {
int remove(const char *path) { int remove(const char *path) {
if (path == NULL) return -1; if (path == NULL) return -1;
return (int)_zos_syscall1(SYS_FDELETE, (long)path); return (int)_mtk_syscall1(SYS_FDELETE, (long)path);
} }
int rename(const char *oldpath, const char *newpath) { int rename(const char *oldpath, const char *newpath) {
if (oldpath == NULL || newpath == NULL) return -1; if (oldpath == NULL || newpath == NULL) return -1;
return (int)_zos_syscall2(SYS_FRENAME, (long)oldpath, (long)newpath); return (int)_mtk_syscall2(SYS_FRENAME, (long)oldpath, (long)newpath);
} }
void perror(const char *s) { void perror(const char *s) {
if (s != NULL && s[0] != '\0') { if (s != NULL && s[0] != '\0') {
_zos_syscall1(SYS_PRINT, (long)s); _mtk_syscall1(SYS_PRINT, (long)s);
_zos_syscall1(SYS_PRINT, (long)": "); _mtk_syscall1(SYS_PRINT, (long)": ");
} }
_zos_syscall1(SYS_PRINT, (long)"error\n"); _mtk_syscall1(SYS_PRINT, (long)"error\n");
} }
FILE *tmpfile(void) { FILE *tmpfile(void) {
@@ -2091,9 +2091,9 @@ char *tmpnam(char *s) {
static unsigned long counter = 0; static unsigned long counter = 0;
char *out = (s != NULL) ? s : internal; char *out = (s != NULL) ? s : internal;
_zos_syscall1(SYS_FMKDIR, (long)"0:/tmp"); _mtk_syscall1(SYS_FMKDIR, (long)"0:/tmp");
snprintf(out, L_tmpnam, "0:/tmp/tmp%lu.tmp", snprintf(out, L_tmpnam, "0:/tmp/tmp%lu.tmp",
(unsigned long)_zos_syscall0(SYS_GETMILLISECONDS) + counter++); (unsigned long)_mtk_syscall0(SYS_GETMILLISECONDS) + counter++);
return out; return out;
} }
@@ -2213,9 +2213,9 @@ int access(const char *path, int mode) {
(void)mode; (void)mode;
int h = (int)_zos_syscall1(SYS_OPEN, (long)path); int h = (int)_mtk_syscall1(SYS_OPEN, (long)path);
if (h >= 0) { if (h >= 0) {
_zos_syscall1(SYS_CLOSE, (long)h); _mtk_syscall1(SYS_CLOSE, (long)h);
return 0; return 0;
} }
@@ -2233,33 +2233,33 @@ int open(const char *path, int flags, ...) {
return -1; return -1;
} }
int h = (int)_zos_syscall1(SYS_OPEN, (long)path); int h = (int)_mtk_syscall1(SYS_OPEN, (long)path);
int wants_create = (flags & O_CREAT) != 0; int wants_create = (flags & O_CREAT) != 0;
int wants_trunc = (flags & O_TRUNC) != 0; int wants_trunc = (flags & O_TRUNC) != 0;
if (h < 0) { if (h < 0) {
if (wants_create) { if (wants_create) {
h = (int)_zos_syscall1(SYS_FCREATE, (long)path); h = (int)_mtk_syscall1(SYS_FCREATE, (long)path);
} }
} else if (wants_create && (flags & O_EXCL)) { } else if (wants_create && (flags & O_EXCL)) {
_zos_syscall1(SYS_CLOSE, (long)h); _mtk_syscall1(SYS_CLOSE, (long)h);
errno = EEXIST; errno = EEXIST;
return -1; return -1;
} else if (wants_trunc) { } else if (wants_trunc) {
_zos_syscall1(SYS_CLOSE, (long)h); _mtk_syscall1(SYS_CLOSE, (long)h);
_zos_syscall1(SYS_FDELETE, (long)path); _mtk_syscall1(SYS_FDELETE, (long)path);
h = (int)_zos_syscall1(SYS_FCREATE, (long)path); h = (int)_mtk_syscall1(SYS_FCREATE, (long)path);
} }
if (h >= _FD_POS_MAX) { if (h >= _FD_POS_MAX) {
_zos_syscall1(SYS_CLOSE, (long)h); _mtk_syscall1(SYS_CLOSE, (long)h);
errno = EMFILE; errno = EMFILE;
return -1; return -1;
} }
if (h >= 0) { if (h >= 0) {
_fd_pos[h] = 0; _fd_pos[h] = 0;
if (flags & O_APPEND) { if (flags & O_APPEND) {
_fd_pos[h] = (unsigned long)_zos_syscall1(SYS_GETSIZE, (long)h); _fd_pos[h] = (unsigned long)_mtk_syscall1(SYS_GETSIZE, (long)h);
} }
} }
if (h < 0) { if (h < 0) {
@@ -2303,7 +2303,7 @@ int read(int fd, void *buf, size_t count) {
} }
unsigned long pos = _fd_pos[fd]; unsigned long pos = _fd_pos[fd];
int ret = (int)_zos_syscall4(SYS_READ, (long)fd, (long)buf, (long)pos, (long)count); int ret = (int)_mtk_syscall4(SYS_READ, (long)fd, (long)buf, (long)pos, (long)count);
if (ret > 0) if (ret > 0)
_fd_pos[fd] += (unsigned long)ret; _fd_pos[fd] += (unsigned long)ret;
return ret; return ret;
@@ -2315,7 +2315,7 @@ int write(int fd, const void *buf, size_t count) {
if (fd == STDOUT_FILENO || fd == STDERR_FILENO) { if (fd == STDOUT_FILENO || fd == STDERR_FILENO) {
const char *src = (const char *)buf; const char *src = (const char *)buf;
for (size_t i = 0; i < count; i++) for (size_t i = 0; i < count; i++)
_zos_syscall1(SYS_PUTCHAR, (long)(unsigned char)src[i]); _mtk_syscall1(SYS_PUTCHAR, (long)(unsigned char)src[i]);
return (int)count; return (int)count;
} }
@@ -2325,7 +2325,7 @@ int write(int fd, const void *buf, size_t count) {
} }
unsigned long pos = _fd_pos[fd]; unsigned long pos = _fd_pos[fd];
int ret = (int)_zos_syscall4(SYS_FWRITE, (long)fd, (long)buf, (long)pos, (long)count); int ret = (int)_mtk_syscall4(SYS_FWRITE, (long)fd, (long)buf, (long)pos, (long)count);
if (ret > 0) if (ret > 0)
_fd_pos[fd] += (unsigned long)ret; _fd_pos[fd] += (unsigned long)ret;
return ret; return ret;
@@ -2348,7 +2348,7 @@ int ftruncate(int fd, long length) {
return -1; return -1;
} }
size = (unsigned long)_zos_syscall1(SYS_GETSIZE, (long)fd); size = (unsigned long)_mtk_syscall1(SYS_GETSIZE, (long)fd);
if ((unsigned long)length == size) if ((unsigned long)length == size)
return 0; return 0;
@@ -2362,7 +2362,7 @@ int ftruncate(int fd, long length) {
unsigned long chunk = (unsigned long)length - size; unsigned long chunk = (unsigned long)length - size;
int written; int written;
if (chunk > sizeof(zeros)) chunk = sizeof(zeros); if (chunk > sizeof(zeros)) chunk = sizeof(zeros);
written = (int)_zos_syscall4(SYS_FWRITE, (long)fd, (long)zeros, written = (int)_mtk_syscall4(SYS_FWRITE, (long)fd, (long)zeros,
(long)size, (long)chunk); (long)size, (long)chunk);
if (written <= 0) { if (written <= 0) {
errno = EIO; errno = EIO;
@@ -2389,7 +2389,7 @@ ssize_t pread(int fd, void *buf, size_t count, off_t offset) {
errno = EINVAL; errno = EINVAL;
return -1; return -1;
} }
return (ssize_t)_zos_syscall4(SYS_READ, (long)fd, (long)buf, return (ssize_t)_mtk_syscall4(SYS_READ, (long)fd, (long)buf,
(long)offset, (long)count); (long)offset, (long)count);
} }
@@ -2402,7 +2402,7 @@ ssize_t pwrite(int fd, const void *buf, size_t count, off_t offset) {
errno = EINVAL; errno = EINVAL;
return -1; return -1;
} }
return (ssize_t)_zos_syscall4(SYS_FWRITE, (long)fd, (long)buf, return (ssize_t)_mtk_syscall4(SYS_FWRITE, (long)fd, (long)buf,
(long)offset, (long)count); (long)offset, (long)count);
} }
@@ -2412,7 +2412,7 @@ int close(int fd) {
return -1; return -1;
} }
_fd_pos[fd] = 0; _fd_pos[fd] = 0;
if ((int)_zos_syscall1(SYS_CLOSE, (long)fd) < 0) { if ((int)_mtk_syscall1(SYS_CLOSE, (long)fd) < 0) {
errno = EBADF; errno = EBADF;
return -1; return -1;
} }
@@ -2435,7 +2435,7 @@ long lseek(int fd, long offset, int whence) {
newpos = pos + (unsigned long)offset; newpos = pos + (unsigned long)offset;
break; break;
case 2: /* SEEK_END */ case 2: /* SEEK_END */
newpos = (unsigned long)_zos_syscall1(SYS_GETSIZE, (long)fd) + (unsigned long)offset; newpos = (unsigned long)_mtk_syscall1(SYS_GETSIZE, (long)fd) + (unsigned long)offset;
break; break;
default: default:
errno = EINVAL; errno = EINVAL;
@@ -2450,7 +2450,7 @@ int chdir(const char *path) {
errno = EINVAL; errno = EINVAL;
return -1; return -1;
} }
if ((int)_zos_syscall1(SYS_CHDIR, (long)path) < 0) { if ((int)_mtk_syscall1(SYS_CHDIR, (long)path) < 0) {
errno = ENOENT; errno = ENOENT;
return -1; return -1;
} }
@@ -2462,7 +2462,7 @@ char *getcwd(char *buf, size_t size) {
errno = EINVAL; errno = EINVAL;
return NULL; return NULL;
} }
int result = (int)_zos_syscall2(SYS_GETCWD, (long)buf, (long)size); int result = (int)_mtk_syscall2(SYS_GETCWD, (long)buf, (long)size);
if (result < 0) { if (result < 0) {
errno = result == -2 ? ERANGE : EIO; errno = result == -2 ? ERANGE : EIO;
return NULL; return NULL;
@@ -2473,7 +2473,7 @@ char *getcwd(char *buf, size_t size) {
int isatty(int fd) { int isatty(int fd) {
if (fd < STDIN_FILENO || fd > STDERR_FILENO) if (fd < STDIN_FILENO || fd > STDERR_FILENO)
return 0; return 0;
return _zos_syscall0(SYS_TERMINAL_ATTACHED) != 0; return _mtk_syscall0(SYS_TERMINAL_ATTACHED) != 0;
} }
/* ======================================================================== /* ========================================================================
@@ -2483,7 +2483,7 @@ int isatty(int fd) {
int mkdir(const char *path, unsigned int mode) { int mkdir(const char *path, unsigned int mode) {
(void)mode; (void)mode;
if (path == NULL) return -1; if (path == NULL) return -1;
return (int)_zos_syscall1(SYS_FMKDIR, (long)path); return (int)_mtk_syscall1(SYS_FMKDIR, (long)path);
} }
/* The VFS exposes no inode numbers, so derive a stable id from the path and /* The VFS exposes no inode numbers, so derive a stable id from the path and
@@ -2512,7 +2512,7 @@ int stat(const char *path, struct stat *buf) {
/* Preferred path: real metadata from the filesystem driver. */ /* Preferred path: real metadata from the filesystem driver. */
struct _mtk_filestat st; struct _mtk_filestat st;
if (_zos_syscall2(SYS_STAT, (long)path, (long)&st) == 0) { if (_mtk_syscall2(SYS_STAT, (long)path, (long)&st) == 0) {
buf->st_mode = (mode_t)st.mode; buf->st_mode = (mode_t)st.mode;
/* A driver that reports no type bits still tells us whether the /* A driver that reports no type bits still tells us whether the
entry is a directory; without this S_ISREG/S_ISDIR both fail. */ entry is a directory; without this S_ISREG/S_ISDIR both fail. */
@@ -2530,11 +2530,11 @@ int stat(const char *path, struct stat *buf) {
/* Fallback for a filesystem whose driver has no Stat entry point: probe /* Fallback for a filesystem whose driver has no Stat entry point: probe
with open/readdir as before. Size is recoverable this way, timestamps with open/readdir as before. Size is recoverable this way, timestamps
and permissions are not. */ and permissions are not. */
int h = (int)_zos_syscall1(SYS_OPEN, (long)path); int h = (int)_mtk_syscall1(SYS_OPEN, (long)path);
if (h >= 0) { if (h >= 0) {
buf->st_mode = S_IFREG; buf->st_mode = S_IFREG;
buf->st_size = (off_t)_zos_syscall1(SYS_GETSIZE, (long)h); buf->st_size = (off_t)_mtk_syscall1(SYS_GETSIZE, (long)h);
_zos_syscall1(SYS_CLOSE, (long)h); _mtk_syscall1(SYS_CLOSE, (long)h);
buf->st_blocks = (blkcnt_t)((buf->st_size + 511) / 512); buf->st_blocks = (blkcnt_t)((buf->st_size + 511) / 512);
return 0; return 0;
} }
@@ -2559,7 +2559,7 @@ int fstat(int fd, struct stat *buf) {
cannot report real timestamps or permissions the way stat() does. cannot report real timestamps or permissions the way stat() does.
Callers needing those must stat the path instead. */ Callers needing those must stat the path instead. */
buf->st_mode = S_IFREG; buf->st_mode = S_IFREG;
buf->st_size = (off_t)_zos_syscall1(SYS_GETSIZE, (long)fd); buf->st_size = (off_t)_mtk_syscall1(SYS_GETSIZE, (long)fd);
/* Handles do not map back to paths, so fake a per-handle inode in a /* Handles do not map back to paths, so fake a per-handle inode in a
range disjoint from the path hashes used by stat(). */ range disjoint from the path hashes used by stat(). */
buf->st_ino = 0x4000000000000000UL + (unsigned long)fd; buf->st_ino = 0x4000000000000000UL + (unsigned long)fd;
@@ -2586,7 +2586,7 @@ DIR *opendir(const char *name) {
} }
const char *raw_names[256]; const char *raw_names[256];
int count = (int)_zos_syscall3(SYS_READDIR, (long)name, (long)raw_names, 256L); int count = (int)_mtk_syscall3(SYS_READDIR, (long)name, (long)raw_names, 256L);
if (count < 0) { if (count < 0) {
free(dir); free(dir);
errno = ENOTDIR; errno = ENOTDIR;
@@ -3219,7 +3219,7 @@ int raise(int sig) {
======================================================================== */ ======================================================================== */
clock_t clock(void) { clock_t clock(void) {
return (clock_t)_zos_syscall0(SYS_GETMILLISECONDS); return (clock_t)_mtk_syscall0(SYS_GETMILLISECONDS);
} }
time_t time(time_t *tloc) { time_t time(time_t *tloc) {
@@ -3426,7 +3426,7 @@ size_t strftime(char *s, size_t max, const char *format, const struct tm *tm) {
} }
int gettimeofday(struct timeval *tv, struct timezone *tz) { int gettimeofday(struct timeval *tv, struct timezone *tz) {
long ms = (long)_zos_syscall0(SYS_GETMILLISECONDS); long ms = (long)_mtk_syscall0(SYS_GETMILLISECONDS);
if (tv != NULL) { if (tv != NULL) {
tv->tv_sec = (long)time(NULL); tv->tv_sec = (long)time(NULL);
@@ -3447,7 +3447,7 @@ int gettimeofday(struct timeval *tv, struct timezone *tz) {
======================================================================== */ ======================================================================== */
unsigned int sleep(unsigned int seconds) { unsigned int sleep(unsigned int seconds) {
_zos_syscall1(SYS_SLEEP_MS, (long)seconds * 1000L); _mtk_syscall1(SYS_SLEEP_MS, (long)seconds * 1000L);
return 0; return 0;
} }
@@ -3460,7 +3460,7 @@ int usleep(unsigned long usec) {
unsigned long ms = usec / 1000UL; unsigned long ms = usec / 1000UL;
if (ms == 0 && usec != 0) if (ms == 0 && usec != 0)
ms = 1; ms = 1;
_zos_syscall1(SYS_SLEEP_MS, (long)ms); _mtk_syscall1(SYS_SLEEP_MS, (long)ms);
return 0; return 0;
} }
@@ -3549,7 +3549,7 @@ int utime(const char *path, const struct utimbuf *times) {
return -1; return -1;
} }
long result = _zos_syscall4(SYS_UTIME, (long)path, long result = _mtk_syscall4(SYS_UTIME, (long)path,
times != NULL ? (long)times->actime : 0, times != NULL ? (long)times->actime : 0,
times != NULL ? (long)times->modtime : 0, times != NULL ? (long)times->modtime : 0,
times == NULL); times == NULL);
@@ -3925,7 +3925,7 @@ int unlink(const char *path) {
errno = EINVAL; errno = EINVAL;
return -1; return -1;
} }
if ((int)_zos_syscall1(SYS_FDELETE, (long)path) < 0) { if ((int)_mtk_syscall1(SYS_FDELETE, (long)path) < 0) {
errno = ENOENT; errno = ENOENT;
return -1; return -1;
} }
@@ -3943,12 +3943,12 @@ int fcntl(int fd, int cmd, ...) {
switch (cmd) { switch (cmd) {
case F_GETFD: case F_GETFD:
case F_GETFL: { case F_GETFL: {
int probe = (int)_zos_syscall1(SYS_DUPHANDLE, (long)fd); int probe = (int)_mtk_syscall1(SYS_DUPHANDLE, (long)fd);
if (probe < 0) { if (probe < 0) {
errno = EBADF; errno = EBADF;
return -1; return -1;
} }
_zos_syscall1(SYS_CLOSE, (long)probe); _mtk_syscall1(SYS_CLOSE, (long)probe);
return (cmd == F_GETFL) ? O_RDWR : 0; return (cmd == F_GETFL) ? O_RDWR : 0;
} }
case F_SETFD: case F_SETFD:
@@ -3963,7 +3963,7 @@ int fcntl(int fd, int cmd, ...) {
} }
pid_t getpid(void) { pid_t getpid(void) {
return (pid_t)_zos_syscall0(SYS_GETPID); return (pid_t)_mtk_syscall0(SYS_GETPID);
} }
/* True dup2 needs kernel support for duplicating into a chosen slot. /* True dup2 needs kernel support for duplicating into a chosen slot.
@@ -3976,22 +3976,22 @@ int dup2(int oldfd, int newfd) {
return -1; return -1;
} }
if (oldfd == newfd) { if (oldfd == newfd) {
int probe = (int)_zos_syscall1(SYS_DUPHANDLE, (long)oldfd); int probe = (int)_mtk_syscall1(SYS_DUPHANDLE, (long)oldfd);
if (probe < 0) { if (probe < 0) {
errno = EBADF; errno = EBADF;
return -1; return -1;
} }
_zos_syscall1(SYS_CLOSE, (long)probe); _mtk_syscall1(SYS_CLOSE, (long)probe);
return newfd; return newfd;
} }
_zos_syscall1(SYS_CLOSE, (long)newfd); _mtk_syscall1(SYS_CLOSE, (long)newfd);
int h = (int)_zos_syscall1(SYS_DUPHANDLE, (long)oldfd); int h = (int)_mtk_syscall1(SYS_DUPHANDLE, (long)oldfd);
if (h < 0) { if (h < 0) {
errno = EBADF; errno = EBADF;
return -1; return -1;
} }
if (h != newfd) { if (h != newfd) {
_zos_syscall1(SYS_CLOSE, (long)h); _mtk_syscall1(SYS_CLOSE, (long)h);
errno = EBUSY; errno = EBUSY;
return -1; return -1;
} }
@@ -4007,7 +4007,7 @@ pid_t waitpid(pid_t pid, int *status, int options) {
errno = ECHILD; /* no process groups / wait-any support */ errno = ECHILD; /* no process groups / wait-any support */
return -1; return -1;
} }
long code = _zos_syscall1(SYS_WAITPID, (long)pid); long code = _mtk_syscall1(SYS_WAITPID, (long)pid);
if (status != NULL) { if (status != NULL) {
if (code >= 256) { if (code >= 256) {
*status = (int)((code - 256) & 0x7F); /* signaled */ *status = (int)((code - 256) & 0x7F); /* signaled */
@@ -4019,7 +4019,7 @@ pid_t waitpid(pid_t pid, int *status, int options) {
} }
void _exit(int status) { void _exit(int status) {
_zos_syscall1(SYS_EXIT, (long)status); _mtk_syscall1(SYS_EXIT, (long)status);
__builtin_unreachable(); __builtin_unreachable();
} }
@@ -4027,7 +4027,7 @@ void _exit(int status) {
accepted for API shape but not delivered as a handler. */ accepted for API shape but not delivered as a handler. */
int kill(pid_t pid, int sig) { int kill(pid_t pid, int sig) {
(void)sig; (void)sig;
if ((int)_zos_syscall1(SYS_KILL, (long)pid) < 0) { if ((int)_mtk_syscall1(SYS_KILL, (long)pid) < 0) {
errno = ESRCH; errno = ESRCH;
return -1; return -1;
} }
@@ -4071,7 +4071,7 @@ void *mmap(void *addr, size_t length, int prot, int flags, int fd,
errno = EINVAL; errno = EINVAL;
return MAP_FAILED; return MAP_FAILED;
} }
void *p = (void *)_zos_syscall2(SYS_MMAP_ANON, (long)length, (long)prot); void *p = (void *)_mtk_syscall2(SYS_MMAP_ANON, (long)length, (long)prot);
if (p == NULL) { if (p == NULL) {
errno = ENOMEM; errno = ENOMEM;
return MAP_FAILED; return MAP_FAILED;
@@ -4085,7 +4085,7 @@ int munmap(void *addr, size_t length) {
errno = EINVAL; errno = EINVAL;
return -1; return -1;
} }
if (_zos_syscall2(SYS_MUNMAP, (long)addr, (long)length) < 0) { if (_mtk_syscall2(SYS_MUNMAP, (long)addr, (long)length) < 0) {
errno = EINVAL; errno = EINVAL;
return -1; return -1;
} }
@@ -4100,7 +4100,7 @@ int mprotect(void *addr, size_t length, int prot) {
errno = EINVAL; errno = EINVAL;
return -1; return -1;
} }
if (_zos_syscall3(SYS_MPROTECT, (long)addr, (long)length, (long)prot) < 0) { if (_mtk_syscall3(SYS_MPROTECT, (long)addr, (long)length, (long)prot) < 0) {
errno = EINVAL; errno = EINVAL;
return -1; return -1;
} }
@@ -4225,7 +4225,7 @@ int posix_spawn(pid_t *pid, const char *path,
long child; long child;
if (envp == NULL) { if (envp == NULL) {
child = _zos_syscall2(SYS_SPAWN, (long)path, (long)argsbuf); child = _mtk_syscall2(SYS_SPAWN, (long)path, (long)argsbuf);
} else { } else {
static char envbuf[4096]; static char envbuf[4096];
size_t envlen = 0; size_t envlen = 0;
@@ -4238,7 +4238,7 @@ int posix_spawn(pid_t *pid, const char *path,
envlen += len; envlen += len;
} }
envbuf[envlen++] = '\0'; envbuf[envlen++] = '\0';
child = _zos_syscall4(SYS_SPAWN_ENV, (long)path, (long)argsbuf, child = _mtk_syscall4(SYS_SPAWN_ENV, (long)path, (long)argsbuf,
(long)envbuf, (long)envlen); (long)envbuf, (long)envlen);
} }
if (child < 0) { if (child < 0) {
@@ -4362,13 +4362,13 @@ int dup(int fd) {
errno = EBADF; errno = EBADF;
return -1; return -1;
} }
int h = (int)_zos_syscall1(SYS_DUPHANDLE, (long)fd); int h = (int)_mtk_syscall1(SYS_DUPHANDLE, (long)fd);
if (h < 0) { if (h < 0) {
errno = EBADF; errno = EBADF;
return -1; return -1;
} }
if (!_fd_pos_valid(h)) { if (!_fd_pos_valid(h)) {
_zos_syscall1(SYS_CLOSE, (long)h); _mtk_syscall1(SYS_CLOSE, (long)h);
errno = EMFILE; errno = EMFILE;
return -1; return -1;
} }
@@ -4399,7 +4399,7 @@ FILE *fdopen(int fd, const char *mode) {
} }
f->handle = fd; f->handle = fd;
f->pos = _fd_pos[fd]; f->pos = _fd_pos[fd];
f->size = (unsigned long)_zos_syscall1(SYS_GETSIZE, (long)fd); f->size = (unsigned long)_mtk_syscall1(SYS_GETSIZE, (long)fd);
f->eof = 0; f->eof = 0;
f->error = 0; f->error = 0;
f->is_std = 0; f->is_std = 0;
@@ -4458,7 +4458,7 @@ char *mktemp(char *template_) {
} }
static const char cs[] = static const char cs[] =
"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"; "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
unsigned long seed = (unsigned long)_zos_syscall0(SYS_GETMILLISECONDS) unsigned long seed = (unsigned long)_mtk_syscall0(SYS_GETMILLISECONDS)
^ ((unsigned long)getpid() << 16); ^ ((unsigned long)getpid() << 16);
for (int attempt = 0; attempt < 128; attempt++) { for (int attempt = 0; attempt < 128; attempt++) {
unsigned long v = seed + (unsigned long)attempt * 7919UL; unsigned long v = seed + (unsigned long)attempt * 7919UL;
@@ -4466,11 +4466,11 @@ char *mktemp(char *template_) {
template_[len - 6 + i] = cs[v % (sizeof(cs) - 1)]; template_[len - 6 + i] = cs[v % (sizeof(cs) - 1)];
v /= sizeof(cs) - 1; v /= sizeof(cs) - 1;
} }
int h = (int)_zos_syscall1(SYS_OPEN, (long)template_); int h = (int)_mtk_syscall1(SYS_OPEN, (long)template_);
if (h < 0) { if (h < 0) {
return template_; /* name is free */ return template_; /* name is free */
} }
_zos_syscall1(SYS_CLOSE, (long)h); _mtk_syscall1(SYS_CLOSE, (long)h);
} }
template_[0] = '\0'; template_[0] = '\0';
errno = EEXIST; errno = EEXIST;
@@ -4489,7 +4489,7 @@ int mkstemp(char *template_) {
} }
static const char cs[] = static const char cs[] =
"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"; "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
unsigned long seed = (unsigned long)_zos_syscall0(SYS_GETMILLISECONDS) unsigned long seed = (unsigned long)_mtk_syscall0(SYS_GETMILLISECONDS)
^ ((unsigned long)getpid() << 16); ^ ((unsigned long)getpid() << 16);
for (int attempt = 0; attempt < 128; attempt++) { for (int attempt = 0; attempt < 128; attempt++) {
unsigned long v = seed + (unsigned long)attempt * 7919UL; unsigned long v = seed + (unsigned long)attempt * 7919UL;