1
- use crate :: errno:: { Errno , EINTR , EIO } ;
1
+ use crate :: errno:: Errno ;
2
2
use crate :: pcpu:: Pcpu ;
3
3
use crate :: thread:: Thread ;
4
4
use crate :: uio:: { IoVec , Uio , UioRw , UioSeg } ;
5
5
use crate :: Kernel ;
6
6
use bitflags:: bitflags;
7
7
use core:: ffi:: { c_char, c_int} ;
8
8
use core:: marker:: PhantomData ;
9
+ use core:: num:: NonZero ;
9
10
10
11
pub const AT_FDCWD : c_int = -100 ;
11
12
@@ -42,16 +43,16 @@ pub unsafe fn write_all<K: Kernel>(
42
43
mut data : & [ u8 ] ,
43
44
seg : UioSeg ,
44
45
td : * mut K :: Thread ,
45
- ) -> Result < ( ) , Errno > {
46
+ ) -> Result < ( ) , NonZero < c_int > > {
46
47
while !data. is_empty ( ) {
47
48
let written = match write ( kern, fd, data, seg, td) {
48
49
Ok ( v) => v,
49
- Err ( EINTR ) => continue ,
50
+ Err ( e ) if e == K :: EINTR => continue ,
50
51
Err ( e) => return Err ( e) ,
51
52
} ;
52
53
53
54
if written == 0 {
54
- return Err ( EIO ) ;
55
+ return Err ( K :: EIO ) ;
55
56
}
56
57
57
58
data = & data[ written..] ;
@@ -69,7 +70,7 @@ pub unsafe fn write<K: Kernel>(
69
70
data : & [ u8 ] ,
70
71
seg : UioSeg ,
71
72
td : * mut K :: Thread ,
72
- ) -> Result < usize , Errno > {
73
+ ) -> Result < usize , NonZero < c_int > > {
73
74
// Setup iovec.
74
75
let mut vec = IoVec {
75
76
ptr : data. as_ptr ( ) . cast_mut ( ) ,
@@ -80,7 +81,7 @@ pub unsafe fn write<K: Kernel>(
80
81
let mut uio = K :: Uio :: new ( td, UioRw :: Write , seg, & mut vec, 1 ) . unwrap ( ) ;
81
82
let errno = kern. kern_writev ( td, fd, & mut uio) ;
82
83
83
- match Errno :: new ( errno) {
84
+ match NonZero :: new ( errno) {
84
85
Some ( v) => Err ( v) ,
85
86
None => Ok ( ( * td) . ret ( 0 ) ) ,
86
87
}
0 commit comments