Initial commit: Schunix as it stands before the SchOS rename
An x86-64 operating system built from xv6, now largely rewritten: SMP, a copy-on-write root filesystem (SchFS), PCI/USB/virtio drivers, a TTF rasteriser, and a Linux-numbered syscall ABI. No history before this point -- the tree was never under version control. This commit exists so the rename that follows has something to undo to.
This commit is contained in:
commit
d0f7acf9eb
275 changed files with 51417 additions and 0 deletions
117
include/user.h
Normal file
117
include/user.h
Normal file
|
|
@ -0,0 +1,117 @@
|
|||
#pragma once
|
||||
#ifndef USER_H
|
||||
#define USER_H
|
||||
|
||||
#include "types.h"
|
||||
#include "date.h"
|
||||
|
||||
struct stat;
|
||||
struct rtcdate;
|
||||
struct mouse_data;
|
||||
|
||||
// --- system calls ---
|
||||
int fork(void);
|
||||
void exit(void) __attribute__((noreturn));
|
||||
int wait(void);
|
||||
int pipe(int*);
|
||||
int write(int, void*, int);
|
||||
int read(int, void*, int);
|
||||
int close(int);
|
||||
int kill(int);
|
||||
int exec(char*, char**);
|
||||
int open(char*, int);
|
||||
int mknod(char*, short, short);
|
||||
int unlink(char*);
|
||||
int fstat(int fd, struct stat*);
|
||||
int link(char*, char*);
|
||||
int mkdir(char*);
|
||||
int chdir(char*);
|
||||
int dup(int);
|
||||
int dup2(int, int);
|
||||
int fcntl(int, int, int);
|
||||
long lseek(int, long, int);
|
||||
int getpid(void);
|
||||
char* sbrk(uint64);
|
||||
int sleep(int);
|
||||
int uptime(void);
|
||||
int vga_sync(void*);
|
||||
int getmouse(struct mouse_data*);
|
||||
int reboot(void);
|
||||
int shutdown(void);
|
||||
int sigfillset(sigset_t *set);
|
||||
int sigprocmask(int how, const sigset_t *set, sigset_t *oldset);
|
||||
int sigwait(const sigset_t *set, int *sig);
|
||||
int alarm(int seconds);
|
||||
int waitpid(int pid, int *status, int options);
|
||||
int setsid(void);
|
||||
void* mmap(void*, uint64, int, int, int, uint64);
|
||||
// Shared memory. shmat returns the attach address, or a small negative value
|
||||
// on failure — there is no errno in this runtime, so check for < 0.
|
||||
int shmget(int key, uint64 size, int flags);
|
||||
void* shmat(int id, void *addr, int flags);
|
||||
int shmdt(void *addr);
|
||||
int munmap(void*, uint64);
|
||||
int delete(char*);
|
||||
int show(char*);
|
||||
int showstat(char*, struct stat*);
|
||||
int ftruncate(int, int);
|
||||
int truncate(char*, int);
|
||||
int rename(const char*, const char*);
|
||||
int symlink(char*, char*);
|
||||
int readlink(char*, char*, int);
|
||||
int getuid(void);
|
||||
int geteuid(void);
|
||||
int nanosleep(void*);
|
||||
int mprotect(void*, uint64, int);
|
||||
int ioctl(int, uint64, void*);
|
||||
char* getcwd(char*, int);
|
||||
int arch_prctl(int, uint64);
|
||||
int set_tid_address(int*);
|
||||
int set_robust_list(void*, int);
|
||||
int futex(int*, int, int, void*, int*, int);
|
||||
int clone(uint64, void*, void*, void*, void*);
|
||||
void exit_group(int) __attribute__((noreturn));
|
||||
int wait4(int, int*, int, void*);
|
||||
int getgid(void);
|
||||
int getegid(void);
|
||||
int umask(int);
|
||||
int writev(int, void*, int);
|
||||
int readv(int, void*, int);
|
||||
void* brk(void*);
|
||||
int prlimit(int, int, void*, void*);
|
||||
int lstat(const char*, struct stat*);
|
||||
int access(const char*, int);
|
||||
int openat(int, const char*, int, ...);
|
||||
int fchdir(int);
|
||||
int enable_linux_abi(void);
|
||||
int getrlimit(int, void*);
|
||||
int setuid(int);
|
||||
int setgid(int);
|
||||
int getsid(int);
|
||||
int dup3(int, int, int);
|
||||
int pipe2(int*, int);
|
||||
int clock_gettime(int, void*);
|
||||
int getppid(void);
|
||||
int rt_sigaction(int, void*, void*, uint64);
|
||||
int mount(const char *src, const char *tgt, const char *fstype, uint64 flags, void *data);
|
||||
|
||||
// Sockets. `struct sockaddr` and the AF_*/SOCK_* constants are in socket.h;
|
||||
// include it as well as this header to use them.
|
||||
struct sockaddr;
|
||||
int socket(int domain, int type, int protocol);
|
||||
int bind(int fd, const struct sockaddr *addr, int addrlen);
|
||||
int listen(int fd, int backlog);
|
||||
int accept(int fd, struct sockaddr *addr, int *addrlen);
|
||||
int connect(int fd, const struct sockaddr *addr, int addrlen);
|
||||
int socketpair(int domain, int type, int protocol, int sv[2]);
|
||||
int sendto(int fd, const void *buf, int len, int flags, const struct sockaddr*, int);
|
||||
int recvfrom(int fd, void *buf, int len, int flags, struct sockaddr*, int*);
|
||||
int sockshutdown(int fd, int how);
|
||||
int setsockopt(int fd, int level, int opt, const void *val, int len);
|
||||
int getsockopt(int fd, int level, int opt, void *val, int *len);
|
||||
|
||||
// --- ulib.c ---
|
||||
int stat(const char*, struct stat*);
|
||||
char* gets(char*, int max);
|
||||
|
||||
#endif // USER_H
|
||||
Loading…
Reference in a new issue