Add rtl8168 driver, make drivers use O_NONBLOCK
This commit is contained in:
parent
3169f7ba45
commit
a2ef986edd
5 changed files with 392 additions and 6 deletions
|
@ -8,7 +8,7 @@ use std::cell::RefCell;
|
|||
use std::{env, thread};
|
||||
use std::fs::File;
|
||||
use std::io::{Read, Write, Result};
|
||||
use std::os::unix::io::AsRawFd;
|
||||
use std::os::unix::io::{AsRawFd, FromRawFd};
|
||||
use std::sync::Arc;
|
||||
|
||||
use event::EventQueue;
|
||||
|
@ -32,7 +32,8 @@ fn main() {
|
|||
asm!("cli" :::: "intel", "volatile");
|
||||
}
|
||||
|
||||
let socket = Arc::new(RefCell::new(File::create(":network").expect("e1000d: failed to create network scheme")));
|
||||
let socket_fd = syscall::open(":network", syscall::O_RDWR | syscall::O_CREAT | syscall::O_NONBLOCK).expect("e1000d: failed to create network scheme");
|
||||
let socket = Arc::new(RefCell::new(unsafe { File::from_raw_fd(socket_fd) }));
|
||||
|
||||
let address = unsafe { syscall::physmap(bar, 128*1024, MAP_WRITE).expect("e1000d: failed to map address") };
|
||||
{
|
||||
|
@ -69,7 +70,6 @@ fn main() {
|
|||
Ok(None)
|
||||
}).expect("e1000d: failed to catch events on IRQ file");
|
||||
|
||||
let socket_fd = socket.borrow().as_raw_fd();
|
||||
event_queue.add(socket_fd, move |_count: usize| -> Result<Option<()>> {
|
||||
let mut packet = Packet::default();
|
||||
socket.borrow_mut().read(&mut packet)?;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue