1#ifndef __VSF_LINUX_UNISTD_H__
2#define __VSF_LINUX_UNISTD_H__
6#if VSF_LINUX_CFG_RELATIVE_PATH == ENABLED
15# define __USE_LOCAL_LIBC__
16# define __USE_LOCAL_STDIO__
29#define __SIMPLE_LIBC_SETJMP_VPLT_ONLY__
35#include "../vsf_linux.h"
36#include "../port/busybox/busybox.h"
43#if defined(__WIN__) && defined(__CPU_X64__)
44# define exec_ret_t intptr_t
46# define exec_ret_t int
49#if VSF_LINUX_CFG_WRAPPER == ENABLED
50#define confstr VSF_LINUX_WRAPPER(confstr)
52#define usleep VSF_LINUX_WRAPPER(usleep)
53#define sleep VSF_LINUX_WRAPPER(sleep)
54#define pause VSF_LINUX_WRAPPER(pause)
56#define getlogin VSF_LINUX_WRAPPER(getlogin)
57#define getlogin_r VSF_LINUX_WRAPPER(getlogin_r)
59#define setgid VSF_LINUX_WRAPPER(setgid)
60#define getgid VSF_LINUX_WRAPPER(getgid)
61#define setegid VSF_LINUX_WRAPPER(setegid)
62#define getegid VSF_LINUX_WRAPPER(getegid)
63#define setuid VSF_LINUX_WRAPPER(setuid)
64#define getuid VSF_LINUX_WRAPPER(getuid)
65#define seteuid VSF_LINUX_WRAPPER(seteuid)
66#define geteuid VSF_LINUX_WRAPPER(geteuid)
67#define getpid VSF_LINUX_WRAPPER(getpid)
68#define getppid VSF_LINUX_WRAPPER(getppid)
69#define gettid VSF_LINUX_WRAPPER(gettid)
70#define setsid VSF_LINUX_WRAPPER(setsid)
71#define getsid VSF_LINUX_WRAPPER(getsid)
72#define setpgid VSF_LINUX_WRAPPER(setpgid)
73#define getpgid VSF_LINUX_WRAPPER(getpgid)
74#define setpgrp VSF_LINUX_WRAPPER(setpgrp)
75#define getpgrp VSF_LINUX_WRAPPER(getpgrp)
76#define setresuid VSF_LINUX_WRAPPER(setresuid)
77#define setresgid VSF_LINUX_WRAPPER(setresgid)
79#define execl VSF_LINUX_WRAPPER(execl)
80#define execlp VSF_LINUX_WRAPPER(execlp)
81#define execv VSF_LINUX_WRAPPER(execv)
82#define execve VSF_LINUX_WRAPPER(execve)
83#define execvp VSF_LINUX_WRAPPER(execvp)
84#define execvpe VSF_LINUX_WRAPPER(execvpe)
85#define sysconf VSF_LINUX_WRAPPER(sysconf)
86#define pathconf VSF_LINUX_WRAPPER(pathconf)
87#define fpathconf VSF_LINUX_WRAPPER(fpathconf)
88#define pipe VSF_LINUX_WRAPPER(pipe)
89#define pipe2 VSF_LINUX_WRAPPER(pipe2)
90#define alarm VSF_LINUX_WRAPPER(alarm)
91#define ualarm VSF_LINUX_WRAPPER(ualarm)
92#define fork VSF_LINUX_WRAPPER(fork)
93#define _exit VSF_LINUX_WRAPPER(_exit)
94#define acct VSF_LINUX_WRAPPER(acct)
96#define isatty VSF_LINUX_WRAPPER(isatty)
97#define symlink VSF_LINUX_WRAPPER(symlink)
98#define getpagesize VSF_LINUX_WRAPPER(getpagesize)
99#define ftruncate VSF_LINUX_WRAPPER(ftruncate)
100#define truncate VSF_LINUX_WRAPPER(truncate)
101#define ftruncate64 VSF_LINUX_WRAPPER(ftruncate64)
102#define truncate64 VSF_LINUX_WRAPPER(truncate64)
103#define readlink VSF_LINUX_WRAPPER(readlink)
104#define tcgetpgrp VSF_LINUX_WRAPPER(tcgetpgrp)
105#define tcsetpgrp VSF_LINUX_WRAPPER(tcsetpgrp)
106#define getpass VSF_LINUX_WRAPPER(getpass)
107#define gethostname VSF_LINUX_WRAPPER(gethostname)
108#define sethostname VSF_LINUX_WRAPPER(sethostname)
110#define getentropy VSF_LINUX_WRAPPER(getentropy)
112#define gethostid VSF_LINUX_WRAPPER(gethostid)
113#define sethostid VSF_LINUX_WRAPPER(sethostid)
115#if __IS_COMPILER_IAR__
117# define access VSF_LINUX_WRAPPER(access)
118# define unlink VSF_LINUX_WRAPPER(unlink)
119# define unlinkat VSF_LINUX_WRAPPER(unlinkat)
120# define link VSF_LINUX_WRAPPER(link)
121# define mkdirat VSF_LINUX_WRAPPER(mkdirat)
122# define rmdir VSF_LINUX_WRAPPER(rmdir)
123# define close VSF_LINUX_WRAPPER(close)
124# define lseek VSF_LINUX_WRAPPER(lseek)
125# define read VSF_LINUX_WRAPPER(read)
126# define write VSF_LINUX_WRAPPER(write)
127# define readv VSF_LINUX_WRAPPER(readv)
128# define writev VSF_LINUX_WRAPPER(writev)
129# define pread VSF_LINUX_WRAPPER(pread)
130# define pwrite VSF_LINUX_WRAPPER(pwrite)
131# define preadv VSF_LINUX_WRAPPER(preadv)
132# define pwritev VSF_LINUX_WRAPPER(pwritev)
133# define chdir VSF_LINUX_WRAPPER(chdir)
134# define fchdir VSF_LINUX_WRAPPER(fchdir)
135# define getcwd VSF_LINUX_WRAPPER(getcwd)
136# define fsync VSF_LINUX_WRAPPER(fsync)
137# define fdatasync VSF_LINUX_WRAPPER(fdatasync)
139#elif defined(__WIN__) && !defined(__VSF_APPLET__)
140#define _exit VSF_LINUX_WRAPPER(_exit)
145#define __NR_close close
147#define __NR_dup2 dup2
148#define __NR_dup3 dup3
149#define __NR_access access
150#define __NR_write write
151#define __NR_writev writev
152#define __NR_read read
153#define __NR_readv readv
154#define __NR_truncate truncate
155#define __NR_rtruncate ftruncate
156#define __NR_faccessat faccessat
157#define __NR_unlink unlink
158#define __NR_unlinkat unlinkat
159#define __NR_sync sync
160#define __NR_fsync fsync
161#define __NR_chdir chdir
162#define __NR_fchdir fchdir
163#define __NR_chown chown
164#define __NR_fchown fchown
165#define __NR_fchownat fchownat
166#define __NR_chroot chroot
167#define __NR_pipe pipe
168#define __NR_pipe2 pipe2
169#define __NR_alarm alarm
170#define __NR_execve execve
171#define __NR_wait4 wait4
172#define __NR_gettid gettid
173#define SYS_gettid __NR_gettid
175#define __NR_preadv(__fd, __vec, __vlen, __pos_l, __pos_h) \
176 preadv64((__fd), (__vec), (__vlen), ((off64_t)(__pos_l) << 32) + (__pos_h))
177#define __NR_pwritev(__fd, __vec, __vlen, __pos_l, __pos_h) \
178 pwritev64((__fd), (__vec), (__vlen), ((off64_t)(__pos_l) << 32) + (__pos_h))
180#define _POSIX_VERSION 200112L
182#define STDIN_FILENO 0
183#define STDOUT_FILENO 1
184#define STDERR_FILENO 2
186#define environ (vsf_linux_get_cur_process()->__environ)
192#define _CS_PATH _CS_PATH
194#define _CS_GNU_LIBC_VERSION _CS_GNU_LIBC_VERSION
196#define _CS_GNU_LIBPTHREAD_VERSION _CS_GNU_LIBPTHREAD_VERSION
242#if VSF_LINUX_APPLET_USE_UNISTD == ENABLED
359# ifndef __VSF_APPLET__
364#if defined(__VSF_APPLET__) && (defined(__VSF_APPLET_LIB__) || defined(__VSF_APPLET_LINUX_UNISTD_LIB__))\
365 && VSF_APPLET_CFG_ABI_PATCH != ENABLED && VSF_LINUX_APPLET_USE_UNISTD == ENABLED
367#ifndef VSF_LINUX_APPLET_UNISTD_VPLT
368# if VSF_LINUX_USE_APPLET == ENABLED
369# define VSF_LINUX_APPLET_UNISTD_VPLT \
370 ((vsf_linux_unistd_vplt_t *)(VSF_LINUX_APPLET_VPLT->unistd_vplt))
372# define VSF_LINUX_APPLET_UNISTD_VPLT \
373 ((vsf_linux_unistd_vplt_t *)vsf_vplt((void *)0))
377#define VSF_LINUX_APPLET_UNISTD_ENTRY(__NAME) \
378 VSF_APPLET_VPLT_ENTRY_FUNC_ENTRY(VSF_LINUX_APPLET_UNISTD_VPLT, __NAME)
379#define VSF_LINUX_APPLET_UNISTD_IMP(...) \
380 VSF_APPLET_VPLT_ENTRY_FUNC_IMP(VSF_LINUX_APPLET_UNISTD_VPLT, __VA_ARGS__)
382VSF_LINUX_APPLET_UNISTD_IMP(
__execl_va,
exec_ret_t,
const char *pathname,
const char *arg, va_list ap,
bool has_env) {
384 return VSF_LINUX_APPLET_UNISTD_ENTRY(
__execl_va)(pathname, arg, ap, has_env);
386VSF_LINUX_APPLET_UNISTD_IMP(
__execlp_va,
exec_ret_t,
const char *pathname,
const char *arg, va_list ap) {
388 return VSF_LINUX_APPLET_UNISTD_ENTRY(
__execlp_va)(pathname, arg, ap);
390VSF_LINUX_APPLET_UNISTD_IMP(
confstr,
size_t,
int name,
char *buf,
size_t len) {
392 return VSF_LINUX_APPLET_UNISTD_ENTRY(
confstr)(name, buf, len);
394VSF_LINUX_APPLET_UNISTD_IMP(
usleep,
int,
int micro_seconds) {
396 return VSF_LINUX_APPLET_UNISTD_ENTRY(
usleep)(micro_seconds);
398VSF_LINUX_APPLET_UNISTD_IMP(
sleep,
unsigned,
unsigned seconds) {
400 return VSF_LINUX_APPLET_UNISTD_ENTRY(
sleep)(seconds);
402VSF_LINUX_APPLET_UNISTD_IMP(
pause,
int,
void) {
404 return VSF_LINUX_APPLET_UNISTD_ENTRY(
pause)();
406VSF_LINUX_APPLET_UNISTD_IMP(
alarm,
unsigned int,
unsigned int seconds) {
408 return VSF_LINUX_APPLET_UNISTD_ENTRY(
alarm)(seconds);
412 return VSF_LINUX_APPLET_UNISTD_ENTRY(
ualarm)(usecs, interval);
414VSF_LINUX_APPLET_UNISTD_IMP(
getlogin,
char *,
void) {
416 return VSF_LINUX_APPLET_UNISTD_ENTRY(
getlogin)();
418VSF_LINUX_APPLET_UNISTD_IMP(
getlogin_r,
int,
char *buf,
size_t bufsize) {
420 return VSF_LINUX_APPLET_UNISTD_ENTRY(
getlogin_r)(buf, bufsize);
422VSF_LINUX_APPLET_UNISTD_IMP(
setuid,
int,
uid_t uid) {
424 return VSF_LINUX_APPLET_UNISTD_ENTRY(
setuid)(uid);
428 return VSF_LINUX_APPLET_UNISTD_ENTRY(
getuid)();
432 return VSF_LINUX_APPLET_UNISTD_ENTRY(
seteuid)(euid);
436 return VSF_LINUX_APPLET_UNISTD_ENTRY(
geteuid)();
438VSF_LINUX_APPLET_UNISTD_IMP(
setgid,
int,
gid_t gid) {
440 return VSF_LINUX_APPLET_UNISTD_ENTRY(
setgid)(gid);
444 return VSF_LINUX_APPLET_UNISTD_ENTRY(
getgid)();
448 return VSF_LINUX_APPLET_UNISTD_ENTRY(
setegid)(egid);
452 return VSF_LINUX_APPLET_UNISTD_ENTRY(
getegid)();
456 return VSF_LINUX_APPLET_UNISTD_ENTRY(
getpid)();
460 return VSF_LINUX_APPLET_UNISTD_ENTRY(
getppid)();
464 return VSF_LINUX_APPLET_UNISTD_ENTRY(
gettid)();
468 return VSF_LINUX_APPLET_UNISTD_ENTRY(
setsid)();
472 return VSF_LINUX_APPLET_UNISTD_ENTRY(
getsid)(pid);
476 return VSF_LINUX_APPLET_UNISTD_ENTRY(
setpgid)(pid, pgid);
480 return VSF_LINUX_APPLET_UNISTD_ENTRY(
getpgid)(pid);
482VSF_LINUX_APPLET_UNISTD_IMP(
setpgrp,
int,
void) {
484 return VSF_LINUX_APPLET_UNISTD_ENTRY(
setpgrp)();
488 return VSF_LINUX_APPLET_UNISTD_ENTRY(
getpgrp)();
492 return VSF_LINUX_APPLET_UNISTD_ENTRY(
setresuid)(ruid, euid, suid);
496 return VSF_LINUX_APPLET_UNISTD_ENTRY(
setresgid)(rgid, egid, sgid);
498VSF_LINUX_APPLET_UNISTD_IMP(
execv,
exec_ret_t,
const char *pathname,
char *
const * argv) {
500 return VSF_LINUX_APPLET_UNISTD_ENTRY(
execv)(pathname, argv);
502VSF_LINUX_APPLET_UNISTD_IMP(
execve,
exec_ret_t,
const char *pathname,
char *
const * argv,
char *
const * envp) {
504 return VSF_LINUX_APPLET_UNISTD_ENTRY(
execve)(pathname, argv, envp);
506VSF_LINUX_APPLET_UNISTD_IMP(
execvp,
exec_ret_t,
const char *file,
char *
const * argv) {
508 return VSF_LINUX_APPLET_UNISTD_ENTRY(
execvp)(file, argv);
510VSF_LINUX_APPLET_UNISTD_IMP(
execvpe,
exec_ret_t,
const char *file,
char *
const * argv,
char *
const * envp) {
512 return VSF_LINUX_APPLET_UNISTD_ENTRY(
execvpe)(file, argv, envp);
514VSF_LINUX_APPLET_UNISTD_IMP(
daemon,
int,
int nochdir,
int noclose) {
516 return VSF_LINUX_APPLET_UNISTD_ENTRY(
daemon)(nochdir, noclose);
518VSF_LINUX_APPLET_UNISTD_IMP(
sysconf,
long,
int name) {
520 return VSF_LINUX_APPLET_UNISTD_ENTRY(
sysconf)(name);
522VSF_LINUX_APPLET_UNISTD_IMP(
pathconf,
long,
const char *path,
int name) {
524 return VSF_LINUX_APPLET_UNISTD_ENTRY(
pathconf)(path, name);
526VSF_LINUX_APPLET_UNISTD_IMP(
fpathconf,
long,
int fd,
int name) {
528 return VSF_LINUX_APPLET_UNISTD_ENTRY(
fpathconf)(fd, name);
530VSF_LINUX_APPLET_UNISTD_IMP(
pipe,
int,
int pipefd[2]) {
532 return VSF_LINUX_APPLET_UNISTD_ENTRY(
pipe)(pipefd);
534VSF_LINUX_APPLET_UNISTD_IMP(
pipe2,
int,
int pipefd[2],
int flags) {
536 return VSF_LINUX_APPLET_UNISTD_ENTRY(
pipe2)(pipefd, flags);
538VSF_LINUX_APPLET_UNISTD_IMP(
access,
int,
const char *pathname,
int mode) {
540 return VSF_LINUX_APPLET_UNISTD_ENTRY(
access)(pathname, mode);
542VSF_LINUX_APPLET_UNISTD_IMP(
unlink,
int,
const char *pathname) {
544 return VSF_LINUX_APPLET_UNISTD_ENTRY(
unlink)(pathname);
546VSF_LINUX_APPLET_UNISTD_IMP(
unlinkat,
int,
int dirfd,
const char *pathname,
int flags) {
548 return VSF_LINUX_APPLET_UNISTD_ENTRY(
unlinkat)(dirfd, pathname, flags);
550VSF_LINUX_APPLET_UNISTD_IMP(
link,
int,
const char *oldpath,
const char *newpath) {
552 return VSF_LINUX_APPLET_UNISTD_ENTRY(
link)(oldpath, newpath);
554VSF_LINUX_APPLET_UNISTD_IMP(
mkdirat,
int,
int dirfd,
const char *pathname,
mode_t mode) {
556 return VSF_LINUX_APPLET_UNISTD_ENTRY(
mkdirat)(dirfd, pathname, mode);
558VSF_LINUX_APPLET_UNISTD_IMP(
rmdir,
int,
const char *pathname) {
560 return VSF_LINUX_APPLET_UNISTD_ENTRY(
rmdir)(pathname);
562VSF_LINUX_APPLET_UNISTD_IMP(
dup,
int,
int oldfd) {
564 return VSF_LINUX_APPLET_UNISTD_ENTRY(
dup)(oldfd);
566VSF_LINUX_APPLET_UNISTD_IMP(
dup2,
int,
int oldfd,
int newfd) {
568 return VSF_LINUX_APPLET_UNISTD_ENTRY(
dup2)(oldfd, newfd);
570VSF_LINUX_APPLET_UNISTD_IMP(
dup3,
int,
int oldfd,
int newfd,
int flags) {
572 return VSF_LINUX_APPLET_UNISTD_ENTRY(
dup3)(oldfd, newfd, flags);
574VSF_LINUX_APPLET_UNISTD_IMP(
chroot,
int,
const char *path) {
576 return VSF_LINUX_APPLET_UNISTD_ENTRY(
chroot)(path);
578VSF_LINUX_APPLET_UNISTD_IMP(
chdir,
int,
const char *pathname) {
580 return VSF_LINUX_APPLET_UNISTD_ENTRY(
chdir)(pathname);
582VSF_LINUX_APPLET_UNISTD_IMP(
fchdir,
int,
int fd) {
584 return VSF_LINUX_APPLET_UNISTD_ENTRY(
fchdir)(fd);
586VSF_LINUX_APPLET_UNISTD_IMP(
getcwd,
char *,
char *buffer,
size_t maxlen) {
588 return VSF_LINUX_APPLET_UNISTD_ENTRY(
getcwd)(buffer, maxlen);
590VSF_LINUX_APPLET_UNISTD_IMP(
close,
int,
int fd) {
592 return VSF_LINUX_APPLET_UNISTD_ENTRY(
close)(fd);
596 return VSF_LINUX_APPLET_UNISTD_ENTRY(
lseek)(fd,
offset, whence);
598VSF_LINUX_APPLET_UNISTD_IMP(
read,
ssize_t,
int fd,
void *buf,
size_t count) {
600 return VSF_LINUX_APPLET_UNISTD_ENTRY(
read)(fd, buf, count);
602VSF_LINUX_APPLET_UNISTD_IMP(
write,
ssize_t,
int fd,
const void *buf,
size_t count) {
604 return VSF_LINUX_APPLET_UNISTD_ENTRY(
write)(fd, buf, count);
606VSF_LINUX_APPLET_UNISTD_IMP(
readv,
ssize_t,
int fd,
const struct iovec *iov,
int iovcnt) {
608 return VSF_LINUX_APPLET_UNISTD_ENTRY(
readv)(fd, iov, iovcnt);
610VSF_LINUX_APPLET_UNISTD_IMP(
writev,
ssize_t,
int fd,
const struct iovec *iov,
int iovcnt) {
612 return VSF_LINUX_APPLET_UNISTD_ENTRY(
writev)(fd, iov, iovcnt);
616 return VSF_LINUX_APPLET_UNISTD_ENTRY(
pread)(fd, buf, count,
offset);
620 return VSF_LINUX_APPLET_UNISTD_ENTRY(
pwrite)(fd, buf, count,
offset);
624 return VSF_LINUX_APPLET_UNISTD_ENTRY(
preadv)(fd, iov, iovcnt,
offset);
628 return VSF_LINUX_APPLET_UNISTD_ENTRY(
pwritev)(fd, iov, iovcnt,
offset);
630VSF_LINUX_APPLET_UNISTD_IMP(
sync,
void,
void) {
632 VSF_LINUX_APPLET_UNISTD_ENTRY(
sync)();
634VSF_LINUX_APPLET_UNISTD_IMP(
syncfs,
int,
int fd) {
636 return VSF_LINUX_APPLET_UNISTD_ENTRY(
syncfs)(fd);
638VSF_LINUX_APPLET_UNISTD_IMP(
fsync,
int,
int fd) {
640 return VSF_LINUX_APPLET_UNISTD_ENTRY(
fsync)(fd);
642VSF_LINUX_APPLET_UNISTD_IMP(
fdatasync,
int,
int fd) {
644 return VSF_LINUX_APPLET_UNISTD_ENTRY(
fdatasync)(fd);
646VSF_LINUX_APPLET_UNISTD_IMP(
isatty,
int,
int fd) {
648 return VSF_LINUX_APPLET_UNISTD_ENTRY(
isatty)(fd);
650VSF_LINUX_APPLET_UNISTD_IMP(
getpagesize,
size_t,
void) {
652 return VSF_LINUX_APPLET_UNISTD_ENTRY(
getpagesize)();
654VSF_LINUX_APPLET_UNISTD_IMP(
symlink,
int,
const char *target,
const char *linkpath) {
656 return VSF_LINUX_APPLET_UNISTD_ENTRY(
symlink)(target, linkpath);
674VSF_LINUX_APPLET_UNISTD_IMP(
readlink,
ssize_t,
const char *pathname,
char *buf,
size_t bufsiz) {
676 return VSF_LINUX_APPLET_UNISTD_ENTRY(
readlink)(pathname, buf, bufsiz);
680 return VSF_LINUX_APPLET_UNISTD_ENTRY(
tcgetpgrp)(fd);
684 return VSF_LINUX_APPLET_UNISTD_ENTRY(
tcsetpgrp)(fd, pgrp);
686VSF_LINUX_APPLET_UNISTD_IMP(
getpass,
char *,
const char *prompt) {
688 return VSF_LINUX_APPLET_UNISTD_ENTRY(
getpass)(prompt);
690VSF_LINUX_APPLET_UNISTD_IMP(
gethostname,
int,
char *name,
size_t len) {
692 return VSF_LINUX_APPLET_UNISTD_ENTRY(
gethostname)(name, len);
694VSF_LINUX_APPLET_UNISTD_IMP(
sethostname,
int,
const char *name,
size_t len) {
696 return VSF_LINUX_APPLET_UNISTD_ENTRY(
sethostname)(name, len);
700 return VSF_LINUX_APPLET_UNISTD_ENTRY(
chown)(pathname, owner,
group);
704 return VSF_LINUX_APPLET_UNISTD_ENTRY(
fchown)(fd, owner,
group);
708 return VSF_LINUX_APPLET_UNISTD_ENTRY(
lchown)(pathname, owner,
group);
710VSF_LINUX_APPLET_UNISTD_IMP(
fchownat,
int,
int dirfd,
const char *pathname,
uid_t owner,
gid_t group,
int flags) {
712 return VSF_LINUX_APPLET_UNISTD_ENTRY(
fchownat)(dirfd, pathname, owner,
group, flags);
718VSF_LINUX_APPLET_UNISTD_IMP(
gethostid,
long,
void) {
720 return VSF_LINUX_APPLET_UNISTD_ENTRY(
gethostid)();
722VSF_LINUX_APPLET_UNISTD_IMP(
sethostid,
int,
long hostid) {
724 return VSF_LINUX_APPLET_UNISTD_ENTRY(
sethostid)(hostid);
728 return VSF_LINUX_APPLET_UNISTD_ENTRY(
lseek64)(fd,
offset, whence);
730VSF_LINUX_APPLET_UNISTD_IMP(
ttyname,
char *,
int fd) {
732 return VSF_LINUX_APPLET_UNISTD_ENTRY(
ttyname)(fd);
734VSF_LINUX_APPLET_UNISTD_IMP(
ttyname_r,
int,
int fd,
char *buf,
size_t buflen) {
736 return VSF_LINUX_APPLET_UNISTD_ENTRY(
ttyname_r)(fd, buf, buflen);
738VSF_LINUX_APPLET_UNISTD_IMP(
_exit,
void,
int status) {
742VSF_LINUX_APPLET_UNISTD_IMP(
acct,
int,
const char *filename) {
744 return VSF_LINUX_APPLET_UNISTD_ENTRY(
acct)(filename);
750VSF_LINUX_APPLET_UNISTD_IMP(
mkdirs,
int,
const char *pathname,
mode_t mode) {
752 return VSF_LINUX_APPLET_UNISTD_ENTRY(
mkdirs)(pathname, mode);
764 ret = VSF_LINUX_APPLET_UNISTD_ENTRY(
__execl_va)(pathname, arg, ap,
false);
773 ret = VSF_LINUX_APPLET_UNISTD_ENTRY(
__execl_va)(pathname, arg, ap,
true);
782 ret = VSF_LINUX_APPLET_UNISTD_ENTRY(
__execlp_va)(file, arg, ap);
789size_t confstr(
int name,
char *buf,
size_t len);
791int usleep(
int micro_seconds);
792unsigned sleep(
unsigned seconds);
795unsigned int alarm(
unsigned int seconds);
826exec_ret_t execve(
const char *pathname,
char *
const * argv,
char *
const * envp);
829int daemon(
int nochdir,
int noclose);
834long pathconf(
const char *path,
int name);
836int pipe(
int pipefd[2]);
837int pipe2(
int pipefd[2],
int flags);
839int access(
const char *pathname,
int mode);
840int unlink(
const char *pathname);
841int unlinkat(
int dirfd,
const char *pathname,
int flags);
842int link(
const char *oldpath,
const char *newpath);
845int rmdir(
const char *pathname);
847int dup2(
int oldfd,
int newfd);
848int dup3(
int oldfd,
int newfd,
int flags);
850int chroot(
const char *path);
851int chdir(
const char *pathname);
853char *
getcwd(
char *buffer,
size_t maxlen);
876int ttyname_r(
int fd,
char *buf,
size_t buflen);
878int symlink(
const char *target,
const char *linkpath);
886char *
getpass(
const char *prompt);
902int acct(
const char *filename);
904#if VSF_LINUX_USE_VFORK == ENABLED
910#if VSF_LINUX_USE_VFORK == ENABLED
912 vsf_linux_process_t *parent_process = vsf_linux_get_cur_process(); \
913 pid_t result = (pid_t)-1, child_pid = __vsf_linux_vfork_prepare(parent_process);\
914 if (child_pid >= 0) { \
915 result = !setjmp(parent_process->__vfork_jmpbuf) ? (pid_t)0 : child_pid;\
Definition vsf_linux.h:281
int pid_t
Definition types.h:93
__USECONDS_T useconds_t
Definition types.h:146
unsigned int uid_t
Definition types.h:98
unsigned int gid_t
Definition types.h:99
long long off64_t
Definition types.h:105
unsigned int mode_t
Definition types.h:95
int ssize_t
Definition types.h:71
long off_t
Definition types.h:103
void * iov_base
Definition unistd.h:233
size_t iov_len
Definition unistd.h:234
VSF_APPLET_VPLT_ENTRY_FUNC_DEF(fpathconf)
VSF_APPLET_VPLT_ENTRY_FUNC_DEF(dup3)
VSF_APPLET_VPLT_ENTRY_FUNC_DEF(ualarm)
VSF_APPLET_VPLT_ENTRY_FUNC_DEF(alarm)
VSF_APPLET_VPLT_ENTRY_FUNC_DEF(sync)
VSF_APPLET_VPLT_ENTRY_FUNC_DEF(unlink)
VSF_APPLET_VPLT_ENTRY_FUNC_DEF(truncate)
VSF_APPLET_VPLT_ENTRY_FUNC_DEF(getdtablesize)
VSF_APPLET_VPLT_ENTRY_FUNC_DEF(sleep)
VSF_APPLET_VPLT_ENTRY_FUNC_DEF(lseek)
VSF_APPLET_VPLT_ENTRY_FUNC_DEF(pathconf)
VSF_APPLET_VPLT_ENTRY_FUNC_DEF(setresuid)
VSF_APPLET_VPLT_ENTRY_FUNC_DEF(pause)
VSF_APPLET_VPLT_ENTRY_FUNC_DEF(execlp)
VSF_APPLET_VPLT_ENTRY_FUNC_DEF(rmdir)
VSF_APPLET_VPLT_ENTRY_FUNC_DEF(gettid)
VSF_APPLET_VPLT_ENTRY_FUNC_DEF(acct)
VSF_APPLET_VPLT_ENTRY_FUNC_DEF(getpagesize)
VSF_APPLET_VPLT_ENTRY_FUNC_DEF(pwritev)
VSF_APPLET_VPLT_ENTRY_FUNC_DEF(setsid)
VSF_APPLET_VPLT_ENTRY_FUNC_DEF(daemon)
VSF_APPLET_VPLT_ENTRY_FUNC_DEF(syncfs)
VSF_APPLET_VPLT_ENTRY_FUNC_DEF(unlinkat)
VSF_APPLET_VPLT_ENTRY_FUNC_DEF(setegid)
VSF_APPLET_VPLT_ENTRY_FUNC_DEF(fchdir)
VSF_APPLET_VPLT_ENTRY_FUNC_DEF(close)
VSF_APPLET_VPLT_ENTRY_FUNC_DEF(getppid)
VSF_APPLET_VPLT_ENTRY_FUNC_DEF(__vsf_linux_vfork_prepare)
VSF_APPLET_VPLT_ENTRY_FUNC_DEF(chroot)
VSF_APPLET_VPLT_ENTRY_FUNC_DEF(execl)
VSF_APPLET_VPLT_ENTRY_FUNC_DEF(getpgid)
VSF_APPLET_VPLT_ENTRY_FUNC_DEF(ttyname_r)
VSF_APPLET_VPLT_ENTRY_FUNC_DEF(tcsetpgrp)
VSF_APPLET_VPLT_ENTRY_FUNC_DEF(readlink)
VSF_APPLET_VPLT_ENTRY_FUNC_DEF(gethostid)
VSF_APPLET_VPLT_ENTRY_FUNC_DEF(execv)
VSF_APPLET_VPLT_ENTRY_FUNC_DEF(setpgrp)
VSF_APPLET_VPLT_ENTRY_FUNC_DEF(setgid)
VSF_APPLET_VPLT_ENTRY_FUNC_DEF(truncate64)
VSF_APPLET_VPLT_ENTRY_FUNC_DEF(preadv)
VSF_APPLET_VPLT_ENTRY_FUNC_DEF(ftruncate64)
VSF_APPLET_VPLT_ENTRY_FUNC_DEF(pread)
VSF_APPLET_VPLT_ENTRY_FUNC_DEF(pipe2)
VSF_APPLET_VPLT_ENTRY_FUNC_DEF(gethostname)
VSF_APPLET_VPLT_ENTRY_FUNC_DEF(chdir)
VSF_APPLET_VPLT_ENTRY_FUNC_DEF(usleep)
VSF_APPLET_VPLT_ENTRY_FUNC_DEF(execle)
VSF_APPLET_VPLT_ENTRY_FUNC_DEF(realpath)
VSF_APPLET_VPLT_ENTRY_FUNC_DEF(getcwd)
VSF_APPLET_VPLT_ENTRY_FUNC_DEF(dup)
VSF_APPLET_VPLT_ENTRY_FUNC_DEF(writev)
VSF_APPLET_VPLT_ENTRY_FUNC_DEF(dup2)
VSF_APPLET_VPLT_ENTRY_FUNC_DEF(access)
VSF_APPLET_VPLT_ENTRY_FUNC_DEF(read)
VSF_APPLET_VPLT_ENTRY_FUNC_DEF(execvp)
VSF_APPLET_VPLT_ENTRY_FUNC_DEF(write)
VSF_APPLET_VPLT_ENTRY_FUNC_DEF(setpgid)
vsf_vplt_info_t info
Definition unistd.h:244
VSF_APPLET_VPLT_ENTRY_FUNC_DEF(fchown)
VSF_APPLET_VPLT_ENTRY_FUNC_DEF(seteuid)
VSF_APPLET_VPLT_ENTRY_FUNC_DEF(fsync)
VSF_APPLET_VPLT_ENTRY_FUNC_DEF(pwrite)
VSF_APPLET_VPLT_ENTRY_FUNC_DEF(mkdirs)
VSF_APPLET_VPLT_ENTRY_FUNC_DEF(symlink)
VSF_APPLET_VPLT_ENTRY_FUNC_DEF(mkdirat)
VSF_APPLET_VPLT_ENTRY_FUNC_DEF(getpgrp)
VSF_APPLET_VPLT_ENTRY_FUNC_DEF(ttyname)
VSF_APPLET_VPLT_ENTRY_FUNC_DEF(fdatasync)
VSF_APPLET_VPLT_ENTRY_FUNC_DEF(_exit)
VSF_APPLET_VPLT_ENTRY_FUNC_DEF(pipe)
VSF_APPLET_VPLT_ENTRY_FUNC_DEF(getgid)
VSF_APPLET_VPLT_ENTRY_FUNC_DEF(getpid)
VSF_APPLET_VPLT_ENTRY_FUNC_DEF(ftruncate)
VSF_APPLET_VPLT_ENTRY_FUNC_DEF(getlogin)
VSF_APPLET_VPLT_ENTRY_FUNC_DEF(chown)
VSF_APPLET_VPLT_ENTRY_FUNC_DEF(getpass)
VSF_APPLET_VPLT_ENTRY_FUNC_DEF(getegid)
VSF_APPLET_VPLT_ENTRY_FUNC_DEF(__execl_va)
VSF_APPLET_VPLT_ENTRY_FUNC_DEF(sethostname)
VSF_APPLET_VPLT_ENTRY_FUNC_DEF(setresgid)
VSF_APPLET_VPLT_ENTRY_FUNC_DEF(__execlp_va)
VSF_APPLET_VPLT_ENTRY_FUNC_DEF(getlogin_r)
VSF_APPLET_VPLT_ENTRY_FUNC_DEF(sysconf)
VSF_APPLET_VPLT_ENTRY_FUNC_DEF(lchown)
VSF_APPLET_VPLT_ENTRY_FUNC_DEF(geteuid)
VSF_APPLET_VPLT_ENTRY_FUNC_DEF(getsid)
VSF_APPLET_VPLT_ENTRY_FUNC_DEF(tcgetpgrp)
VSF_APPLET_VPLT_ENTRY_FUNC_DEF(confstr)
VSF_APPLET_VPLT_ENTRY_FUNC_DEF(lseek64)
VSF_APPLET_VPLT_ENTRY_FUNC_DEF(sethostid)
VSF_APPLET_VPLT_ENTRY_FUNC_DEF(execvpe)
VSF_APPLET_VPLT_ENTRY_FUNC_DEF(execve)
VSF_APPLET_VPLT_ENTRY_FUNC_DEF(getentropy)
VSF_APPLET_VPLT_ENTRY_FUNC_DEF(getuid)
VSF_APPLET_VPLT_ENTRY_FUNC_DEF(setuid)
VSF_APPLET_VPLT_ENTRY_FUNC_DEF(isatty)
VSF_APPLET_VPLT_ENTRY_FUNC_DEF(fchownat)
VSF_APPLET_VPLT_ENTRY_FUNC_DEF(readv)
VSF_APPLET_VPLT_ENTRY_FUNC_DEF(link)
#define realpath
Definition stdlib.h:44
@ _SC_PAGE_SIZE
Definition unistd.h:219
@ _SC_SYMLOOP_MAX
Definition unistd.h:216
@ _SC_OPEN_MAX
Definition unistd.h:213
@ _SC_GETGR_R_SIZE_MAX
Definition unistd.h:215
@ _SC_PAGESIZE
Definition unistd.h:212
@ _SC_CLK_TCK
Definition unistd.h:214
@ _SC_NPROCESSORS_ONLN
Definition unistd.h:217
#define fpathconf
Definition unistd.h:87
#define pathconf
Definition unistd.h:86
#define pause
Definition unistd.h:54
#define link
Definition unistd.h:120
int dup2(int oldfd, int newfd)
Definition vsf_linux_fs.c:1592
#define exec_ret_t
Definition unistd.h:46
__VSF_VPLT_DECORATOR__ vsf_linux_unistd_vplt_t vsf_linux_unistd_vplt
Definition vsf_linux.c:5087
int lchown(const char *pathname, uid_t owner, gid_t group)
Definition vsf_linux.c:3095
#define sethostid
Definition unistd.h:113
#define lseek
Definition unistd.h:124
#define unlink
Definition unistd.h:118
#define access
Definition unistd.h:117
#define setresuid
Definition unistd.h:76
int fchown(int fd, uid_t owner, gid_t group)
Definition vsf_linux.c:3090
int dup(int oldfd)
Definition vsf_linux_fs.c:1587
#define setgid
Definition unistd.h:59
int mkdirs(const char *pathname, mode_t mode)
Definition vsf_linux_fs.c:1569
#define execv
Definition unistd.h:81
#define getpagesize
Definition unistd.h:98
#define execlp
Definition unistd.h:80
@ _PC_MAX_CANON
Definition unistd.h:224
@ _PC_LINK_MAX
Definition unistd.h:223
@ _PC_MAX_INPUT
Definition unistd.h:225
@ _PC_NAME_MAX
Definition unistd.h:226
@ _PC_PATH_MAX
Definition unistd.h:227
#define alarm
Definition unistd.h:90
#define confstr
Definition unistd.h:50
#define setegid
Definition unistd.h:61
#define pwrite
Definition unistd.h:130
#define getpass
Definition unistd.h:106
#define writev
Definition unistd.h:128
#define _CS_PATH
Definition unistd.h:192
#define getpgid
Definition unistd.h:73
#define ftruncate64
Definition unistd.h:101
#define pread
Definition unistd.h:129
#define fchdir
Definition unistd.h:134
#define execvpe
Definition unistd.h:84
#define gethostid
Definition unistd.h:112
#define getlogin
Definition unistd.h:56
int fchownat(int dirfd, const char *pathname, uid_t owner, gid_t group, int flags)
Definition vsf_linux.c:3100
#define getpgrp
Definition unistd.h:75
#define tcgetpgrp
Definition unistd.h:104
#define getcwd
Definition unistd.h:135
#define pipe2
Definition unistd.h:89
#define truncate
Definition unistd.h:100
exec_ret_t execle(const char *pathname, const char *arg,...)
Definition vsf_linux.c:2479
#define readv
Definition unistd.h:127
#define truncate64
Definition unistd.h:102
ssize_t preadv64(int fd, const struct iovec *vector, int iovcnt, off64_t offset)
Definition vsf_linux_fs.c:2041
#define ualarm
Definition unistd.h:91
#define pipe
Definition unistd.h:88
#define seteuid
Definition unistd.h:65
#define read
Definition unistd.h:125
#define rmdir
Definition unistd.h:122
#define execl
Definition unistd.h:79
#define acct
Definition unistd.h:94
#define execvp
Definition unistd.h:83
#define setsid
Definition unistd.h:70
#define fdatasync
Definition unistd.h:137
#define unlinkat
Definition unistd.h:119
#define setpgrp
Definition unistd.h:74
#define preadv
Definition unistd.h:131
int chown(const char *pathname, uid_t owner, gid_t group)
Definition vsf_linux.c:3085
#define getuid
Definition unistd.h:64
off64_t lseek64(int fd, off64_t offset, int whence)
Definition vsf_linux_fs.c:2123
char * ttyname(int fd)
Definition vsf_linux.c:1108
#define pwritev
Definition unistd.h:132
#define symlink
Definition unistd.h:97
#define ftruncate
Definition unistd.h:99
int ttyname_r(int fd, char *buf, size_t buflen)
Definition vsf_linux.c:1086
@ DT_REG
Definition unistd.h:201
@ DT_CHR
Definition unistd.h:205
@ DT_DIR
Definition unistd.h:202
@ DT_FIFO
Definition unistd.h:203
@ DT_LNK
Definition unistd.h:207
@ DT_SOCK
Definition unistd.h:204
@ DT_BLK
Definition unistd.h:206
@ DT_UNKNOWN
Definition unistd.h:200
@ DT_EXE
Definition unistd.h:208
#define sysconf
Definition unistd.h:85
#define close
Definition unistd.h:123
#define chdir
Definition unistd.h:133
#define getgid
Definition unistd.h:60
#define usleep
Definition unistd.h:52
#define mkdirat
Definition unistd.h:121
#define gethostname
Definition unistd.h:107
#define fork
Definition unistd.h:92
#define getentropy
Definition unistd.h:110
#define _exit
Definition unistd.h:93
#define geteuid
Definition unistd.h:66
#define write
Definition unistd.h:126
void sync(void)
Definition vsf_linux_fs.c:2150
#define setresgid
Definition unistd.h:77
#define setuid
Definition unistd.h:63
#define sleep
Definition unistd.h:53
#define getlogin_r
Definition unistd.h:57
#define getegid
Definition unistd.h:62
pid_t __vsf_linux_vfork_prepare(vsf_linux_process_t *parent_process)
Definition vsf_linux.c:3958
int syncfs(int fd)
Definition vsf_linux_fs.c:2154
#define fsync
Definition unistd.h:136
#define sethostname
Definition unistd.h:108
#define getsid
Definition unistd.h:71
#define getpid
Definition unistd.h:67
#define setpgid
Definition unistd.h:72
#define gettid
Definition unistd.h:69
#define _CS_GNU_LIBC_VERSION
Definition unistd.h:194
#define execve
Definition unistd.h:82
ssize_t pwritev64(int fd, const struct iovec *vector, int iovcnt, off64_t offset)
Definition vsf_linux_fs.c:2077
#define getppid
Definition unistd.h:68
#define tcsetpgrp
Definition unistd.h:105
int getdtablesize(void)
Definition vsf_linux.c:3952
#define isatty
Definition unistd.h:96
int dup3(int oldfd, int newfd, int flags)
Definition vsf_linux_fs.c:1597
int daemon(int nochdir, int noclose)
Definition vsf_linux.c:1926
#define _CS_GNU_LIBPTHREAD_VERSION
Definition unistd.h:196
int chroot(const char *path)
Definition vsf_linux_fs.c:1643
#define readlink
Definition unistd.h:103
#define __VSF_VPLT_DECORATOR__
Definition vsf_cfg.h:93
#define VSF_APPLET_VPLT_ENTRY_FUNC_TRACE()
Definition vsf_cfg.h:165
exec_ret_t __execl_va(const char *pathname, const char *arg, va_list ap, bool has_env)
Definition vsf_linux.c:2442
exec_ret_t __execlp_va(const char *pathname, const char *arg, va_list ap)
Definition vsf_linux.c:2405
#define VSF_APPLET_VPLT_FUNC_DECORATOR(__NAME)
Definition vsf_linux_applet_lib.c:1
uint64_t offset
Definition vsf_memfs.h:49
uint_fast8_t length
Definition vsf_pbuf.c:38
uint8_t status
Definition vsf_tgui.h:144