almost got the term emu working and shell
This commit is contained in:
@@ -7,9 +7,14 @@
|
||||
#define SYS_EXIT 1
|
||||
#define SYS_READ 3
|
||||
#define SYS_WRITE 4
|
||||
#define SYS_OPEN 5
|
||||
#define SYS_CLOSE 6
|
||||
#define SYS_PTY 20
|
||||
#define SYS_FORK 21
|
||||
#define SYS_EXEC 22
|
||||
#define SYS_DUP2 23
|
||||
|
||||
int open(const char* path);
|
||||
int write(int fd, const void *buf, size_t count);
|
||||
int read(int fd, void *buf, size_t count);
|
||||
int close(int fd);
|
||||
@@ -22,6 +27,9 @@ void *sbrk(intptr_t increment);
|
||||
int brk(void *addr);
|
||||
|
||||
int pty(int* slave);
|
||||
|
||||
int fork();
|
||||
int exec(const char* path);
|
||||
int dup2(int src, int dst);
|
||||
|
||||
#endif
|
||||
@@ -27,6 +27,10 @@ void exit(int status) {
|
||||
while(1);
|
||||
}
|
||||
|
||||
int open(const char* path) {
|
||||
return syscall1(SYS_OPEN, (uint32_t)path);
|
||||
}
|
||||
|
||||
int write(int fd, const void* buf, size_t cnt) {
|
||||
return syscall3(SYS_WRITE, (uint32_t)fd, (uint32_t)buf, (uint32_t)cnt);
|
||||
}
|
||||
@@ -35,10 +39,22 @@ int read(int fd, void* buf, size_t cnt) {
|
||||
return syscall3(SYS_READ, (uint32_t)fd, (uint32_t)buf, (uint32_t)cnt);
|
||||
}
|
||||
|
||||
int close(int fd) {
|
||||
return syscall1(SYS_CLOSE, fd);
|
||||
}
|
||||
|
||||
int pty(int* slave) {
|
||||
return syscall1(SYS_PTY, (uint32_t)slave);
|
||||
}
|
||||
|
||||
int fork() {
|
||||
return syscall1(SYS_FORK, 0);
|
||||
}
|
||||
|
||||
int exec(const char* path) {
|
||||
return syscall1(SYS_EXEC, (uint32_t)path);
|
||||
}
|
||||
|
||||
int dup2(int src, int dst) {
|
||||
return syscall3(SYS_DUP2, src, dst, 0);
|
||||
}
|
||||
Reference in New Issue
Block a user