parent
e470d802eb
commit
a17a43bab1
@ -0,0 +1,280 @@
|
||||
#ifndef _UNISTD_H
|
||||
#define _UNISTD_H
|
||||
|
||||
/* ok, this may be a joke, but I'm working on it */
|
||||
#define _POSIX_VERSION 198808L
|
||||
|
||||
#define _POSIX_CHOWN_RESTRICTED /* only root can do a chown (I think..) */
|
||||
#define _POSIX_NO_TRUNC /* no pathname truncation (but see in kernel) */
|
||||
#define _POSIX_VDISABLE '\0' /* character to disable things like ^C */
|
||||
/*#define _POSIX_SAVED_IDS */ /* we'll get to this yet */
|
||||
/*#define _POSIX_JOB_CONTROL */ /* we aren't there quite yet. Soon hopefully */
|
||||
|
||||
#define STDIN_FILENO 0
|
||||
#define STDOUT_FILENO 1
|
||||
#define STDERR_FILENO 2
|
||||
|
||||
#ifndef NULL
|
||||
#define NULL ((void *)0)
|
||||
#endif
|
||||
|
||||
/* access */
|
||||
#define F_OK 0
|
||||
#define X_OK 1
|
||||
#define W_OK 2
|
||||
#define R_OK 4
|
||||
|
||||
/* lseek */
|
||||
#define SEEK_SET 0
|
||||
#define SEEK_CUR 1
|
||||
#define SEEK_END 2
|
||||
|
||||
/* _SC stands for System Configuration. We don't use them much */
|
||||
#define _SC_ARG_MAX 1
|
||||
#define _SC_CHILD_MAX 2
|
||||
#define _SC_CLOCKS_PER_SEC 3
|
||||
#define _SC_NGROUPS_MAX 4
|
||||
#define _SC_OPEN_MAX 5
|
||||
#define _SC_JOB_CONTROL 6
|
||||
#define _SC_SAVED_IDS 7
|
||||
#define _SC_VERSION 8
|
||||
|
||||
/* more (possibly) configurable things - now pathnames */
|
||||
#define _PC_LINK_MAX 1
|
||||
#define _PC_MAX_CANON 2
|
||||
#define _PC_MAX_INPUT 3
|
||||
#define _PC_NAME_MAX 4
|
||||
#define _PC_PATH_MAX 5
|
||||
#define _PC_PIPE_BUF 6
|
||||
#define _PC_NO_TRUNC 7
|
||||
#define _PC_VDISABLE 8
|
||||
#define _PC_CHOWN_RESTRICTED 9
|
||||
|
||||
#include <sys/stat.h>
|
||||
#include <sys/times.h>
|
||||
#include <sys/utsname.h>
|
||||
#include <utime.h>
|
||||
|
||||
#ifdef __LIBRARY__
|
||||
|
||||
#define __NR_setup 0 /* used only by init, to get system going */
|
||||
#define __NR_exit 1
|
||||
#define __NR_fork 2
|
||||
#define __NR_read 3
|
||||
#define __NR_write 4
|
||||
#define __NR_open 5
|
||||
#define __NR_close 6
|
||||
#define __NR_waitpid 7
|
||||
#define __NR_creat 8
|
||||
#define __NR_link 9
|
||||
#define __NR_unlink 10
|
||||
#define __NR_execve 11
|
||||
#define __NR_chdir 12
|
||||
#define __NR_time 13
|
||||
#define __NR_mknod 14
|
||||
#define __NR_chmod 15
|
||||
#define __NR_chown 16
|
||||
#define __NR_break 17
|
||||
#define __NR_stat 18
|
||||
#define __NR_lseek 19
|
||||
#define __NR_getpid 20
|
||||
#define __NR_mount 21
|
||||
#define __NR_umount 22
|
||||
#define __NR_setuid 23
|
||||
#define __NR_getuid 24
|
||||
#define __NR_stime 25
|
||||
#define __NR_ptrace 26
|
||||
#define __NR_alarm 27
|
||||
#define __NR_fstat 28
|
||||
#define __NR_pause 29
|
||||
#define __NR_utime 30
|
||||
#define __NR_stty 31
|
||||
#define __NR_gtty 32
|
||||
#define __NR_access 33
|
||||
#define __NR_nice 34
|
||||
#define __NR_ftime 35
|
||||
#define __NR_sync 36
|
||||
#define __NR_kill 37
|
||||
#define __NR_rename 38
|
||||
#define __NR_mkdir 39
|
||||
#define __NR_rmdir 40
|
||||
#define __NR_dup 41
|
||||
#define __NR_pipe 42
|
||||
#define __NR_times 43
|
||||
#define __NR_prof 44
|
||||
#define __NR_brk 45
|
||||
#define __NR_setgid 46
|
||||
#define __NR_getgid 47
|
||||
#define __NR_signal 48
|
||||
#define __NR_geteuid 49
|
||||
#define __NR_getegid 50
|
||||
#define __NR_acct 51
|
||||
#define __NR_phys 52
|
||||
#define __NR_lock 53
|
||||
#define __NR_ioctl 54
|
||||
#define __NR_fcntl 55
|
||||
#define __NR_mpx 56
|
||||
#define __NR_setpgid 57
|
||||
#define __NR_ulimit 58
|
||||
#define __NR_uname 59
|
||||
#define __NR_umask 60
|
||||
#define __NR_chroot 61
|
||||
#define __NR_ustat 62
|
||||
#define __NR_dup2 63
|
||||
#define __NR_getppid 64
|
||||
#define __NR_getpgrp 65
|
||||
#define __NR_setsid 66
|
||||
#define __NR_sigaction 67
|
||||
#define __NR_sgetmask 68
|
||||
#define __NR_ssetmask 69
|
||||
#define __NR_setreuid 70
|
||||
#define __NR_setregid 71
|
||||
#define __NR_sigsuspend 72
|
||||
#define __NR_sigpending 73
|
||||
#define __NR_sethostname 74
|
||||
#define __NR_setrlimit 75
|
||||
#define __NR_getrlimit 76
|
||||
#define __NR_getrusage 77
|
||||
#define __NR_gettimeofday 78
|
||||
#define __NR_settimeofday 79
|
||||
#define __NR_getgroups 80
|
||||
#define __NR_setgroups 81
|
||||
#define __NR_select 82
|
||||
#define __NR_symlink 83
|
||||
#define __NR_lstat 84
|
||||
#define __NR_readlink 85
|
||||
#define __NR_uselib 86
|
||||
#define __NR_execve2 87
|
||||
#define __NR_getdents 88
|
||||
#define __NR_pipe2 89
|
||||
#define __NR_sleep 90
|
||||
#define __NR_getcwd 91
|
||||
#define _syscall0(type,name) \
|
||||
type name(void) \
|
||||
{ \
|
||||
long __res; \
|
||||
__asm__ volatile ("int $0x80" \
|
||||
: "=a" (__res) \
|
||||
: "0" (__NR_##name)); \
|
||||
if (__res >= 0) \
|
||||
return (type) __res; \
|
||||
errno = -__res; \
|
||||
return -1; \
|
||||
}
|
||||
|
||||
#define _syscall1(type,name,atype,a) \
|
||||
type name(atype a) \
|
||||
{ \
|
||||
long __res; \
|
||||
__asm__ volatile ("int $0x80" \
|
||||
: "=a" (__res) \
|
||||
: "0" (__NR_##name),"b" ((long)(a))); \
|
||||
if (__res >= 0) \
|
||||
return (type) __res; \
|
||||
errno = -__res; \
|
||||
return -1; \
|
||||
}
|
||||
|
||||
#define _syscall2(type,name,atype,a,btype,b) \
|
||||
type name(atype a,btype b) \
|
||||
{ \
|
||||
long __res; \
|
||||
__asm__ volatile ("int $0x80" \
|
||||
: "=a" (__res) \
|
||||
: "0" (__NR_##name),"b" ((long)(a)),"c" ((long)(b))); \
|
||||
if (__res >= 0) \
|
||||
return (type) __res; \
|
||||
errno = -__res; \
|
||||
return -1; \
|
||||
}
|
||||
|
||||
#define _syscall3(type,name,atype,a,btype,b,ctype,c) \
|
||||
type name(atype a,btype b,ctype c) \
|
||||
{ \
|
||||
long __res; \
|
||||
__asm__ volatile ("int $0x80" \
|
||||
: "=a" (__res) \
|
||||
: "0" (__NR_##name),"b" ((long)(a)),"c" ((long)(b)),"d" ((long)(c))); \
|
||||
if (__res>=0) \
|
||||
return (type) __res; \
|
||||
errno=-__res; \
|
||||
return -1; \
|
||||
}
|
||||
|
||||
#endif /* __LIBRARY__ */
|
||||
|
||||
extern int errno;
|
||||
|
||||
int access(const char* filename, mode_t mode);
|
||||
int acct(const char* filename);
|
||||
int alarm(int sec);
|
||||
int brk(void* end_data_segment);
|
||||
void* sbrk(ptrdiff_t increment);
|
||||
int chdir(const char* filename);
|
||||
int chmod(const char* filename, mode_t mode);
|
||||
int chown(const char* filename, uid_t owner, gid_t group);
|
||||
int chroot(const char* filename);
|
||||
int close(int fildes);
|
||||
int creat(const char* filename, mode_t mode);
|
||||
int dup(int fildes);
|
||||
int execve(const char* filename, char** argv, char** envp);
|
||||
int execv(const char* pathname, char** argv);
|
||||
int execvp(const char* file, char** argv);
|
||||
int execl(const char* pathname, char* arg0, ...);
|
||||
int execlp(const char* file, char* arg0, ...);
|
||||
int execle(const char* pathname, char* arg0, ...);
|
||||
volatile void exit(int status);
|
||||
volatile void _exit(int status);
|
||||
int fcntl(int fildes, int cmd, ...);
|
||||
int fork(void);
|
||||
int getpid(void);
|
||||
int getuid(void);
|
||||
int geteuid(void);
|
||||
int getgid(void);
|
||||
int getegid(void);
|
||||
int ioctl(int fildes, int cmd, ...);
|
||||
int kill(pid_t pid, int signal);
|
||||
int link(const char* filename1, const char* filename2);
|
||||
int lseek(int fildes, off_t offset, int origin);
|
||||
int mknod(const char* filename, mode_t mode, dev_t dev);
|
||||
int mount(const char* specialfile, const char* dir, int rwflag);
|
||||
int nice(int val);
|
||||
int open(const char* filename, int flag, ...);
|
||||
int pause(void);
|
||||
int pipe(int* fildes);
|
||||
int read(int fildes, char* buf, off_t count);
|
||||
int setpgrp(void);
|
||||
int setpgid(pid_t pid, pid_t pgid);
|
||||
int setuid(uid_t uid);
|
||||
int setgid(gid_t gid);
|
||||
void (*signal(int sig, void (*fn)(int)))(int);
|
||||
int stat(const char* filename, struct stat* stat_buf);
|
||||
int fstat(int fildes, struct stat* stat_buf);
|
||||
int stime(time_t* tptr);
|
||||
int sync(void);
|
||||
time_t time(time_t* tloc);
|
||||
time_t times(struct tms* tbuf);
|
||||
int ulimit(int cmd, long limit);
|
||||
mode_t umask(mode_t mask);
|
||||
int umount(const char* specialfile);
|
||||
int uname(struct utsname* name);
|
||||
int unlink(const char* filename);
|
||||
int ustat(dev_t dev, struct ustat* ubuf);
|
||||
int utime(const char* filename, struct utimbuf* times);
|
||||
pid_t waitpid(pid_t pid, int* wait_stat, int options);
|
||||
pid_t wait(int* wait_stat);
|
||||
int write(int fildes, const char* buf, off_t count);
|
||||
int dup2(int oldfd, int newfd);
|
||||
int getppid(void);
|
||||
pid_t getpgrp(void);
|
||||
pid_t setsid(void);
|
||||
|
||||
int execve2(const char* filename, char** argv, char** envp);
|
||||
int getdents(unsigned int fd, struct linux_dirent* dirent, unsigned int count);
|
||||
int sleep(unsigned int seconds);
|
||||
long getcwd(char* buf, size_t size);
|
||||
|
||||
|
||||
#define __always_inline inline __attribute__((always_inline))
|
||||
|
||||
#endif#pragma once
|
Loading…
Reference in new issue