* Port previous ethernet scheme * Add ipd * Fix initfs rebuilds, use QEMU user networking addresses in ipd * Add tcp/udp, netutils, dns, and network config * Add fsync to network driver * Add dns, router, subnet by default * Fix e1000 driver. Make ethernet and IP non-blocking to avoid deadlocks * Add orbital server, WIP * Add futex * Add orbutils and orbital * Update libstd, orbutils, and orbital Move ANSI key encoding to vesad * Add orbital assets * Update orbital * Update to add login manager * Add blocking primitives, block for most things except waitpid, update orbital * Wait in waitpid and IRQ, improvements for other waits * Fevent in root scheme * WIP: Switch to using fevent * Reorganize * Event based e1000d driver * Superuser-only access to some network schemes, display, and disk * Superuser root and irq schemes * Fix orbital
43 lines
829 B
Rust
43 lines
829 B
Rust
#![feature(asm)]
|
|
|
|
#[macro_use]
|
|
extern crate bitflags;
|
|
extern crate io;
|
|
extern crate orbclient;
|
|
extern crate syscall;
|
|
|
|
use std::thread;
|
|
|
|
use syscall::iopl;
|
|
|
|
mod controller;
|
|
mod keyboard;
|
|
mod keymap;
|
|
mod mouse;
|
|
|
|
fn main() {
|
|
unsafe {
|
|
iopl(3).expect("ps2d: failed to get I/O permission");
|
|
asm!("cli" :::: "intel", "volatile");
|
|
}
|
|
|
|
let extra_packet = controller::Ps2::new().init();
|
|
|
|
thread::spawn(|| {
|
|
unsafe {
|
|
iopl(3).expect("ps2d: failed to get I/O permission");
|
|
asm!("cli" :::: "intel", "volatile");
|
|
}
|
|
|
|
keyboard::keyboard();
|
|
});
|
|
|
|
thread::spawn(move || {
|
|
unsafe {
|
|
iopl(3).expect("ps2d: failed to get I/O permission");
|
|
asm!("cli" :::: "intel", "volatile");
|
|
}
|
|
|
|
mouse::mouse(extra_packet);
|
|
});
|
|
}
|