Redo networking (#22)
* Rewriting network functions * Add buffer to dup Fix non-blocking handling by triggering once on enabling events to read to EOF * Modifications for UDP API * Implement TCP client side * Add active close * Add DMAR parser * Implement basic TCP listening. Need to improve the state machine * Reduce debugging * Fixes for close procedure * Updates to fix path processing in libstd
This commit is contained in:
parent
268c859fd6
commit
2491e4771e
54 changed files with 1884 additions and 1476 deletions
|
@ -52,10 +52,14 @@ fn main() {
|
|||
let mut event = Event::default();
|
||||
event_file.read(&mut event).expect("ahcid: failed to read event file");
|
||||
if event.id == socket_fd {
|
||||
let mut packet = Packet::default();
|
||||
socket.read(&mut packet).expect("ahcid: failed to read disk scheme");
|
||||
scheme.handle(&mut packet);
|
||||
socket.write(&mut packet).expect("ahcid: failed to write disk scheme");
|
||||
loop {
|
||||
let mut packet = Packet::default();
|
||||
if socket.read(&mut packet).expect("ahcid: failed to read disk scheme") == 0 {
|
||||
break;
|
||||
}
|
||||
scheme.handle(&mut packet);
|
||||
socket.write(&mut packet).expect("ahcid: failed to write disk scheme");
|
||||
}
|
||||
} else if event.id == irq_fd {
|
||||
let mut irq = [0; 8];
|
||||
if irq_file.read(&mut irq).expect("ahcid: failed to read irq file") >= irq.len() {
|
||||
|
|
|
@ -47,7 +47,7 @@ impl Scheme for DiskScheme {
|
|||
}
|
||||
}
|
||||
|
||||
fn dup(&self, id: usize) -> Result<usize> {
|
||||
fn dup(&self, id: usize, _buf: &[u8]) -> Result<usize> {
|
||||
let mut handles = self.handles.lock();
|
||||
let new_handle = {
|
||||
let handle = handles.get(&id).ok_or(Error::new(EBADF))?;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue