1- From 60f70d42c981a6c2645201d2d0997d48f91c53a0 Mon Sep 17 00:00:00 2001
1+ From 7dcad7c2bed4388c7692eec9b5eac31bde1de439 Mon Sep 17 00:00:00 2001
22From: Andy-Python-Programmer <andypythonappdeveloper@gmail.com>
33Date: Thu, 10 Feb 2022 19:12:25 +1100
44Subject: [PATCH] yes
55
66Signed-off-by: Andy-Python-Programmer <andypythonappdeveloper@gmail.com>
77---
8- .gitignore | 3 +
9- options/rtdl/generic/linker.cpp | 2 +-
10- sysdeps/aero/generic/aero.cpp | 40 +++++++++- --
11- sysdeps/aero/generic/filesystem.cpp | 97 + +++++++++++++++++++++++++---
12- sysdeps/aero/generic/signals.cpp | 8 + +-
13- sysdeps/aero/generic/sockets.cpp | 59 +++ +++++++++++++++
14- sysdeps/aero/include/aero/syscall.h | 14 + ++++
15- 7 files changed, 205 insertions(+), 18 deletions(-)
8+ .gitignore | 3 +
9+ options/rtdl/generic/linker.cpp | 2 +-
10+ sysdeps/aero/generic/aero.cpp | 40 ++++++++--
11+ sysdeps/aero/generic/filesystem.cpp | 110 +++++++++++++++++++++++++---
12+ sysdeps/aero/generic/signals.cpp | 8 +-
13+ sysdeps/aero/generic/sockets.cpp | 59 +++++++++++++++
14+ sysdeps/aero/include/aero/syscall.h | 15 ++++
15+ 7 files changed, 217 insertions(+), 20 deletions(-)
1616
1717diff --git a/.gitignore b/.gitignore
1818index dbb35e8b..20c8d4c3 100644
@@ -118,7 +118,7 @@ index 7de909f5..8605e426 100644
118118 #endif
119119 } // namespace mlibc
120120diff --git a/sysdeps/aero/generic/filesystem.cpp b/sysdeps/aero/generic/filesystem.cpp
121- index 6a13f19c..8f700a38 100644
121+ index 6a13f19c..988190e2 100644
122122--- a/sysdeps/aero/generic/filesystem.cpp
123123+++ b/sysdeps/aero/generic/filesystem.cpp
124124@@ -1,3 +1,4 @@
@@ -158,7 +158,25 @@ index 6a13f19c..8f700a38 100644
158158 return 0;
159159 }
160160
161- @@ -192,10 +213,10 @@ int sys_read_entries(int handle, void *buffer, size_t max_size,
161+ @@ -153,7 +174,16 @@ int sys_mkdir(const char *path) {
162+ }
163+
164+ int sys_rmdir(const char *path) UNIMPLEMENTED("sys_rmdir")
165+ - int sys_link(const char *srcpath, const char *destpath) UNIMPLEMENTED("sys_link")
166+ +
167+ + int sys_link(const char *srcpath, const char *destpath) {
168+ + auto result = syscall(SYS_LINK, srcpath, strlen(srcpath), destpath, strlen(destpath));
169+ +
170+ + if (result < 0) {
171+ + return -result;
172+ + }
173+ +
174+ + return 0;
175+ + }
176+
177+ int sys_unlinkat(int fd, const char *path, int flags) {
178+ auto result = syscall(SYS_UNLINK, fd, path, strlen(path), flags);
179+ @@ -192,10 +222,10 @@ int sys_read_entries(int handle, void *buffer, size_t max_size,
162180 auto entry = (struct aero_dir_entry *)buffer;
163181
164182 struct dirent dirent = {
@@ -173,7 +191,7 @@ index 6a13f19c..8f700a38 100644
173191 };
174192
175193 // The reclen is the size of the dirent struct, plus the size of the name.
176- @@ -214,7 +235 ,17 @@ int sys_open_dir(const char *path, int *handle) {
194+ @@ -214,7 +244 ,17 @@ int sys_open_dir(const char *path, int *handle) {
177195 }
178196
179197 int sys_rename(const char *path, const char *new_path) UNIMPLEMENTED("sys_rename")
@@ -192,15 +210,20 @@ index 6a13f19c..8f700a38 100644
192210
193211 int sys_dup(int fd, int flags, int *newfd) {
194212 auto result = syscall(SYS_DUP, fd, flags);
195- @@ -252,7 +283,6 @@ int sys_pselect(int nfds, fd_set *readfds, fd_set *writefds, fd_set *exceptfds,
213+ @@ -252,11 +292,10 @@ int sys_pselect(int nfds, fd_set *readfds, fd_set *writefds, fd_set *exceptfds,
196214 const struct timespec *timeout, const sigset_t *sigmask,
197215 int *num_events) {
198216 mlibc::infoLogger() << "sys_pselect() is not implemented" << frg::endlog;
199217- *num_events = 10;
200218 return 0;
201219 }
202220
203- @@ -267,4 +297,55 @@ int sys_pipe(int *fds, int flags) {
221+ - int sys_chmod(const char *pathname, mode_t mode) UNIMPLEMENTED("sys_chmod")
222+ + // int sys_chmod(const char *pathname, mode_t mode) UNIMPLEMENTED("sys_chmod")
223+
224+ int sys_pipe(int *fds, int flags) {
225+ auto result = syscall(SYS_PIPE, fds, flags);
226+ @@ -267,4 +306,55 @@ int sys_pipe(int *fds, int flags) {
204227
205228 return 0;
206229 }
@@ -341,10 +364,10 @@ index e69de29b..b6b18fe7 100644
341364+ }
342365+ } // namespace mlibc
343366diff --git a/sysdeps/aero/include/aero/syscall.h b/sysdeps/aero/include/aero/syscall.h
344- index 07b1b51b..4576d268 100644
367+ index 07b1b51b..12f8dc61 100644
345368--- a/sysdeps/aero/include/aero/syscall.h
346369+++ b/sysdeps/aero/include/aero/syscall.h
347- @@ -49,6 +49,20 @@
370+ @@ -49,6 +49,21 @@
348371 #define SYS_DUP 42
349372 #define SYS_FCNTL 43
350373 #define SYS_DUP2 44
@@ -360,8 +383,9 @@ index 07b1b51b..4576d268 100644
360383+ #define SYS_EPOLL_CTL 54
361384+ #define SYS_EVENT_FD 55
362385+ #define SYS_KILL 56
363- + #define SYS_FUTEX_WAIT 59
364- + #define SYS_FUTEX_WAKE 60
386+ + #define SYS_FUTEX_WAIT 57
387+ + #define SYS_FUTEX_WAKE 58
388+ + #define SYS_LINK 59
365389
366390 // Invalid syscall used to trigger a log error in the kernel (as a hint)
367391 // so, that we can implement the syscall in the kernel.
0 commit comments