1
- From 60f70d42c981a6c2645201d2d0997d48f91c53a0 Mon Sep 17 00:00:00 2001
1
+ From 7dcad7c2bed4388c7692eec9b5eac31bde1de439 Mon Sep 17 00:00:00 2001
2
2
From: Andy-Python-Programmer <
[email protected] >
3
3
Date: Thu, 10 Feb 2022 19:12:25 +1100
4
4
Subject: [PATCH] yes
5
5
6
6
Signed-off-by: Andy-Python-Programmer <
[email protected] >
7
7
---
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(-)
16
16
17
17
diff --git a/.gitignore b/.gitignore
18
18
index dbb35e8b..20c8d4c3 100644
@@ -118,7 +118,7 @@ index 7de909f5..8605e426 100644
118
118
#endif
119
119
} // namespace mlibc
120
120
diff --git a/sysdeps/aero/generic/filesystem.cpp b/sysdeps/aero/generic/filesystem.cpp
121
- index 6a13f19c..8f700a38 100644
121
+ index 6a13f19c..988190e2 100644
122
122
--- a/sysdeps/aero/generic/filesystem.cpp
123
123
+++ b/sysdeps/aero/generic/filesystem.cpp
124
124
@@ -1,3 +1,4 @@
@@ -158,7 +158,25 @@ index 6a13f19c..8f700a38 100644
158
158
return 0;
159
159
}
160
160
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,
162
180
auto entry = (struct aero_dir_entry *)buffer;
163
181
164
182
struct dirent dirent = {
@@ -173,7 +191,7 @@ index 6a13f19c..8f700a38 100644
173
191
};
174
192
175
193
// 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) {
177
195
}
178
196
179
197
int sys_rename(const char *path, const char *new_path) UNIMPLEMENTED("sys_rename")
@@ -192,15 +210,20 @@ index 6a13f19c..8f700a38 100644
192
210
193
211
int sys_dup(int fd, int flags, int *newfd) {
194
212
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,
196
214
const struct timespec *timeout, const sigset_t *sigmask,
197
215
int *num_events) {
198
216
mlibc::infoLogger() << "sys_pselect() is not implemented" << frg::endlog;
199
217
- *num_events = 10;
200
218
return 0;
201
219
}
202
220
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) {
204
227
205
228
return 0;
206
229
}
@@ -341,10 +364,10 @@ index e69de29b..b6b18fe7 100644
341
364
+ }
342
365
+ } // namespace mlibc
343
366
diff --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
345
368
--- a/sysdeps/aero/include/aero/syscall.h
346
369
+++ b/sysdeps/aero/include/aero/syscall.h
347
- @@ -49,6 +49,20 @@
370
+ @@ -49,6 +49,21 @@
348
371
#define SYS_DUP 42
349
372
#define SYS_FCNTL 43
350
373
#define SYS_DUP2 44
@@ -360,8 +383,9 @@ index 07b1b51b..4576d268 100644
360
383
+ #define SYS_EPOLL_CTL 54
361
384
+ #define SYS_EVENT_FD 55
362
385
+ #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
365
389
366
390
// Invalid syscall used to trigger a log error in the kernel (as a hint)
367
391
// so, that we can implement the syscall in the kernel.
0 commit comments