1
+ use crate :: Kernel ;
1
2
use crate :: pcpu:: Pcpu ;
2
3
use crate :: thread:: Thread ;
3
4
use crate :: uio:: { IoVec , Uio , UioSeg } ;
4
- use crate :: Kernel ;
5
5
use bitflags:: bitflags;
6
6
use core:: ffi:: { c_char, c_int} ;
7
7
use core:: marker:: PhantomData ;
@@ -21,13 +21,13 @@ pub unsafe fn openat<K: Kernel>(
21
21
mode : c_int ,
22
22
) -> Result < OwnedFd < K > , NonZero < c_int > > {
23
23
let td = K :: Pcpu :: curthread ( ) ;
24
- let errno = kern. kern_openat ( td, fd, path, seg, flags, mode) ;
24
+ let errno = unsafe { kern. kern_openat ( td, fd, path, seg, flags, mode) } ;
25
25
26
26
match NonZero :: new ( errno) {
27
27
Some ( v) => Err ( v) ,
28
28
None => Ok ( OwnedFd {
29
29
kern,
30
- fd : ( * td) . ret ( 0 ) . try_into ( ) . unwrap ( ) ,
30
+ fd : unsafe { ( * td) . ret ( 0 ) . try_into ( ) . unwrap ( ) } ,
31
31
phantom : PhantomData ,
32
32
} ) ,
33
33
}
@@ -43,7 +43,7 @@ pub unsafe fn write_all<K: Kernel>(
43
43
td : * mut K :: Thread ,
44
44
) -> Result < ( ) , NonZero < c_int > > {
45
45
while !data. is_empty ( ) {
46
- let written = match write ( kern, fd, data, td) {
46
+ let written = match unsafe { write ( kern, fd, data, td) } {
47
47
Ok ( v) => v,
48
48
Err ( e) if e == K :: EINTR => continue ,
49
49
Err ( e) => return Err ( e) ,
@@ -75,12 +75,12 @@ pub unsafe fn write<K: Kernel>(
75
75
} ;
76
76
77
77
// Write.
78
- let mut uio = K :: Uio :: write ( & mut vec, td) . unwrap ( ) ;
79
- let errno = kern. kern_writev ( td, fd, & mut uio) ;
78
+ let mut uio = unsafe { K :: Uio :: write ( & mut vec, td) . unwrap ( ) } ;
79
+ let errno = unsafe { kern. kern_writev ( td, fd, & mut uio) } ;
80
80
81
81
match NonZero :: new ( errno) {
82
82
Some ( v) => Err ( v) ,
83
- None => Ok ( ( * td) . ret ( 0 ) ) ,
83
+ None => Ok ( unsafe { ( * td) . ret ( 0 ) } ) ,
84
84
}
85
85
}
86
86
0 commit comments