refactor: integrate libk-thread into libk
This commit is contained in:
parent
69b6a38c0a
commit
3d04d30eb4
30
Cargo.lock
generated
30
Cargo.lock
generated
@ -757,13 +757,15 @@ dependencies = [
|
|||||||
name = "libk"
|
name = "libk"
|
||||||
version = "0.1.0"
|
version = "0.1.0"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
|
"abi-lib",
|
||||||
|
"atomic_enum",
|
||||||
"crossbeam-queue",
|
"crossbeam-queue",
|
||||||
"device-api",
|
"device-api",
|
||||||
|
"elf 0.7.2",
|
||||||
"futures-util",
|
"futures-util",
|
||||||
"kernel-arch",
|
"kernel-arch",
|
||||||
"libk-device",
|
"libk-device",
|
||||||
"libk-mm",
|
"libk-mm",
|
||||||
"libk-thread",
|
|
||||||
"libk-util",
|
"libk-util",
|
||||||
"log",
|
"log",
|
||||||
"yggdrasil-abi",
|
"yggdrasil-abi",
|
||||||
@ -801,23 +803,6 @@ dependencies = [
|
|||||||
"yggdrasil-abi",
|
"yggdrasil-abi",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "libk-thread"
|
|
||||||
version = "0.1.0"
|
|
||||||
dependencies = [
|
|
||||||
"abi-lib",
|
|
||||||
"atomic_enum",
|
|
||||||
"crossbeam-queue",
|
|
||||||
"elf 0.7.2",
|
|
||||||
"futures-util",
|
|
||||||
"kernel-arch",
|
|
||||||
"libk-device",
|
|
||||||
"libk-mm",
|
|
||||||
"libk-util",
|
|
||||||
"log",
|
|
||||||
"yggdrasil-abi",
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "libk-util"
|
name = "libk-util"
|
||||||
version = "0.1.0"
|
version = "0.1.0"
|
||||||
@ -1732,7 +1717,6 @@ dependencies = [
|
|||||||
"kernel-fs",
|
"kernel-fs",
|
||||||
"libk",
|
"libk",
|
||||||
"libk-mm",
|
"libk-mm",
|
||||||
"libk-thread",
|
|
||||||
"libk-util",
|
"libk-util",
|
||||||
"log",
|
"log",
|
||||||
"memoffset 0.9.0",
|
"memoffset 0.9.0",
|
||||||
@ -1748,7 +1732,6 @@ version = "0.1.0"
|
|||||||
dependencies = [
|
dependencies = [
|
||||||
"libk",
|
"libk",
|
||||||
"libk-mm",
|
"libk-mm",
|
||||||
"libk-thread",
|
|
||||||
"libk-util",
|
"libk-util",
|
||||||
"yggdrasil-abi",
|
"yggdrasil-abi",
|
||||||
]
|
]
|
||||||
@ -1762,7 +1745,6 @@ dependencies = [
|
|||||||
"libk",
|
"libk",
|
||||||
"libk-device",
|
"libk-device",
|
||||||
"libk-mm",
|
"libk-mm",
|
||||||
"libk-thread",
|
|
||||||
"libk-util",
|
"libk-util",
|
||||||
"log",
|
"log",
|
||||||
"serde",
|
"serde",
|
||||||
@ -1791,7 +1773,6 @@ dependencies = [
|
|||||||
"kernel-fs",
|
"kernel-fs",
|
||||||
"libk",
|
"libk",
|
||||||
"libk-mm",
|
"libk-mm",
|
||||||
"libk-thread",
|
|
||||||
"libk-util",
|
"libk-util",
|
||||||
"log",
|
"log",
|
||||||
"static_assertions",
|
"static_assertions",
|
||||||
@ -1822,8 +1803,8 @@ dependencies = [
|
|||||||
"bytemuck",
|
"bytemuck",
|
||||||
"device-api",
|
"device-api",
|
||||||
"futures-util",
|
"futures-util",
|
||||||
|
"libk",
|
||||||
"libk-mm",
|
"libk-mm",
|
||||||
"libk-thread",
|
|
||||||
"libk-util",
|
"libk-util",
|
||||||
"log",
|
"log",
|
||||||
"ygg_driver_input",
|
"ygg_driver_input",
|
||||||
@ -1838,8 +1819,8 @@ dependencies = [
|
|||||||
"bytemuck",
|
"bytemuck",
|
||||||
"device-api",
|
"device-api",
|
||||||
"futures-util",
|
"futures-util",
|
||||||
|
"libk",
|
||||||
"libk-mm",
|
"libk-mm",
|
||||||
"libk-thread",
|
|
||||||
"libk-util",
|
"libk-util",
|
||||||
"log",
|
"log",
|
||||||
"tock-registers 0.9.0",
|
"tock-registers 0.9.0",
|
||||||
@ -1921,7 +1902,6 @@ dependencies = [
|
|||||||
"libk",
|
"libk",
|
||||||
"libk-device",
|
"libk-device",
|
||||||
"libk-mm",
|
"libk-mm",
|
||||||
"libk-thread",
|
|
||||||
"libk-util",
|
"libk-util",
|
||||||
"linked_list_allocator",
|
"linked_list_allocator",
|
||||||
"log",
|
"log",
|
||||||
|
@ -17,7 +17,6 @@ device-api = { path = "lib/device-api", features = ["derive"] }
|
|||||||
libk = { path = "libk" }
|
libk = { path = "libk" }
|
||||||
libk-util = { path = "libk/libk-util" }
|
libk-util = { path = "libk/libk-util" }
|
||||||
libk-mm = { path = "libk/libk-mm" }
|
libk-mm = { path = "libk/libk-mm" }
|
||||||
libk-thread = { path = "libk/libk-thread" }
|
|
||||||
libk-device = { path = "libk/libk-device" }
|
libk-device = { path = "libk/libk-device" }
|
||||||
memtables = { path = "lib/memtables" }
|
memtables = { path = "lib/memtables" }
|
||||||
vmalloc = { path = "lib/vmalloc" }
|
vmalloc = { path = "lib/vmalloc" }
|
||||||
|
@ -7,7 +7,6 @@ authors = ["Mark Poliakov <mark@alnyan.me>"]
|
|||||||
[dependencies]
|
[dependencies]
|
||||||
yggdrasil-abi = { path = "../../../../lib/abi" }
|
yggdrasil-abi = { path = "../../../../lib/abi" }
|
||||||
libk-mm = { path = "../../../libk/libk-mm" }
|
libk-mm = { path = "../../../libk/libk-mm" }
|
||||||
libk-thread = { path = "../../../libk/libk-thread" }
|
|
||||||
libk-util = { path = "../../../libk/libk-util" }
|
libk-util = { path = "../../../libk/libk-util" }
|
||||||
libk = { path = "../../../libk" }
|
libk = { path = "../../../libk" }
|
||||||
device-api = { path = "../../../lib/device-api", features = ["derive"] }
|
device-api = { path = "../../../lib/device-api", features = ["derive"] }
|
||||||
|
@ -13,9 +13,11 @@ use device_api::{
|
|||||||
};
|
};
|
||||||
use error::AhciError;
|
use error::AhciError;
|
||||||
use kernel_fs::devfs;
|
use kernel_fs::devfs;
|
||||||
use libk::vfs::block::{probe_partitions, NgBlockDeviceWrapper};
|
use libk::{
|
||||||
|
task::runtime,
|
||||||
|
vfs::block::{probe_partitions, NgBlockDeviceWrapper},
|
||||||
|
};
|
||||||
use libk_mm::{address::AsPhysicalAddress, device::DeviceMemoryIo, PageBox};
|
use libk_mm::{address::AsPhysicalAddress, device::DeviceMemoryIo, PageBox};
|
||||||
use libk_thread::runtime;
|
|
||||||
use libk_util::{sync::IrqSafeSpinlock, OneTimeInit};
|
use libk_util::{sync::IrqSafeSpinlock, OneTimeInit};
|
||||||
use port::AhciPort;
|
use port::AhciPort;
|
||||||
use regs::{PortRegs, Regs};
|
use regs::{PortRegs, Regs};
|
||||||
|
@ -7,7 +7,6 @@ authors = ["Mark Poliakov <mark@alnyan.me>"]
|
|||||||
[dependencies]
|
[dependencies]
|
||||||
yggdrasil-abi = { path = "../../../../lib/abi" }
|
yggdrasil-abi = { path = "../../../../lib/abi" }
|
||||||
libk-util = { path = "../../../libk/libk-util" }
|
libk-util = { path = "../../../libk/libk-util" }
|
||||||
libk-thread = { path = "../../../libk/libk-thread" }
|
|
||||||
libk-mm = { path = "../../../libk/libk-mm" }
|
libk-mm = { path = "../../../libk/libk-mm" }
|
||||||
libk = { path = "../../../libk" }
|
libk = { path = "../../../libk" }
|
||||||
device-api = { path = "../../../lib/device-api", features = ["derive"] }
|
device-api = { path = "../../../lib/device-api", features = ["derive"] }
|
||||||
|
@ -2,11 +2,11 @@ use core::task::Poll;
|
|||||||
|
|
||||||
use alloc::{boxed::Box, format};
|
use alloc::{boxed::Box, format};
|
||||||
use kernel_fs::devfs;
|
use kernel_fs::devfs;
|
||||||
|
use libk::task::cpu_index;
|
||||||
use libk::vfs::block::{
|
use libk::vfs::block::{
|
||||||
probe_partitions, IoOperation, IoRequest, IoSubmissionId, NgBlockDevice, NgBlockDeviceWrapper,
|
probe_partitions, IoOperation, IoRequest, IoSubmissionId, NgBlockDevice, NgBlockDeviceWrapper,
|
||||||
};
|
};
|
||||||
use libk_mm::address::AsPhysicalAddress;
|
use libk_mm::address::AsPhysicalAddress;
|
||||||
use libk_thread::cpu_index;
|
|
||||||
use libk_util::waker::QueueWaker;
|
use libk_util::waker::QueueWaker;
|
||||||
use yggdrasil_abi::error::Error;
|
use yggdrasil_abi::error::Error;
|
||||||
|
|
||||||
|
@ -17,11 +17,11 @@ use device_api::{
|
|||||||
Device,
|
Device,
|
||||||
};
|
};
|
||||||
use drive::NvmeDrive;
|
use drive::NvmeDrive;
|
||||||
|
use libk::task::{cpu_count, cpu_index, runtime};
|
||||||
use libk_mm::{
|
use libk_mm::{
|
||||||
address::{IntoRaw, PhysicalAddress},
|
address::{IntoRaw, PhysicalAddress},
|
||||||
device::DeviceMemoryIo,
|
device::DeviceMemoryIo,
|
||||||
};
|
};
|
||||||
use libk_thread::{cpu_count, cpu_index, runtime};
|
|
||||||
use libk_util::{
|
use libk_util::{
|
||||||
sync::{IrqGuard, IrqSafeSpinlock},
|
sync::{IrqGuard, IrqSafeSpinlock},
|
||||||
OneTimeInit,
|
OneTimeInit,
|
||||||
|
@ -11,7 +11,7 @@ ygg_driver_input = { path = "../../input" }
|
|||||||
|
|
||||||
libk-util = { path = "../../../libk/libk-util" }
|
libk-util = { path = "../../../libk/libk-util" }
|
||||||
libk-mm = { path = "../../../libk/libk-mm" }
|
libk-mm = { path = "../../../libk/libk-mm" }
|
||||||
libk-thread = { path = "../../../libk/libk-thread" }
|
libk = { path = "../../../libk" }
|
||||||
|
|
||||||
log = "0.4.20"
|
log = "0.4.20"
|
||||||
bytemuck = { version = "1.14.0", features = ["derive"] }
|
bytemuck = { version = "1.14.0", features = ["derive"] }
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
use alloc::{sync::Arc, vec::Vec};
|
use alloc::{sync::Arc, vec::Vec};
|
||||||
use futures_util::future::BoxFuture;
|
use futures_util::future::BoxFuture;
|
||||||
use libk_thread::runtime;
|
use libk::task::runtime;
|
||||||
use libk_util::sync::spin_rwlock::IrqSafeRwLock;
|
use libk_util::sync::spin_rwlock::IrqSafeRwLock;
|
||||||
|
|
||||||
use crate::{
|
use crate::{
|
||||||
|
@ -6,6 +6,5 @@ edition = "2021"
|
|||||||
[dependencies]
|
[dependencies]
|
||||||
yggdrasil-abi = { path = "../../../lib/abi" }
|
yggdrasil-abi = { path = "../../../lib/abi" }
|
||||||
libk-util = { path = "../../libk/libk-util" }
|
libk-util = { path = "../../libk/libk-util" }
|
||||||
libk-thread = { path = "../../libk/libk-thread" }
|
|
||||||
libk-mm = { path = "../../libk/libk-mm" }
|
libk-mm = { path = "../../libk/libk-mm" }
|
||||||
libk = { path = "../../libk" }
|
libk = { path = "../../libk" }
|
||||||
|
@ -4,8 +4,10 @@ extern crate alloc;
|
|||||||
|
|
||||||
use core::task::{Context, Poll};
|
use core::task::{Context, Poll};
|
||||||
|
|
||||||
use libk::vfs::{CharDevice, FileReadiness};
|
use libk::{
|
||||||
use libk_thread::block;
|
block,
|
||||||
|
vfs::{CharDevice, FileReadiness},
|
||||||
|
};
|
||||||
use libk_util::ring::LossyRingQueue;
|
use libk_util::ring::LossyRingQueue;
|
||||||
use yggdrasil_abi::{
|
use yggdrasil_abi::{
|
||||||
error::Error,
|
error::Error,
|
||||||
|
@ -7,7 +7,6 @@ edition = "2021"
|
|||||||
yggdrasil-abi = { path = "../../../../lib/abi", features = ["serde_kernel", "bytemuck"] }
|
yggdrasil-abi = { path = "../../../../lib/abi", features = ["serde_kernel", "bytemuck"] }
|
||||||
libk-mm = { path = "../../../libk/libk-mm" }
|
libk-mm = { path = "../../../libk/libk-mm" }
|
||||||
libk-util = { path = "../../../libk/libk-util" }
|
libk-util = { path = "../../../libk/libk-util" }
|
||||||
libk-thread = { path = "../../../libk/libk-thread" }
|
|
||||||
libk-device = { path = "../../../libk/libk-device" }
|
libk-device = { path = "../../../libk/libk-device" }
|
||||||
libk = { path = "../../../libk" }
|
libk = { path = "../../../libk" }
|
||||||
|
|
||||||
|
@ -7,7 +7,7 @@ use core::{
|
|||||||
};
|
};
|
||||||
|
|
||||||
use alloc::{boxed::Box, collections::BTreeMap};
|
use alloc::{boxed::Box, collections::BTreeMap};
|
||||||
use libk_thread::runtime;
|
use libk::task::runtime;
|
||||||
use libk_util::{sync::spin_rwlock::IrqSafeRwLock, waker::QueueWaker};
|
use libk_util::{sync::spin_rwlock::IrqSafeRwLock, waker::QueueWaker};
|
||||||
use yggdrasil_abi::{
|
use yggdrasil_abi::{
|
||||||
error::Error,
|
error::Error,
|
||||||
|
@ -10,8 +10,8 @@ use alloc::sync::Arc;
|
|||||||
use bytemuck::Pod;
|
use bytemuck::Pod;
|
||||||
use ethernet::L2Packet;
|
use ethernet::L2Packet;
|
||||||
use l3::L3Packet;
|
use l3::L3Packet;
|
||||||
|
use libk::task::runtime;
|
||||||
use libk_mm::PageBox;
|
use libk_mm::PageBox;
|
||||||
use libk_thread::runtime;
|
|
||||||
use libk_util::queue::UnboundedMpmcQueue;
|
use libk_util::queue::UnboundedMpmcQueue;
|
||||||
use yggdrasil_abi::{error::Error, net::protocols::EthernetFrame};
|
use yggdrasil_abi::{error::Error, net::protocols::EthernetFrame};
|
||||||
|
|
||||||
|
@ -7,13 +7,13 @@ use core::{
|
|||||||
};
|
};
|
||||||
|
|
||||||
use alloc::{collections::BTreeMap, sync::Arc, vec::Vec};
|
use alloc::{collections::BTreeMap, sync::Arc, vec::Vec};
|
||||||
use libk::vfs::{ConnectionSocket, FileReadiness, ListenerSocket, PacketSocket, Socket};
|
use libk::{
|
||||||
|
block,
|
||||||
|
task::runtime::{run_with_timeout, FutureTimeout},
|
||||||
|
vfs::{ConnectionSocket, FileReadiness, ListenerSocket, PacketSocket, Socket},
|
||||||
|
};
|
||||||
use libk_device::monotonic_timestamp;
|
use libk_device::monotonic_timestamp;
|
||||||
use libk_mm::PageBox;
|
use libk_mm::PageBox;
|
||||||
use libk_thread::{
|
|
||||||
block,
|
|
||||||
runtime::{run_with_timeout, FutureTimeout},
|
|
||||||
};
|
|
||||||
use libk_util::{
|
use libk_util::{
|
||||||
queue::BoundedMpmcQueue,
|
queue::BoundedMpmcQueue,
|
||||||
sync::{
|
sync::{
|
||||||
|
@ -12,7 +12,7 @@ ygg_driver_usb = { path = "../../bus/usb" }
|
|||||||
|
|
||||||
libk-util = { path = "../../../libk/libk-util" }
|
libk-util = { path = "../../../libk/libk-util" }
|
||||||
libk-mm = { path = "../../../libk/libk-mm" }
|
libk-mm = { path = "../../../libk/libk-mm" }
|
||||||
libk-thread = { path = "../../../libk/libk-thread" }
|
libk = { path = "../../../libk" }
|
||||||
|
|
||||||
xhci_lib = { git = "https://github.com/rust-osdev/xhci.git", package = "xhci" }
|
xhci_lib = { git = "https://github.com/rust-osdev/xhci.git", package = "xhci" }
|
||||||
|
|
||||||
|
@ -4,11 +4,11 @@ use alloc::{boxed::Box, collections::BTreeMap, sync::Arc, vec, vec::Vec};
|
|||||||
use atomic_enum::atomic_enum;
|
use atomic_enum::atomic_enum;
|
||||||
use device_api::{interrupt::InterruptHandler, Device};
|
use device_api::{interrupt::InterruptHandler, Device};
|
||||||
use futures_util::task::AtomicWaker;
|
use futures_util::task::AtomicWaker;
|
||||||
|
use libk::task::runtime::{self, FutureTimeout};
|
||||||
use libk_mm::{
|
use libk_mm::{
|
||||||
address::{AsPhysicalAddress, PhysicalAddress},
|
address::{AsPhysicalAddress, PhysicalAddress},
|
||||||
PageBox,
|
PageBox,
|
||||||
};
|
};
|
||||||
use libk_thread::runtime::{self, FutureTimeout};
|
|
||||||
use libk_util::{sync::spin_rwlock::IrqSafeRwLock, OneTimeInit};
|
use libk_util::{sync::spin_rwlock::IrqSafeRwLock, OneTimeInit};
|
||||||
use ygg_driver_usb::{
|
use ygg_driver_usb::{
|
||||||
bus::UsbBusManager,
|
bus::UsbBusManager,
|
||||||
|
@ -7,13 +7,20 @@ authors = ["Mark Poliakov <mark@alnyan.me>"]
|
|||||||
[dependencies]
|
[dependencies]
|
||||||
libk-mm = { path = "libk-mm" }
|
libk-mm = { path = "libk-mm" }
|
||||||
libk-util = { path = "libk-util" }
|
libk-util = { path = "libk-util" }
|
||||||
libk-thread = { path = "libk-thread" }
|
|
||||||
libk-device = { path = "libk-device" }
|
libk-device = { path = "libk-device" }
|
||||||
kernel-arch = { path = "../arch" }
|
kernel-arch = { path = "../arch" }
|
||||||
|
|
||||||
yggdrasil-abi = { path = "../../lib/abi" }
|
abi-lib = { path = "../../lib/abi-lib" }
|
||||||
|
yggdrasil-abi = { path = "../../lib/abi", features = ["alloc"] }
|
||||||
device-api = { path = "../lib/device-api", features = ["derive"] }
|
device-api = { path = "../lib/device-api", features = ["derive"] }
|
||||||
|
|
||||||
log = "0.4.20"
|
log = "0.4.20"
|
||||||
|
atomic_enum = "0.2.0"
|
||||||
futures-util = { version = "0.3.28", default-features = false, features = ["alloc", "async-await"] }
|
futures-util = { version = "0.3.28", default-features = false, features = ["alloc", "async-await"] }
|
||||||
crossbeam-queue = { version = "0.3.8", default-features = false, features = ["alloc"] }
|
crossbeam-queue = { version = "0.3.8", default-features = false, features = ["alloc"] }
|
||||||
|
|
||||||
|
[dependencies.elf]
|
||||||
|
version = "0.7.2"
|
||||||
|
git = "https://git.alnyan.me/yggdrasil/yggdrasil-elf.git"
|
||||||
|
default-features = false
|
||||||
|
features = ["no_std_stream"]
|
||||||
|
@ -1,26 +0,0 @@
|
|||||||
[package]
|
|
||||||
name = "libk-thread"
|
|
||||||
version = "0.1.0"
|
|
||||||
edition = "2021"
|
|
||||||
|
|
||||||
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
|
|
||||||
|
|
||||||
[dependencies]
|
|
||||||
libk-util = { path = "../libk-util" }
|
|
||||||
libk-mm = { path = "../libk-mm" }
|
|
||||||
libk-device = { path = "../libk-device" }
|
|
||||||
kernel-arch = { path = "../../arch" }
|
|
||||||
|
|
||||||
abi-lib = { path = "../../../lib/abi-lib" }
|
|
||||||
yggdrasil-abi = { path = "../../../lib/abi", features = ["alloc"] }
|
|
||||||
|
|
||||||
log = "0.4.20"
|
|
||||||
atomic_enum = "0.2.0"
|
|
||||||
crossbeam-queue = { version = "0.3.8", default-features = false, features = ["alloc"] }
|
|
||||||
futures-util = { version = "0.3.28", default-features = false, features = ["alloc", "async-await"] }
|
|
||||||
|
|
||||||
[dependencies.elf]
|
|
||||||
version = "0.7.2"
|
|
||||||
git = "https://git.alnyan.me/yggdrasil/yggdrasil-elf.git"
|
|
||||||
default-features = false
|
|
||||||
features = ["no_std_stream"]
|
|
@ -2,9 +2,10 @@ use core::ops::{Deref, DerefMut};
|
|||||||
|
|
||||||
use device_api::interrupt::IpiMessage;
|
use device_api::interrupt::IpiMessage;
|
||||||
use kernel_arch::{Architecture, ArchitectureImpl, CpuImpl, LocalCpuImpl};
|
use kernel_arch::{Architecture, ArchitectureImpl, CpuImpl, LocalCpuImpl};
|
||||||
use libk_thread::sched::CpuQueue;
|
|
||||||
use libk_util::sync::IrqGuard;
|
use libk_util::sync::IrqGuard;
|
||||||
|
|
||||||
|
use crate::task::sched::CpuQueue;
|
||||||
|
|
||||||
/// Kernel wrapper for local CPU info structure. See [kernel_arch::LocalCpuImpl].
|
/// Kernel wrapper for local CPU info structure. See [kernel_arch::LocalCpuImpl].
|
||||||
#[repr(transparent)]
|
#[repr(transparent)]
|
||||||
pub struct LocalCpu<'a>(LocalCpuImpl<'a, CpuQueue>);
|
pub struct LocalCpu<'a>(LocalCpuImpl<'a, CpuQueue>);
|
||||||
|
@ -15,12 +15,15 @@
|
|||||||
inline_const,
|
inline_const,
|
||||||
trait_alias,
|
trait_alias,
|
||||||
if_let_guard,
|
if_let_guard,
|
||||||
trait_upcasting
|
trait_upcasting,
|
||||||
|
arbitrary_self_types,
|
||||||
|
slice_split_once
|
||||||
)]
|
)]
|
||||||
|
|
||||||
extern crate alloc;
|
extern crate alloc;
|
||||||
|
|
||||||
pub use libk_thread::{block, cpu_count, cpu_index, runtime};
|
#[macro_use]
|
||||||
|
pub mod task;
|
||||||
|
|
||||||
pub mod arch;
|
pub mod arch;
|
||||||
pub mod vfs;
|
pub mod vfs;
|
||||||
|
@ -16,7 +16,7 @@ use libk_mm::{
|
|||||||
use libk_util::io::{Read, Seek};
|
use libk_util::io::{Read, Seek};
|
||||||
use yggdrasil_abi::{error::Error, io::SeekFrom};
|
use yggdrasil_abi::{error::Error, io::SeekFrom};
|
||||||
|
|
||||||
use crate::{
|
use crate::task::{
|
||||||
process::ProcessImage,
|
process::ProcessImage,
|
||||||
types::{ProcessTlsInfo, ProcessTlsLayout},
|
types::{ProcessTlsInfo, ProcessTlsLayout},
|
||||||
};
|
};
|
@ -21,7 +21,7 @@ use yggdrasil_abi::{
|
|||||||
process::{ProcessGroupId, ProgramArgumentInner},
|
process::{ProcessGroupId, ProgramArgumentInner},
|
||||||
};
|
};
|
||||||
|
|
||||||
use crate::{
|
use crate::task::{
|
||||||
mem::ForeignPointer,
|
mem::ForeignPointer,
|
||||||
process::{ProcessImage, ProcessImpl, ProcessIo, ProcessManager},
|
process::{ProcessImage, ProcessImpl, ProcessIo, ProcessManager},
|
||||||
thread::Thread,
|
thread::Thread,
|
@ -177,7 +177,7 @@ pub fn validate_user_region(
|
|||||||
len: usize,
|
len: usize,
|
||||||
_need_write: bool,
|
_need_write: bool,
|
||||||
) -> Result<(), Error> {
|
) -> Result<(), Error> {
|
||||||
if base + len > crate::mem::KERNEL_VIRT_OFFSET {
|
if base + len > crate::task::mem::KERNEL_VIRT_OFFSET {
|
||||||
panic!("Invalid argument");
|
panic!("Invalid argument");
|
||||||
}
|
}
|
||||||
|
|
@ -1,15 +1,13 @@
|
|||||||
#![no_std]
|
// #![no_std]
|
||||||
#![feature(
|
// #![feature(
|
||||||
trait_alias,
|
// trait_alias,
|
||||||
never_type,
|
// never_type,
|
||||||
inline_const,
|
// inline_const,
|
||||||
arbitrary_self_types,
|
// arbitrary_self_types,
|
||||||
slice_ptr_get,
|
// slice_ptr_get,
|
||||||
slice_split_once,
|
// slice_split_once,
|
||||||
let_chains
|
// let_chains
|
||||||
)]
|
// )]
|
||||||
|
|
||||||
extern crate alloc;
|
|
||||||
|
|
||||||
use api::__signal_process_group;
|
use api::__signal_process_group;
|
||||||
use kernel_arch::{Architecture, ArchitectureImpl, KernelTableManagerImpl};
|
use kernel_arch::{Architecture, ArchitectureImpl, KernelTableManagerImpl};
|
@ -25,7 +25,7 @@ use yggdrasil_abi::{
|
|||||||
process::{ExitCode, ProcessGroupId, ProcessId, Signal, ThreadSpawnOptions},
|
process::{ExitCode, ProcessGroupId, ProcessId, Signal, ThreadSpawnOptions},
|
||||||
};
|
};
|
||||||
|
|
||||||
use crate::{
|
use crate::task::{
|
||||||
futex::UserspaceMutex,
|
futex::UserspaceMutex,
|
||||||
thread::Thread,
|
thread::Thread,
|
||||||
types::{AllocateProcessId, ProcessTlsInfo},
|
types::{AllocateProcessId, ProcessTlsInfo},
|
@ -6,7 +6,7 @@ use kernel_arch::task::TaskContext;
|
|||||||
use libk_util::waker::WakeWeak;
|
use libk_util::waker::WakeWeak;
|
||||||
use yggdrasil_abi::error::Error;
|
use yggdrasil_abi::error::Error;
|
||||||
|
|
||||||
use crate::{thread::Thread, TaskContextImpl};
|
use crate::task::{thread::Thread, TaskContextImpl};
|
||||||
|
|
||||||
use super::{
|
use super::{
|
||||||
task::{Task, Termination},
|
task::{Task, Termination},
|
@ -1,7 +1,7 @@
|
|||||||
#[macro_export]
|
#[macro_export]
|
||||||
macro_rules! block {
|
macro_rules! block {
|
||||||
($($stmt:tt)*) => {
|
($($stmt:tt)*) => {
|
||||||
$crate::runtime::run_to_completion(alloc::boxed::Box::pin(async move {
|
$crate::task::runtime::run_to_completion(alloc::boxed::Box::pin(async move {
|
||||||
$($stmt)*
|
$($stmt)*
|
||||||
}))
|
}))
|
||||||
};
|
};
|
@ -3,7 +3,7 @@ use crossbeam_queue::ArrayQueue;
|
|||||||
use libk_util::{sync::IrqGuard, OneTimeInit};
|
use libk_util::{sync::IrqGuard, OneTimeInit};
|
||||||
use yggdrasil_abi::error::Error;
|
use yggdrasil_abi::error::Error;
|
||||||
|
|
||||||
use crate::thread::Thread;
|
use crate::task::thread::Thread;
|
||||||
|
|
||||||
use super::task::Task;
|
use super::task::Task;
|
||||||
|
|
@ -8,7 +8,7 @@ use kernel_arch::{
|
|||||||
};
|
};
|
||||||
use libk_util::{sync::IrqGuard, OneTimeInit};
|
use libk_util::{sync::IrqGuard, OneTimeInit};
|
||||||
|
|
||||||
use crate::{thread::Thread, TaskContextImpl, ThreadId, ThreadState};
|
use crate::task::{thread::Thread, TaskContextImpl, ThreadId, ThreadState};
|
||||||
|
|
||||||
/// Per-CPU queue
|
/// Per-CPU queue
|
||||||
pub struct CpuQueue {
|
pub struct CpuQueue {
|
@ -12,7 +12,7 @@ use kernel_arch::task::Scheduler;
|
|||||||
use libk_util::{sync::LockMethod, waker::QueueWaker};
|
use libk_util::{sync::LockMethod, waker::QueueWaker};
|
||||||
use yggdrasil_abi::error::Error;
|
use yggdrasil_abi::error::Error;
|
||||||
|
|
||||||
use crate::{sched::CpuQueue, thread::Thread};
|
use crate::task::{sched::CpuQueue, thread::Thread};
|
||||||
|
|
||||||
struct ThreadedMutexInner {
|
struct ThreadedMutexInner {
|
||||||
queue: ArrayQueue<Arc<Thread>>,
|
queue: ArrayQueue<Arc<Thread>>,
|
@ -21,7 +21,7 @@ use yggdrasil_abi::{
|
|||||||
process::{ExitCode, ProcessId, Signal, SignalEntryData},
|
process::{ExitCode, ProcessId, Signal, SignalEntryData},
|
||||||
};
|
};
|
||||||
|
|
||||||
use crate::{
|
use crate::task::{
|
||||||
mem::ForeignPointer,
|
mem::ForeignPointer,
|
||||||
process::{Process, ProcessManager},
|
process::{Process, ProcessManager},
|
||||||
sched::CpuQueue,
|
sched::CpuQueue,
|
@ -11,14 +11,16 @@ use alloc::{
|
|||||||
sync::Arc,
|
sync::Arc,
|
||||||
};
|
};
|
||||||
use futures_util::{task::AtomicWaker, Future};
|
use futures_util::{task::AtomicWaker, Future};
|
||||||
use libk_thread::{block, sync::Mutex};
|
|
||||||
use libk_util::sync::{IrqSafeSpinlock, LockMethod};
|
use libk_util::sync::{IrqSafeSpinlock, LockMethod};
|
||||||
use yggdrasil_abi::{
|
use yggdrasil_abi::{
|
||||||
error::Error,
|
error::Error,
|
||||||
io::{ChannelPublisherId, MessageDestination},
|
io::{ChannelPublisherId, MessageDestination},
|
||||||
};
|
};
|
||||||
|
|
||||||
use crate::vfs::{FileReadiness, FileRef};
|
use crate::{
|
||||||
|
task::sync::Mutex,
|
||||||
|
vfs::{FileReadiness, FileRef},
|
||||||
|
};
|
||||||
|
|
||||||
/// Describes a channel over which messages can be sent to [Subscription]s
|
/// Describes a channel over which messages can be sent to [Subscription]s
|
||||||
pub struct Channel {
|
pub struct Channel {
|
||||||
|
@ -6,7 +6,6 @@ use core::{
|
|||||||
|
|
||||||
use alloc::{sync::Arc, vec, vec::Vec};
|
use alloc::{sync::Arc, vec, vec::Vec};
|
||||||
use futures_util::{task::AtomicWaker, Future};
|
use futures_util::{task::AtomicWaker, Future};
|
||||||
use libk_thread::block;
|
|
||||||
use libk_util::sync::IrqSafeSpinlock;
|
use libk_util::sync::IrqSafeSpinlock;
|
||||||
use yggdrasil_abi::error::Error;
|
use yggdrasil_abi::error::Error;
|
||||||
|
|
||||||
|
@ -1,14 +1,16 @@
|
|||||||
use alloc::{borrow::ToOwned, sync::Arc};
|
use alloc::{borrow::ToOwned, sync::Arc};
|
||||||
use libk_thread::binary::ProgramLoadSource;
|
|
||||||
use yggdrasil_abi::{
|
use yggdrasil_abi::{
|
||||||
error::Error,
|
error::Error,
|
||||||
io::{FileMode, FileType, GroupId, OpenOptions, UserId},
|
io::{FileMode, FileType, GroupId, OpenOptions, UserId},
|
||||||
path::{Path, PathBuf},
|
path::{Path, PathBuf},
|
||||||
};
|
};
|
||||||
|
|
||||||
use crate::vfs::{
|
use crate::{
|
||||||
node::{AccessToken, CreateInfo},
|
task::binary::ProgramLoadSource,
|
||||||
File, FileRef, NodeRef,
|
vfs::{
|
||||||
|
node::{AccessToken, CreateInfo},
|
||||||
|
File, FileRef, NodeRef,
|
||||||
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
/// Describes a general filesystem access
|
/// Describes a general filesystem access
|
||||||
|
@ -7,11 +7,13 @@ use core::{
|
|||||||
use alloc::collections::BTreeMap;
|
use alloc::collections::BTreeMap;
|
||||||
|
|
||||||
use futures_util::{future::BoxFuture, FutureExt};
|
use futures_util::{future::BoxFuture, FutureExt};
|
||||||
use libk_thread::{runtime, sync::Mutex};
|
|
||||||
use libk_util::sync::LockMethod;
|
use libk_util::sync::LockMethod;
|
||||||
use yggdrasil_abi::{error::Error, io::RawFd};
|
use yggdrasil_abi::{error::Error, io::RawFd};
|
||||||
|
|
||||||
use crate::vfs::{FileReadiness, FileRef};
|
use crate::{
|
||||||
|
task::{runtime, sync::Mutex},
|
||||||
|
vfs::{FileReadiness, FileRef},
|
||||||
|
};
|
||||||
|
|
||||||
/// Poll channel implementation. Allows blocking until a file descriptor signals an event or a
|
/// Poll channel implementation. Allows blocking until a file descriptor signals an event or a
|
||||||
/// timeout is reached.
|
/// timeout is reached.
|
||||||
|
@ -8,7 +8,6 @@ use core::{
|
|||||||
};
|
};
|
||||||
|
|
||||||
use alloc::{boxed::Box, sync::Arc};
|
use alloc::{boxed::Box, sync::Arc};
|
||||||
use libk_thread::{block, signal_process_group};
|
|
||||||
use libk_util::{
|
use libk_util::{
|
||||||
ring::{LossyRingQueue, RingBuffer},
|
ring::{LossyRingQueue, RingBuffer},
|
||||||
sync::{spin_rwlock::IrqSafeRwLock, IrqSafeSpinlock},
|
sync::{spin_rwlock::IrqSafeRwLock, IrqSafeSpinlock},
|
||||||
@ -22,6 +21,8 @@ use yggdrasil_abi::{
|
|||||||
process::{ProcessGroupId, Signal},
|
process::{ProcessGroupId, Signal},
|
||||||
};
|
};
|
||||||
|
|
||||||
|
use crate::task::signal_process_group;
|
||||||
|
|
||||||
const CAPACITY: usize = 8192;
|
const CAPACITY: usize = 8192;
|
||||||
|
|
||||||
struct PtySlaveToMasterHalf {
|
struct PtySlaveToMasterHalf {
|
||||||
|
@ -7,14 +7,16 @@ use core::{
|
|||||||
use alloc::boxed::Box;
|
use alloc::boxed::Box;
|
||||||
|
|
||||||
use futures_util::FutureExt;
|
use futures_util::FutureExt;
|
||||||
use libk_thread::{
|
|
||||||
runtime::{self, SleepFuture},
|
|
||||||
sync::Mutex,
|
|
||||||
};
|
|
||||||
use libk_util::sync::LockMethod;
|
use libk_util::sync::LockMethod;
|
||||||
use yggdrasil_abi::error::Error;
|
use yggdrasil_abi::error::Error;
|
||||||
|
|
||||||
use crate::vfs::{FileReadiness, Write};
|
use crate::{
|
||||||
|
task::{
|
||||||
|
runtime::{self, SleepFuture},
|
||||||
|
sync::Mutex,
|
||||||
|
},
|
||||||
|
vfs::{FileReadiness, Write},
|
||||||
|
};
|
||||||
|
|
||||||
/// File-like structure to generate periodic or one-shit events at certain intervals
|
/// File-like structure to generate periodic or one-shit events at certain intervals
|
||||||
pub struct TimerFile {
|
pub struct TimerFile {
|
||||||
|
@ -7,8 +7,8 @@ use kernel_arch_x86_64::context::IrqFrame;
|
|||||||
use libk::{
|
use libk::{
|
||||||
arch::Cpu,
|
arch::Cpu,
|
||||||
device::{external_interrupt_controller, message_interrupt_controller},
|
device::{external_interrupt_controller, message_interrupt_controller},
|
||||||
|
task::thread::Thread,
|
||||||
};
|
};
|
||||||
use libk_thread::thread::Thread;
|
|
||||||
use static_assertions::{const_assert, const_assert_eq};
|
use static_assertions::{const_assert, const_assert_eq};
|
||||||
|
|
||||||
use crate::task::process::ProcessManagerImpl;
|
use crate::task::process::ProcessManagerImpl;
|
||||||
|
@ -3,7 +3,7 @@ use core::{arch::global_asm, sync::atomic::Ordering};
|
|||||||
|
|
||||||
use kernel_arch_x86_64::{registers::MSR_IA32_KERNEL_GS_BASE, CPU_COUNT};
|
use kernel_arch_x86_64::{registers::MSR_IA32_KERNEL_GS_BASE, CPU_COUNT};
|
||||||
use kernel_fs::devfs;
|
use kernel_fs::devfs;
|
||||||
use libk::runtime;
|
use libk::task::runtime;
|
||||||
use tock_registers::interfaces::Writeable;
|
use tock_registers::interfaces::Writeable;
|
||||||
use yboot_proto::{
|
use yboot_proto::{
|
||||||
v1::{FramebufferOption, MemoryMap},
|
v1::{FramebufferOption, MemoryMap},
|
||||||
|
@ -3,8 +3,7 @@ use core::{arch::global_asm, mem::size_of, ptr::addr_of};
|
|||||||
|
|
||||||
use abi::{primitive_enum, process::Signal};
|
use abi::{primitive_enum, process::Signal};
|
||||||
use kernel_arch_x86_64::{context::ExceptionFrame, registers::CR3};
|
use kernel_arch_x86_64::{context::ExceptionFrame, registers::CR3};
|
||||||
use libk::arch::Cpu;
|
use libk::{arch::Cpu, task::thread::Thread};
|
||||||
use libk_thread::thread::Thread;
|
|
||||||
use tock_registers::interfaces::Readable;
|
use tock_registers::interfaces::Readable;
|
||||||
|
|
||||||
use crate::{arch::x86_64::apic, task::process::ProcessManagerImpl};
|
use crate::{arch::x86_64::apic, task::process::ProcessManagerImpl};
|
||||||
|
@ -6,7 +6,7 @@ use device_api::{
|
|||||||
timer::MonotonicTimestampProviderDevice,
|
timer::MonotonicTimestampProviderDevice,
|
||||||
Device,
|
Device,
|
||||||
};
|
};
|
||||||
use libk::{device::external_interrupt_controller, runtime};
|
use libk::{device::external_interrupt_controller, task::runtime};
|
||||||
use libk_util::sync::IrqSafeSpinlock;
|
use libk_util::sync::IrqSafeSpinlock;
|
||||||
|
|
||||||
use crate::arch::x86_64::{
|
use crate::arch::x86_64::{
|
||||||
|
@ -8,7 +8,7 @@ use kernel_arch_x86_64::{
|
|||||||
context::SyscallFrame,
|
context::SyscallFrame,
|
||||||
registers::{MSR_IA32_EFER, MSR_IA32_LSTAR, MSR_IA32_SFMASK, MSR_IA32_STAR},
|
registers::{MSR_IA32_EFER, MSR_IA32_LSTAR, MSR_IA32_SFMASK, MSR_IA32_STAR},
|
||||||
};
|
};
|
||||||
use libk_thread::thread::Thread;
|
use libk::task::thread::Thread;
|
||||||
use tock_registers::interfaces::{ReadWriteable, Writeable};
|
use tock_registers::interfaces::{ReadWriteable, Writeable};
|
||||||
|
|
||||||
use crate::{
|
use crate::{
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
use core::fmt::{self, Arguments};
|
use core::fmt::{self, Arguments};
|
||||||
|
|
||||||
use abi::error::Error;
|
use abi::error::Error;
|
||||||
use libk_thread::process::Process;
|
use libk::task::process::Process;
|
||||||
use libk_util::{ring::RingBuffer, sync::IrqSafeSpinlock, StaticVector};
|
use libk_util::{ring::RingBuffer, sync::IrqSafeSpinlock, StaticVector};
|
||||||
|
|
||||||
const MAX_DEBUG_SINKS: usize = 4;
|
const MAX_DEBUG_SINKS: usize = 4;
|
||||||
@ -63,7 +63,7 @@ macro_rules! log_print_raw {
|
|||||||
|
|
||||||
macro_rules! log_print {
|
macro_rules! log_print {
|
||||||
($level:expr, $($args:tt)+) => {
|
($level:expr, $($args:tt)+) => {
|
||||||
log_print_raw!($level, "cpu{}:{}:{}: {}", libk::cpu_index(), file!(), line!(), format_args!($($args)+))
|
log_print_raw!($level, "cpu{}:{}:{}: {}", libk::task::cpu_index(), file!(), line!(), format_args!($($args)+))
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -5,7 +5,7 @@ use core::time::Duration;
|
|||||||
use abi::{error::Error, primitive_enum};
|
use abi::{error::Error, primitive_enum};
|
||||||
use alloc::{vec, vec::Vec};
|
use alloc::{vec, vec::Vec};
|
||||||
use bitflags::bitflags;
|
use bitflags::bitflags;
|
||||||
use libk::runtime;
|
use libk::task::runtime;
|
||||||
use libk_util::{sync::IrqSafeSpinlock, StaticVector};
|
use libk_util::{sync::IrqSafeSpinlock, StaticVector};
|
||||||
|
|
||||||
use crate::debug::DebugSink;
|
use crate::debug::DebugSink;
|
||||||
|
@ -7,14 +7,13 @@ use core::{
|
|||||||
|
|
||||||
use abi::{error::Error, io::DeviceRequest, process::ProcessId};
|
use abi::{error::Error, io::DeviceRequest, process::ProcessId};
|
||||||
use device_api::Device;
|
use device_api::Device;
|
||||||
use libk::vfs::block::BlockDevice;
|
use libk::{task::thread::Thread, vfs::block::BlockDevice};
|
||||||
use libk_mm::{
|
use libk_mm::{
|
||||||
address::{IntoRaw, PhysicalAddress},
|
address::{IntoRaw, PhysicalAddress},
|
||||||
device::{DeviceMemoryAttributes, DeviceMemoryCaching, RawDeviceMemoryMapping},
|
device::{DeviceMemoryAttributes, DeviceMemoryCaching, RawDeviceMemoryMapping},
|
||||||
table::{EntryLevel, MapAttributes},
|
table::{EntryLevel, MapAttributes},
|
||||||
PageProvider,
|
PageProvider,
|
||||||
};
|
};
|
||||||
use libk_thread::thread::Thread;
|
|
||||||
use libk_util::sync::IrqSafeSpinlock;
|
use libk_util::sync::IrqSafeSpinlock;
|
||||||
|
|
||||||
use crate::arch::L3;
|
use crate::arch::L3;
|
||||||
|
@ -12,7 +12,7 @@ use abi::{
|
|||||||
};
|
};
|
||||||
use device_api::serial::SerialDevice;
|
use device_api::serial::SerialDevice;
|
||||||
use futures_util::Future;
|
use futures_util::Future;
|
||||||
use libk_thread::process::ProcessImpl;
|
use libk::task::process::ProcessImpl;
|
||||||
use libk_util::{ring::RingBuffer, sync::IrqSafeSpinlock, waker::QueueWaker};
|
use libk_util::{ring::RingBuffer, sync::IrqSafeSpinlock, waker::QueueWaker};
|
||||||
|
|
||||||
use crate::{proc::io::ProcessIoImpl, task::process::ProcessManagerImpl};
|
use crate::{proc::io::ProcessIoImpl, task::process::ProcessManagerImpl};
|
||||||
|
@ -3,9 +3,8 @@
|
|||||||
use abi::error::Error;
|
use abi::error::Error;
|
||||||
use alloc::borrow::ToOwned;
|
use alloc::borrow::ToOwned;
|
||||||
use kernel_fs::devfs;
|
use kernel_fs::devfs;
|
||||||
use libk::runtime;
|
use libk::task::{runtime, thread::Thread};
|
||||||
use libk::vfs::{impls::FnSymlink, IoContext, NodeRef};
|
use libk::vfs::{impls::FnSymlink, IoContext, NodeRef};
|
||||||
use libk_thread::thread::Thread;
|
|
||||||
use memfs::MemoryFilesystem;
|
use memfs::MemoryFilesystem;
|
||||||
|
|
||||||
use crate::{
|
use crate::{
|
||||||
|
@ -1,8 +1,10 @@
|
|||||||
//! Process I/O management
|
//! Process I/O management
|
||||||
|
|
||||||
use abi::error::Error;
|
use abi::error::Error;
|
||||||
use libk::vfs::{FileSet, IoContext, Node};
|
use libk::{
|
||||||
use libk_thread::process::ProcessIo;
|
task::process::ProcessIo,
|
||||||
|
vfs::{FileSet, IoContext, Node},
|
||||||
|
};
|
||||||
|
|
||||||
/// I/O context of a process, contains information like root, current directory and file
|
/// I/O context of a process, contains information like root, current directory and file
|
||||||
/// descriptor table
|
/// descriptor table
|
||||||
|
@ -2,8 +2,7 @@
|
|||||||
|
|
||||||
use abi::{error::Error, path::Path, process::ProcessGroupId};
|
use abi::{error::Error, path::Path, process::ProcessGroupId};
|
||||||
use alloc::sync::{Arc, Weak};
|
use alloc::sync::{Arc, Weak};
|
||||||
use libk::vfs::IoContext;
|
use libk::{task::thread::Thread, vfs::IoContext};
|
||||||
use libk_thread::thread::Thread;
|
|
||||||
|
|
||||||
use crate::task::process::ProcessImpl;
|
use crate::task::process::ProcessImpl;
|
||||||
|
|
||||||
@ -20,5 +19,5 @@ pub fn load_binary<P: AsRef<Path>>(
|
|||||||
args: &[&str],
|
args: &[&str],
|
||||||
envs: &[&str],
|
envs: &[&str],
|
||||||
) -> Result<(Arc<ProcessImpl>, Arc<Thread>), Error> {
|
) -> Result<(Arc<ProcessImpl>, Arc<Thread>), Error> {
|
||||||
libk_thread::binary::load(ioctx, group_id, parent, path, args, envs)
|
libk::task::binary::load(ioctx, group_id, parent, path, args, envs)
|
||||||
}
|
}
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
use libk_thread::{mem::ForeignPointer, thread::Thread};
|
use libk::task::{mem::ForeignPointer, thread::Thread};
|
||||||
use yggdrasil_abi::error::Error;
|
use yggdrasil_abi::error::Error;
|
||||||
|
|
||||||
pub(super) fn ref_const<'a, T: Sized>(addr: usize) -> Result<&'a T, Error> {
|
pub(super) fn ref_const<'a, T: Sized>(addr: usize) -> Result<&'a T, Error> {
|
||||||
|
@ -58,7 +58,12 @@ mod impls {
|
|||||||
};
|
};
|
||||||
use alloc::{boxed::Box, sync::Arc};
|
use alloc::{boxed::Box, sync::Arc};
|
||||||
use libk::{
|
use libk::{
|
||||||
block, runtime,
|
block,
|
||||||
|
task::{
|
||||||
|
process::{Process, ProcessManager},
|
||||||
|
runtime,
|
||||||
|
thread::Thread,
|
||||||
|
},
|
||||||
vfs::{self, File, IoContext, MessagePayload, Read, Seek, Write},
|
vfs::{self, File, IoContext, MessagePayload, Read, Seek, Write},
|
||||||
};
|
};
|
||||||
use ygg_driver_net_core::socket::{RawSocket, TcpListener, TcpSocket, UdpSocket};
|
use ygg_driver_net_core::socket::{RawSocket, TcpListener, TcpSocket, UdpSocket};
|
||||||
@ -73,10 +78,6 @@ mod impls {
|
|||||||
process::VirtualRangeBacking,
|
process::VirtualRangeBacking,
|
||||||
table::{EntryLevelExt, MapAttributes},
|
table::{EntryLevelExt, MapAttributes},
|
||||||
};
|
};
|
||||||
use libk_thread::{
|
|
||||||
process::{Process, ProcessManager},
|
|
||||||
thread::Thread,
|
|
||||||
};
|
|
||||||
|
|
||||||
use crate::{
|
use crate::{
|
||||||
arch::L3,
|
arch::L3,
|
||||||
|
@ -8,11 +8,14 @@ use kernel_arch::{
|
|||||||
task::{Scheduler, TaskContext, Termination},
|
task::{Scheduler, TaskContext, Termination},
|
||||||
Architecture, ArchitectureImpl,
|
Architecture, ArchitectureImpl,
|
||||||
};
|
};
|
||||||
use libk::{arch::Cpu, runtime};
|
use libk::{
|
||||||
use libk_thread::{
|
arch::Cpu,
|
||||||
sched::{init_queues, CpuQueue},
|
task::{
|
||||||
thread::Thread,
|
runtime,
|
||||||
TaskContextImpl,
|
sched::{init_queues, CpuQueue},
|
||||||
|
thread::Thread,
|
||||||
|
TaskContextImpl,
|
||||||
|
},
|
||||||
};
|
};
|
||||||
use libk_util::sync::SpinFence;
|
use libk_util::sync::SpinFence;
|
||||||
|
|
||||||
|
@ -2,12 +2,12 @@
|
|||||||
|
|
||||||
use abi::process::{ProcessGroupId, ProcessId, Signal};
|
use abi::process::{ProcessGroupId, ProcessId, Signal};
|
||||||
use alloc::{collections::BTreeMap, sync::Arc};
|
use alloc::{collections::BTreeMap, sync::Arc};
|
||||||
use libk_thread::process::{Process, ProcessManager};
|
use libk::task::process::{Process, ProcessManager};
|
||||||
use libk_util::sync::spin_rwlock::IrqSafeRwLock;
|
use libk_util::sync::spin_rwlock::IrqSafeRwLock;
|
||||||
|
|
||||||
use crate::proc::io::ProcessIoImpl;
|
use crate::proc::io::ProcessIoImpl;
|
||||||
|
|
||||||
pub use libk_thread::{
|
pub use libk::task::{
|
||||||
process::ProcessImage,
|
process::ProcessImage,
|
||||||
types::{ProcessTlsInfo, ProcessTlsLayout},
|
types::{ProcessTlsInfo, ProcessTlsLayout},
|
||||||
};
|
};
|
||||||
@ -16,7 +16,7 @@ pub use libk_thread::{
|
|||||||
pub struct ProcessManagerImpl;
|
pub struct ProcessManagerImpl;
|
||||||
|
|
||||||
/// Alias type for [libk_thread::process::ProcessImpl]
|
/// Alias type for [libk_thread::process::ProcessImpl]
|
||||||
pub type ProcessImpl = libk_thread::process::ProcessImpl<ProcessManagerImpl, ProcessIoImpl>;
|
pub type ProcessImpl = libk::task::process::ProcessImpl<ProcessManagerImpl, ProcessIoImpl>;
|
||||||
|
|
||||||
static PROCESSES: IrqSafeRwLock<BTreeMap<ProcessId, Arc<ProcessImpl>>> =
|
static PROCESSES: IrqSafeRwLock<BTreeMap<ProcessId, Arc<ProcessImpl>>> =
|
||||||
IrqSafeRwLock::new(BTreeMap::new());
|
IrqSafeRwLock::new(BTreeMap::new());
|
||||||
|
Loading…
x
Reference in New Issue
Block a user