File tree 3 files changed +19
-3
lines changed
library/std/src/sys/pal/hermit
3 files changed +19
-3
lines changed Original file line number Diff line number Diff line change 2
2
3
3
use super :: hermit_abi;
4
4
use crate :: cmp;
5
- use crate :: io:: { self , IoSlice , IoSliceMut } ;
5
+ use crate :: io:: { self , BorrowedCursor , IoSlice , IoSliceMut } ;
6
6
use crate :: os:: hermit:: io:: { FromRawFd , OwnedFd , RawFd , * } ;
7
7
use crate :: sys:: cvt;
8
8
use crate :: sys_common:: { AsInner , FromInner , IntoInner } ;
@@ -23,6 +23,18 @@ impl FileDesc {
23
23
Ok ( result as usize )
24
24
}
25
25
26
+ pub fn read_buf ( & self , mut buf : BorrowedCursor < ' _ > ) -> io:: Result < ( ) > {
27
+ let result = cvt ( unsafe {
28
+ hermit_abi:: read (
29
+ self . fd . as_raw_fd ( ) ,
30
+ buf. as_mut ( ) . as_mut_ptr ( ) as * mut u8 ,
31
+ buf. capacity ( ) ,
32
+ )
33
+ } ) ?;
34
+ unsafe { buf. advance_unchecked ( result as usize ) } ;
35
+ Ok ( ( ) )
36
+ }
37
+
26
38
pub fn read_vectored ( & self , bufs : & mut [ IoSliceMut < ' _ > ] ) -> io:: Result < usize > {
27
39
let ret = cvt ( unsafe {
28
40
hermit_abi:: readv (
Original file line number Diff line number Diff line change @@ -400,7 +400,7 @@ impl File {
400
400
}
401
401
402
402
pub fn read_buf ( & self , cursor : BorrowedCursor < ' _ > ) -> io:: Result < ( ) > {
403
- crate :: io :: default_read_buf ( |buf| self . read ( buf ) , cursor)
403
+ self . 0 . read_buf ( cursor)
404
404
}
405
405
406
406
pub fn write ( & self , buf : & [ u8 ] ) -> io:: Result < usize > {
Original file line number Diff line number Diff line change 1
1
use super :: hermit_abi;
2
2
use crate :: io;
3
- use crate :: io:: { IoSlice , IoSliceMut } ;
3
+ use crate :: io:: { BorrowedCursor , IoSlice , IoSliceMut } ;
4
4
use crate :: mem:: ManuallyDrop ;
5
5
use crate :: os:: hermit:: io:: FromRawFd ;
6
6
use crate :: sys:: fd:: FileDesc ;
@@ -20,6 +20,10 @@ impl io::Read for Stdin {
20
20
unsafe { ManuallyDrop :: new ( FileDesc :: from_raw_fd ( hermit_abi:: STDIN_FILENO ) ) . read ( buf) }
21
21
}
22
22
23
+ fn read_buf ( & mut self , buf : BorrowedCursor < ' _ > ) -> io:: Result < ( ) > {
24
+ unsafe { ManuallyDrop :: new ( FileDesc :: from_raw_fd ( hermit_abi:: STDIN_FILENO ) ) . read_buf ( buf) }
25
+ }
26
+
23
27
fn read_vectored ( & mut self , bufs : & mut [ IoSliceMut < ' _ > ] ) -> io:: Result < usize > {
24
28
unsafe {
25
29
ManuallyDrop :: new ( FileDesc :: from_raw_fd ( hermit_abi:: STDIN_FILENO ) ) . read_vectored ( bufs)
You can’t perform that action at this time.
0 commit comments