@@ -31,7 +31,7 @@ use crate::userland::scheduler;
31
31
use crate :: fs:: Path ;
32
32
use crate :: utils:: downcast;
33
33
34
- #[ aero_proc :: syscall]
34
+ #[ syscall]
35
35
pub fn write ( fd : usize , buffer : & [ u8 ] ) -> Result < usize , AeroSyscallError > {
36
36
let handle = scheduler:: get_scheduler ( )
37
37
. current_task ( )
@@ -49,7 +49,7 @@ pub fn write(fd: usize, buffer: &[u8]) -> Result<usize, AeroSyscallError> {
49
49
}
50
50
}
51
51
52
- #[ aero_proc :: syscall]
52
+ #[ syscall]
53
53
pub fn read ( fd : usize , buffer : & mut [ u8 ] ) -> Result < usize , AeroSyscallError > {
54
54
let handle = scheduler:: get_scheduler ( )
55
55
. current_task ( )
@@ -67,7 +67,7 @@ pub fn read(fd: usize, buffer: &mut [u8]) -> Result<usize, AeroSyscallError> {
67
67
}
68
68
}
69
69
70
- #[ aero_proc :: syscall]
70
+ #[ syscall]
71
71
pub fn open ( _fd : usize , path : & Path , mode : usize ) -> Result < usize , AeroSyscallError > {
72
72
let mut flags = OpenFlags :: from_bits ( mode) . ok_or ( AeroSyscallError :: EINVAL ) ?;
73
73
@@ -97,15 +97,15 @@ pub fn open(_fd: usize, path: &Path, mode: usize) -> Result<usize, AeroSyscallEr
97
97
. open_file ( inode, flags) ?)
98
98
}
99
99
100
- #[ aero_proc :: syscall]
100
+ #[ syscall]
101
101
pub fn dup ( fd : usize , flags : usize ) -> Result < usize , AeroSyscallError > {
102
102
let task = scheduler:: get_scheduler ( ) . current_task ( ) ;
103
103
let flags = OpenFlags :: from_bits ( flags) . ok_or ( AeroSyscallError :: EINVAL ) ? & OpenFlags :: O_CLOEXEC ;
104
104
105
105
task. file_table . duplicate ( fd, DuplicateHint :: Any , flags)
106
106
}
107
107
108
- #[ aero_proc :: syscall]
108
+ #[ syscall]
109
109
pub fn dup2 ( fd : usize , new_fd : usize , flags : usize ) -> Result < usize , AeroSyscallError > {
110
110
let task = scheduler:: get_scheduler ( ) . current_task ( ) ;
111
111
let flags = OpenFlags :: from_bits ( flags) . ok_or ( AeroSyscallError :: EINVAL ) ? & OpenFlags :: O_CLOEXEC ;
@@ -114,7 +114,7 @@ pub fn dup2(fd: usize, new_fd: usize, flags: usize) -> Result<usize, AeroSyscall
114
114
. duplicate ( fd, DuplicateHint :: Exact ( new_fd) , flags)
115
115
}
116
116
117
- #[ aero_proc :: syscall]
117
+ #[ syscall]
118
118
pub fn getdents ( fd : usize , buffer : & mut [ u8 ] ) -> Result < usize , AeroSyscallError > {
119
119
let handle = scheduler:: get_scheduler ( )
120
120
. current_task ( )
@@ -125,7 +125,7 @@ pub fn getdents(fd: usize, buffer: &mut [u8]) -> Result<usize, AeroSyscallError>
125
125
Ok ( handle. get_dents ( buffer) ?)
126
126
}
127
127
128
- #[ aero_proc :: syscall]
128
+ #[ syscall]
129
129
pub fn close ( fd : usize ) -> Result < usize , AeroSyscallError > {
130
130
let res = scheduler:: get_scheduler ( )
131
131
. current_task ( )
@@ -140,7 +140,7 @@ pub fn close(fd: usize) -> Result<usize, AeroSyscallError> {
140
140
}
141
141
}
142
142
143
- #[ aero_proc :: syscall]
143
+ #[ syscall]
144
144
pub fn chdir ( path : & str ) -> Result < usize , AeroSyscallError > {
145
145
let inode = fs:: lookup_path ( Path :: new ( path) ) ?;
146
146
@@ -153,7 +153,7 @@ pub fn chdir(path: &str) -> Result<usize, AeroSyscallError> {
153
153
Ok ( 0x00 )
154
154
}
155
155
156
- #[ aero_proc :: syscall]
156
+ #[ syscall]
157
157
pub fn mkdirat ( dfd : usize , path : & Path ) -> Result < usize , AeroSyscallError > {
158
158
// NOTE: If the pathname given in pathname is relative, then it is interpreted
159
159
// relative to the directory referred to by the file descriptor (rather than relative
@@ -194,7 +194,7 @@ pub fn mkdirat(dfd: usize, path: &Path) -> Result<usize, AeroSyscallError> {
194
194
Ok ( 0x00 )
195
195
}
196
196
197
- #[ aero_proc :: syscall]
197
+ #[ syscall]
198
198
pub fn rmdir ( path : & str ) -> Result < usize , AeroSyscallError > {
199
199
let path = Path :: new ( path) ;
200
200
@@ -212,15 +212,15 @@ pub fn rmdir(path: &str) -> Result<usize, AeroSyscallError> {
212
212
Ok ( 0x00 )
213
213
}
214
214
215
- #[ aero_proc :: syscall]
215
+ #[ syscall]
216
216
pub fn getcwd ( buffer : & mut [ u8 ] ) -> Result < usize , AeroSyscallError > {
217
217
let cwd = scheduler:: get_scheduler ( ) . current_task ( ) . get_cwd ( ) ;
218
218
219
219
buffer[ ..cwd. len ( ) ] . copy_from_slice ( cwd. as_bytes ( ) ) ;
220
220
Ok ( cwd. len ( ) )
221
221
}
222
222
223
- #[ aero_proc :: syscall]
223
+ #[ syscall]
224
224
pub fn ioctl ( fd : usize , command : usize , argument : usize ) -> Result < usize , AeroSyscallError > {
225
225
let handle = scheduler:: get_scheduler ( )
226
226
. current_task ( )
@@ -231,7 +231,7 @@ pub fn ioctl(fd: usize, command: usize, argument: usize) -> Result<usize, AeroSy
231
231
Ok ( handle. inode ( ) . ioctl ( command, argument) ?)
232
232
}
233
233
234
- #[ aero_proc :: syscall]
234
+ #[ syscall]
235
235
pub fn seek ( fd : usize , offset : usize , whence : usize ) -> Result < usize , AeroSyscallError > {
236
236
let handle = scheduler:: get_scheduler ( )
237
237
. current_task ( )
@@ -242,7 +242,7 @@ pub fn seek(fd: usize, offset: usize, whence: usize) -> Result<usize, AeroSyscal
242
242
Ok ( handle. seek ( offset as isize , aero_syscall:: SeekWhence :: from ( whence) ) ?)
243
243
}
244
244
245
- #[ aero_proc :: syscall]
245
+ #[ syscall]
246
246
pub fn pipe ( fds : & mut [ usize ; 2 ] , flags : usize ) -> Result < usize , AeroSyscallError > {
247
247
let flags = OpenFlags :: from_bits ( flags) . ok_or ( AeroSyscallError :: EINVAL ) ?;
248
248
let pipe = Pipe :: new ( ) ;
@@ -274,7 +274,7 @@ pub fn pipe(fds: &mut [usize; 2], flags: usize) -> Result<usize, AeroSyscallErro
274
274
Ok ( 0x00 )
275
275
}
276
276
277
- #[ aero_proc :: syscall]
277
+ #[ syscall]
278
278
pub fn unlink ( fd : usize , path : & Path , flags : usize ) -> Result < usize , AeroSyscallError > {
279
279
// TODO: Make use of the open flags.
280
280
let _flags = OpenFlags :: from_bits ( flags) . ok_or ( AeroSyscallError :: EINVAL ) ?;
@@ -298,7 +298,7 @@ pub fn unlink(fd: usize, path: &Path, flags: usize) -> Result<usize, AeroSyscall
298
298
Ok ( 0x00 )
299
299
}
300
300
301
- #[ aero_proc :: syscall]
301
+ #[ syscall]
302
302
pub fn access (
303
303
fd : usize ,
304
304
path : & Path ,
@@ -314,7 +314,7 @@ pub fn access(
314
314
}
315
315
}
316
316
317
- #[ aero_proc :: syscall]
317
+ #[ syscall]
318
318
pub fn fcntl ( fd : usize , command : usize , arg : usize ) -> Result < usize , AeroSyscallError > {
319
319
let handle = scheduler:: get_scheduler ( )
320
320
. current_task ( )
@@ -361,7 +361,7 @@ pub fn fcntl(fd: usize, command: usize, arg: usize) -> Result<usize, AeroSyscall
361
361
}
362
362
}
363
363
364
- #[ aero_proc :: syscall]
364
+ #[ syscall]
365
365
pub fn fstat ( fd : usize , stat : & mut Stat ) -> Result < usize , AeroSyscallError > {
366
366
let file = scheduler:: get_scheduler ( )
367
367
. current_task ( )
@@ -374,7 +374,7 @@ pub fn fstat(fd: usize, stat: &mut Stat) -> Result<usize, AeroSyscallError> {
374
374
Ok ( 0 )
375
375
}
376
376
377
- #[ aero_proc :: syscall]
377
+ #[ syscall]
378
378
pub fn stat ( path : & Path , stat : & mut Stat ) -> Result < usize , AeroSyscallError > {
379
379
let file = fs:: lookup_path ( path) ?;
380
380
@@ -383,32 +383,31 @@ pub fn stat(path: &Path, stat: &mut Stat) -> Result<usize, AeroSyscallError> {
383
383
Ok ( 0 )
384
384
}
385
385
386
- #[ aero_proc :: syscall]
386
+ #[ syscall]
387
387
pub fn read_link ( path : & Path , _buffer : & mut [ u8 ] ) -> Result < usize , AeroSyscallError > {
388
388
log:: warn!( "read_link: is a stub! (path={path:?})" ) ;
389
389
390
390
Err ( AeroSyscallError :: EINVAL )
391
391
}
392
392
393
393
/// Returns a file descriptor referring to the new epoll instance.
394
- #[ aero_proc :: syscall]
394
+ #[ syscall]
395
395
pub fn epoll_create ( flags : usize ) -> Result < usize , AeroSyscallError > {
396
396
let _flags = EPollFlags :: from_bits ( flags) . ok_or ( AeroSyscallError :: EINVAL ) ?;
397
397
398
398
let epoll_file = EPoll :: new ( ) ;
399
399
let entry = DirEntry :: from_inode ( epoll_file) ;
400
400
401
- let current_task = scheduler:: get_scheduler ( ) . current_task ( ) ;
402
-
403
- Ok ( current_task
401
+ Ok ( scheduler:: get_scheduler ( )
402
+ . current_task ( )
404
403
. file_table
405
404
. open_file ( entry, OpenFlags :: O_RDWR ) ?)
406
405
}
407
406
408
407
/// Used to add, modify, or remove entries in the interest list of the
409
408
/// epoll instance referred to by the file descriptor. It requests that
410
409
/// the operation be performed for the target file descriptor.
411
- #[ aero_proc :: syscall]
410
+ #[ syscall]
412
411
pub fn epoll_ctl (
413
412
epfd : usize ,
414
413
mode : usize ,
@@ -434,7 +433,7 @@ pub fn epoll_ctl(
434
433
}
435
434
}
436
435
437
- #[ aero_proc :: syscall]
436
+ #[ syscall]
438
437
pub fn event_fd ( _initval : usize , flags : usize ) -> Result < usize , AeroSyscallError > {
439
438
let flags = EventFdFlags :: from_bits ( flags) . ok_or ( AeroSyscallError :: EINVAL ) ?;
440
439
assert ! ( !flags. contains( EventFdFlags :: SEMAPHORE ) ) ; // todo: implement event fd semaphore support.
0 commit comments