@@ -42,7 +42,7 @@ impl Drop for FileDescriptor {
42
42
#[ derive( Debug ) ]
43
43
struct InAddr {
44
44
/// IP address with big endian
45
- s_addr : u32
45
+ s_addr : u32 ,
46
46
}
47
47
48
48
impl InAddr {
@@ -86,15 +86,15 @@ extern "C" {
86
86
flags : u32 ,
87
87
dest_addr : & SockAddr ,
88
88
addrlen : usize ,
89
- ) -> usize ;
90
- fn _sys_recvfrom (
89
+ ) -> i64 ;
90
+ fn sys_recvfrom (
91
91
sockfd : u32 ,
92
92
buf : * mut u8 ,
93
93
len : usize ,
94
94
flags : u32 ,
95
95
src_addr : & mut SockAddr ,
96
96
addrlen : usize ,
97
- ) -> usize ;
97
+ ) -> i64 ;
98
98
fn sys_exit ( code : i32 ) -> !;
99
99
pub fn sys_getdents64 ( fd : u32 , buf : * mut u8 , buf_size : usize ) -> i32 ;
100
100
}
@@ -154,24 +154,43 @@ pub fn free_page(addr: *mut u8) -> i32 {
154
154
}
155
155
156
156
pub fn socket ( domain : u32 , socket_type : u32 , protocol : u32 ) -> Option < FileDescriptor > {
157
- let fd = unsafe { sys_socket ( domain, socket_type, protocol) } ;
157
+ let fd = unsafe { sys_socket ( domain, socket_type, protocol) } ;
158
158
if fd < 0 {
159
159
None
160
160
} else {
161
161
Some ( FileDescriptor { fd } )
162
162
}
163
163
}
164
164
165
- pub fn sendto ( sockfd : & FileDescriptor , buf : & mut String , flags : u32 , dest_addr : & SockAddr ) -> usize {
165
+ pub fn sendto ( sockfd : & FileDescriptor , buf : & mut String , flags : u32 , dest_addr : & SockAddr ) -> i64 {
166
166
unsafe {
167
- sys_sendto ( sockfd. fd as u32 , buf. as_bytes_mut ( ) . as_mut_ptr ( ) , buf. len ( ) , flags, dest_addr, 0 )
167
+ sys_sendto (
168
+ sockfd. fd as u32 ,
169
+ buf. as_mut_ptr ( ) ,
170
+ buf. len ( ) ,
171
+ flags,
172
+ dest_addr,
173
+ 0 ,
174
+ )
168
175
}
169
176
}
170
177
171
- fn _recvfrom ( sockfd : & FileDescriptor , buf : & mut String , flags : u32 , src_addr : & mut SockAddr ) -> usize {
178
+ pub fn recvfrom (
179
+ sockfd : & FileDescriptor ,
180
+ buf : & mut [ u8 ] ,
181
+ flags : u32 ,
182
+ src_addr : & mut SockAddr ,
183
+ ) -> i64 {
172
184
let len = buf. len ( ) ;
173
185
unsafe {
174
- _sys_recvfrom ( sockfd. fd as u32 , buf. as_bytes_mut ( ) . as_mut_ptr ( ) , len, flags, src_addr, 0 )
186
+ sys_recvfrom (
187
+ sockfd. fd as u32 ,
188
+ buf. as_mut_ptr ( ) ,
189
+ len,
190
+ flags,
191
+ src_addr,
192
+ 0 ,
193
+ )
175
194
}
176
195
}
177
196
0 commit comments