forked from AbleOS/ableos
temp interrupt fix, problem with sds_search_service
This commit is contained in:
parent
9d1c59b65d
commit
fd26ec734b
|
@ -83,33 +83,31 @@ extern "x86-interrupt" fn spurious(_: InterruptStackFrame) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[allow(unused_imports)]
|
||||||
fn interrupt(interrupt_type: Interrupt) {
|
fn interrupt(interrupt_type: Interrupt) {
|
||||||
use crate::arch::INTERRUPT_LIST;
|
use crate::{arch::INTERRUPT_LIST, kmain::EXECUTOR};
|
||||||
use crate::kmain::EXECUTOR;
|
// let il = INTERRUPT_LIST.lock();
|
||||||
let il = INTERRUPT_LIST.lock();
|
// let val = il.list.get(&interrupt_type).unwrap();
|
||||||
let val = il.list.get(&interrupt_type).unwrap();
|
|
||||||
|
|
||||||
use crate::holeybytes::kernel_services::service_definition_service::sds_search_service;
|
// use crate::holeybytes::kernel_services::service_definition_service::sds_search_service;
|
||||||
let buffer = sds_search_service(val);
|
// let buffer = sds_search_service(val);
|
||||||
if buffer != 0 {
|
// if buffer != 0 {
|
||||||
use {crate::kmain::IPC_BUFFERS, alloc::vec::Vec};
|
// use {crate::kmain::IPC_BUFFERS, alloc::vec::Vec};
|
||||||
let mut buffs = IPC_BUFFERS.lock();
|
// let mut buffs = IPC_BUFFERS.lock();
|
||||||
match buffs.get_mut(&buffer) {
|
// match buffs.get_mut(&buffer) {
|
||||||
Some(buff) => {
|
// Some(buff) => {
|
||||||
let mut msg_vec = Vec::new();
|
// let mut msg_vec = Vec::new();
|
||||||
msg_vec.push(0xFF);
|
// msg_vec.push(0xFF);
|
||||||
buff.push(msg_vec.to_vec());
|
// buff.push(msg_vec.to_vec());
|
||||||
log::debug!("Sent Message {:?} to Buffer({})", msg_vec, buffer);
|
// log::debug!("Sent Message {:?} to Buffer({})", msg_vec, buffer);
|
||||||
}
|
// }
|
||||||
None => {
|
// None => {
|
||||||
log::error!("Access of non-existent buffer {}", buffer)
|
// log::error!("Access of non-existent buffer {}", buffer)
|
||||||
}
|
// }
|
||||||
}
|
// }
|
||||||
|
// }
|
||||||
|
|
||||||
// log::info!("{}", buffer);
|
unsafe {
|
||||||
}
|
|
||||||
|
|
||||||
unsafe{
|
|
||||||
EXECUTOR.send_interrupt(interrupt_type as u8);
|
EXECUTOR.send_interrupt(interrupt_type as u8);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -33,7 +33,7 @@ pub trait Process: Future<Output = ()> + Send {}
|
||||||
impl<T: Future<Output = ()> + Send> Process for T {}
|
impl<T: Future<Output = ()> + Send> Process for T {}
|
||||||
|
|
||||||
pub struct Executor {
|
pub struct Executor {
|
||||||
tasks: Slab<Task>,
|
tasks: Slab<Task>,
|
||||||
task_queue: Arc<SegQueue<usize>>,
|
task_queue: Arc<SegQueue<usize>>,
|
||||||
interrupt_lookup: [Option<usize>; u8::MAX as usize],
|
interrupt_lookup: [Option<usize>; u8::MAX as usize],
|
||||||
}
|
}
|
||||||
|
@ -41,7 +41,7 @@ pub struct Executor {
|
||||||
impl Executor {
|
impl Executor {
|
||||||
pub fn new() -> Self {
|
pub fn new() -> Self {
|
||||||
Self {
|
Self {
|
||||||
tasks: Slab::new(),
|
tasks: Slab::new(),
|
||||||
task_queue: Arc::new(SegQueue::new()),
|
task_queue: Arc::new(SegQueue::new()),
|
||||||
interrupt_lookup: [None; u8::MAX as usize],
|
interrupt_lookup: [None; u8::MAX as usize],
|
||||||
}
|
}
|
||||||
|
@ -67,7 +67,7 @@ impl Executor {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn interrupt_subscribe(&mut self, pid : usize, interrupt_type: u8){
|
pub fn interrupt_subscribe(&mut self, pid: usize, interrupt_type: u8) {
|
||||||
self.interrupt_lookup[interrupt_type as usize] = Some(pid);
|
self.interrupt_lookup[interrupt_type as usize] = Some(pid);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -85,7 +85,7 @@ impl Executor {
|
||||||
}
|
}
|
||||||
|
|
||||||
if batch_len == 0 {
|
if batch_len == 0 {
|
||||||
//break;
|
// break;
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -100,8 +100,8 @@ impl Executor {
|
||||||
|
|
||||||
if let Poll::Ready(()) = task.poll(&mut cx) {
|
if let Poll::Ready(()) = task.poll(&mut cx) {
|
||||||
self.tasks.remove(id);
|
self.tasks.remove(id);
|
||||||
self.interrupt_lookup.map(|pid|{
|
self.interrupt_lookup.map(|pid| {
|
||||||
if let Some(pid) = pid{
|
if let Some(pid) = pid {
|
||||||
if pid == id {
|
if pid == id {
|
||||||
return None;
|
return None;
|
||||||
}
|
}
|
||||||
|
@ -114,9 +114,9 @@ impl Executor {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn send_interrupt(&self, interrupt : u8){
|
pub fn send_interrupt(&self, interrupt: u8) {
|
||||||
let id = self.interrupt_lookup[interrupt as usize];
|
let id = self.interrupt_lookup[interrupt as usize];
|
||||||
if let Some(id) = id{
|
if let Some(id) = id {
|
||||||
self.unpause(id);
|
self.unpause(id);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -28,26 +28,26 @@ resolution = "1024x768x24"
|
||||||
# [boot.limine.ableos.modules.horizon]
|
# [boot.limine.ableos.modules.horizon]
|
||||||
# path = "boot:///horizon.hbf"
|
# path = "boot:///horizon.hbf"
|
||||||
|
|
||||||
# path = "boot:///ps2_mouse_driver.hbf"
|
[boot.limine.ableos.modules.ps2_mouse_driver]
|
||||||
# [boot.limine.ableos.modules.ps2_mouse_driver]
|
path = "boot:///ps2_mouse_driver.hbf"
|
||||||
|
|
||||||
# [boot.limine.ableos.modules.ps2_keyboard_driver]
|
# [boot.limine.ableos.modules.ps2_keyboard_driver]
|
||||||
# path = "boot:///ps2_keyboard_driver.hbf"
|
# path = "boot:///ps2_keyboard_driver.hbf"
|
||||||
|
|
||||||
# [boot.limine.ableos.modules.sunset_client]
|
# [boot.limine.ableos.modules.sunset_client]
|
||||||
# path = "boot:///sunset_client.hbf"
|
# path = "boot:///sunset_client.hbf"
|
||||||
#
|
|
||||||
# [boot.limine.ableos.modules.sunset_client_2]
|
# [boot.limine.ableos.modules.sunset_client_2]
|
||||||
# path = "boot:///sunset_client_2.hbf"
|
# path = "boot:///sunset_client_2.hbf"
|
||||||
#
|
|
||||||
# [boot.limine.ableos.modules.sdoom]
|
[boot.limine.ableos.modules.sdoom]
|
||||||
# path = "boot:///sdoom.hbf"
|
path = "boot:///sdoom.hbf"
|
||||||
#
|
|
||||||
# [boot.limine.ableos.modules.sunset_server]
|
[boot.limine.ableos.modules.sunset_server]
|
||||||
# path = "boot:///sunset_server.hbf"
|
path = "boot:///sunset_server.hbf"
|
||||||
|
|
||||||
# [boot.limine.ableos.modules.pcspkr]
|
# [boot.limine.ableos.modules.pcspkr]
|
||||||
# path = "boot:///pcspkr.hbf"
|
# path = "boot:///pcspkr.hbf"
|
||||||
|
|
||||||
[boot.limine.ableos.modules.test]
|
# [boot.limine.ableos.modules.test]
|
||||||
path = "boot:///test.hbf"
|
# path = "boot:///test.hbf"
|
||||||
|
|
Loading…
Reference in a new issue