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"
|
||||
version = "0.1.0"
|
||||
dependencies = [
|
||||
"abi-lib",
|
||||
"atomic_enum",
|
||||
"crossbeam-queue",
|
||||
"device-api",
|
||||
"elf 0.7.2",
|
||||
"futures-util",
|
||||
"kernel-arch",
|
||||
"libk-device",
|
||||
"libk-mm",
|
||||
"libk-thread",
|
||||
"libk-util",
|
||||
"log",
|
||||
"yggdrasil-abi",
|
||||
@ -801,23 +803,6 @@ dependencies = [
|
||||
"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]]
|
||||
name = "libk-util"
|
||||
version = "0.1.0"
|
||||
@ -1732,7 +1717,6 @@ dependencies = [
|
||||
"kernel-fs",
|
||||
"libk",
|
||||
"libk-mm",
|
||||
"libk-thread",
|
||||
"libk-util",
|
||||
"log",
|
||||
"memoffset 0.9.0",
|
||||
@ -1748,7 +1732,6 @@ version = "0.1.0"
|
||||
dependencies = [
|
||||
"libk",
|
||||
"libk-mm",
|
||||
"libk-thread",
|
||||
"libk-util",
|
||||
"yggdrasil-abi",
|
||||
]
|
||||
@ -1762,7 +1745,6 @@ dependencies = [
|
||||
"libk",
|
||||
"libk-device",
|
||||
"libk-mm",
|
||||
"libk-thread",
|
||||
"libk-util",
|
||||
"log",
|
||||
"serde",
|
||||
@ -1791,7 +1773,6 @@ dependencies = [
|
||||
"kernel-fs",
|
||||
"libk",
|
||||
"libk-mm",
|
||||
"libk-thread",
|
||||
"libk-util",
|
||||
"log",
|
||||
"static_assertions",
|
||||
@ -1822,8 +1803,8 @@ dependencies = [
|
||||
"bytemuck",
|
||||
"device-api",
|
||||
"futures-util",
|
||||
"libk",
|
||||
"libk-mm",
|
||||
"libk-thread",
|
||||
"libk-util",
|
||||
"log",
|
||||
"ygg_driver_input",
|
||||
@ -1838,8 +1819,8 @@ dependencies = [
|
||||
"bytemuck",
|
||||
"device-api",
|
||||
"futures-util",
|
||||
"libk",
|
||||
"libk-mm",
|
||||
"libk-thread",
|
||||
"libk-util",
|
||||
"log",
|
||||
"tock-registers 0.9.0",
|
||||
@ -1921,7 +1902,6 @@ dependencies = [
|
||||
"libk",
|
||||
"libk-device",
|
||||
"libk-mm",
|
||||
"libk-thread",
|
||||
"libk-util",
|
||||
"linked_list_allocator",
|
||||
"log",
|
||||
|
@ -17,7 +17,6 @@ device-api = { path = "lib/device-api", features = ["derive"] }
|
||||
libk = { path = "libk" }
|
||||
libk-util = { path = "libk/libk-util" }
|
||||
libk-mm = { path = "libk/libk-mm" }
|
||||
libk-thread = { path = "libk/libk-thread" }
|
||||
libk-device = { path = "libk/libk-device" }
|
||||
memtables = { path = "lib/memtables" }
|
||||
vmalloc = { path = "lib/vmalloc" }
|
||||
|
@ -7,7 +7,6 @@ authors = ["Mark Poliakov <mark@alnyan.me>"]
|
||||
[dependencies]
|
||||
yggdrasil-abi = { path = "../../../../lib/abi" }
|
||||
libk-mm = { path = "../../../libk/libk-mm" }
|
||||
libk-thread = { path = "../../../libk/libk-thread" }
|
||||
libk-util = { path = "../../../libk/libk-util" }
|
||||
libk = { path = "../../../libk" }
|
||||
device-api = { path = "../../../lib/device-api", features = ["derive"] }
|
||||
|
@ -13,9 +13,11 @@ use device_api::{
|
||||
};
|
||||
use error::AhciError;
|
||||
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_thread::runtime;
|
||||
use libk_util::{sync::IrqSafeSpinlock, OneTimeInit};
|
||||
use port::AhciPort;
|
||||
use regs::{PortRegs, Regs};
|
||||
|
@ -7,7 +7,6 @@ authors = ["Mark Poliakov <mark@alnyan.me>"]
|
||||
[dependencies]
|
||||
yggdrasil-abi = { path = "../../../../lib/abi" }
|
||||
libk-util = { path = "../../../libk/libk-util" }
|
||||
libk-thread = { path = "../../../libk/libk-thread" }
|
||||
libk-mm = { path = "../../../libk/libk-mm" }
|
||||
libk = { path = "../../../libk" }
|
||||
device-api = { path = "../../../lib/device-api", features = ["derive"] }
|
||||
|
@ -2,11 +2,11 @@ use core::task::Poll;
|
||||
|
||||
use alloc::{boxed::Box, format};
|
||||
use kernel_fs::devfs;
|
||||
use libk::task::cpu_index;
|
||||
use libk::vfs::block::{
|
||||
probe_partitions, IoOperation, IoRequest, IoSubmissionId, NgBlockDevice, NgBlockDeviceWrapper,
|
||||
};
|
||||
use libk_mm::address::AsPhysicalAddress;
|
||||
use libk_thread::cpu_index;
|
||||
use libk_util::waker::QueueWaker;
|
||||
use yggdrasil_abi::error::Error;
|
||||
|
||||
|
@ -17,11 +17,11 @@ use device_api::{
|
||||
Device,
|
||||
};
|
||||
use drive::NvmeDrive;
|
||||
use libk::task::{cpu_count, cpu_index, runtime};
|
||||
use libk_mm::{
|
||||
address::{IntoRaw, PhysicalAddress},
|
||||
device::DeviceMemoryIo,
|
||||
};
|
||||
use libk_thread::{cpu_count, cpu_index, runtime};
|
||||
use libk_util::{
|
||||
sync::{IrqGuard, IrqSafeSpinlock},
|
||||
OneTimeInit,
|
||||
|
@ -11,7 +11,7 @@ ygg_driver_input = { path = "../../input" }
|
||||
|
||||
libk-util = { path = "../../../libk/libk-util" }
|
||||
libk-mm = { path = "../../../libk/libk-mm" }
|
||||
libk-thread = { path = "../../../libk/libk-thread" }
|
||||
libk = { path = "../../../libk" }
|
||||
|
||||
log = "0.4.20"
|
||||
bytemuck = { version = "1.14.0", features = ["derive"] }
|
||||
|
@ -1,6 +1,6 @@
|
||||
use alloc::{sync::Arc, vec::Vec};
|
||||
use futures_util::future::BoxFuture;
|
||||
use libk_thread::runtime;
|
||||
use libk::task::runtime;
|
||||
use libk_util::sync::spin_rwlock::IrqSafeRwLock;
|
||||
|
||||
use crate::{
|
||||
|
@ -6,6 +6,5 @@ edition = "2021"
|
||||
[dependencies]
|
||||
yggdrasil-abi = { path = "../../../lib/abi" }
|
||||
libk-util = { path = "../../libk/libk-util" }
|
||||
libk-thread = { path = "../../libk/libk-thread" }
|
||||
libk-mm = { path = "../../libk/libk-mm" }
|
||||
libk = { path = "../../libk" }
|
||||
|
@ -4,8 +4,10 @@ extern crate alloc;
|
||||
|
||||
use core::task::{Context, Poll};
|
||||
|
||||
use libk::vfs::{CharDevice, FileReadiness};
|
||||
use libk_thread::block;
|
||||
use libk::{
|
||||
block,
|
||||
vfs::{CharDevice, FileReadiness},
|
||||
};
|
||||
use libk_util::ring::LossyRingQueue;
|
||||
use yggdrasil_abi::{
|
||||
error::Error,
|
||||
|
@ -7,7 +7,6 @@ edition = "2021"
|
||||
yggdrasil-abi = { path = "../../../../lib/abi", features = ["serde_kernel", "bytemuck"] }
|
||||
libk-mm = { path = "../../../libk/libk-mm" }
|
||||
libk-util = { path = "../../../libk/libk-util" }
|
||||
libk-thread = { path = "../../../libk/libk-thread" }
|
||||
libk-device = { path = "../../../libk/libk-device" }
|
||||
libk = { path = "../../../libk" }
|
||||
|
||||
|
@ -7,7 +7,7 @@ use core::{
|
||||
};
|
||||
|
||||
use alloc::{boxed::Box, collections::BTreeMap};
|
||||
use libk_thread::runtime;
|
||||
use libk::task::runtime;
|
||||
use libk_util::{sync::spin_rwlock::IrqSafeRwLock, waker::QueueWaker};
|
||||
use yggdrasil_abi::{
|
||||
error::Error,
|
||||
|
@ -10,8 +10,8 @@ use alloc::sync::Arc;
|
||||
use bytemuck::Pod;
|
||||
use ethernet::L2Packet;
|
||||
use l3::L3Packet;
|
||||
use libk::task::runtime;
|
||||
use libk_mm::PageBox;
|
||||
use libk_thread::runtime;
|
||||
use libk_util::queue::UnboundedMpmcQueue;
|
||||
use yggdrasil_abi::{error::Error, net::protocols::EthernetFrame};
|
||||
|
||||
|
@ -7,13 +7,13 @@ use core::{
|
||||
};
|
||||
|
||||
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_mm::PageBox;
|
||||
use libk_thread::{
|
||||
block,
|
||||
runtime::{run_with_timeout, FutureTimeout},
|
||||
};
|
||||
use libk_util::{
|
||||
queue::BoundedMpmcQueue,
|
||||
sync::{
|
||||
|
@ -12,7 +12,7 @@ ygg_driver_usb = { path = "../../bus/usb" }
|
||||
|
||||
libk-util = { path = "../../../libk/libk-util" }
|
||||
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" }
|
||||
|
||||
|
@ -4,11 +4,11 @@ use alloc::{boxed::Box, collections::BTreeMap, sync::Arc, vec, vec::Vec};
|
||||
use atomic_enum::atomic_enum;
|
||||
use device_api::{interrupt::InterruptHandler, Device};
|
||||
use futures_util::task::AtomicWaker;
|
||||
use libk::task::runtime::{self, FutureTimeout};
|
||||
use libk_mm::{
|
||||
address::{AsPhysicalAddress, PhysicalAddress},
|
||||
PageBox,
|
||||
};
|
||||
use libk_thread::runtime::{self, FutureTimeout};
|
||||
use libk_util::{sync::spin_rwlock::IrqSafeRwLock, OneTimeInit};
|
||||
use ygg_driver_usb::{
|
||||
bus::UsbBusManager,
|
||||
|
@ -7,13 +7,20 @@ authors = ["Mark Poliakov <mark@alnyan.me>"]
|
||||
[dependencies]
|
||||
libk-mm = { path = "libk-mm" }
|
||||
libk-util = { path = "libk-util" }
|
||||
libk-thread = { path = "libk-thread" }
|
||||
libk-device = { path = "libk-device" }
|
||||
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"] }
|
||||
|
||||
log = "0.4.20"
|
||||
atomic_enum = "0.2.0"
|
||||
futures-util = { version = "0.3.28", default-features = false, features = ["alloc", "async-await"] }
|
||||
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 kernel_arch::{Architecture, ArchitectureImpl, CpuImpl, LocalCpuImpl};
|
||||
use libk_thread::sched::CpuQueue;
|
||||
use libk_util::sync::IrqGuard;
|
||||
|
||||
use crate::task::sched::CpuQueue;
|
||||
|
||||
/// Kernel wrapper for local CPU info structure. See [kernel_arch::LocalCpuImpl].
|
||||
#[repr(transparent)]
|
||||
pub struct LocalCpu<'a>(LocalCpuImpl<'a, CpuQueue>);
|
||||
|
@ -15,12 +15,15 @@
|
||||
inline_const,
|
||||
trait_alias,
|
||||
if_let_guard,
|
||||
trait_upcasting
|
||||
trait_upcasting,
|
||||
arbitrary_self_types,
|
||||
slice_split_once
|
||||
)]
|
||||
|
||||
extern crate alloc;
|
||||
|
||||
pub use libk_thread::{block, cpu_count, cpu_index, runtime};
|
||||
#[macro_use]
|
||||
pub mod task;
|
||||
|
||||
pub mod arch;
|
||||
pub mod vfs;
|
||||
|
@ -16,7 +16,7 @@ use libk_mm::{
|
||||
use libk_util::io::{Read, Seek};
|
||||
use yggdrasil_abi::{error::Error, io::SeekFrom};
|
||||
|
||||
use crate::{
|
||||
use crate::task::{
|
||||
process::ProcessImage,
|
||||
types::{ProcessTlsInfo, ProcessTlsLayout},
|
||||
};
|
@ -21,7 +21,7 @@ use yggdrasil_abi::{
|
||||
process::{ProcessGroupId, ProgramArgumentInner},
|
||||
};
|
||||
|
||||
use crate::{
|
||||
use crate::task::{
|
||||
mem::ForeignPointer,
|
||||
process::{ProcessImage, ProcessImpl, ProcessIo, ProcessManager},
|
||||
thread::Thread,
|
@ -177,7 +177,7 @@ pub fn validate_user_region(
|
||||
len: usize,
|
||||
_need_write: bool,
|
||||
) -> Result<(), Error> {
|
||||
if base + len > crate::mem::KERNEL_VIRT_OFFSET {
|
||||
if base + len > crate::task::mem::KERNEL_VIRT_OFFSET {
|
||||
panic!("Invalid argument");
|
||||
}
|
||||
|
@ -1,15 +1,13 @@
|
||||
#![no_std]
|
||||
#![feature(
|
||||
trait_alias,
|
||||
never_type,
|
||||
inline_const,
|
||||
arbitrary_self_types,
|
||||
slice_ptr_get,
|
||||
slice_split_once,
|
||||
let_chains
|
||||
)]
|
||||
|
||||
extern crate alloc;
|
||||
// #![no_std]
|
||||
// #![feature(
|
||||
// trait_alias,
|
||||
// never_type,
|
||||
// inline_const,
|
||||
// arbitrary_self_types,
|
||||
// slice_ptr_get,
|
||||
// slice_split_once,
|
||||
// let_chains
|
||||
// )]
|
||||
|
||||
use api::__signal_process_group;
|
||||
use kernel_arch::{Architecture, ArchitectureImpl, KernelTableManagerImpl};
|
@ -25,7 +25,7 @@ use yggdrasil_abi::{
|
||||
process::{ExitCode, ProcessGroupId, ProcessId, Signal, ThreadSpawnOptions},
|
||||
};
|
||||
|
||||
use crate::{
|
||||
use crate::task::{
|
||||
futex::UserspaceMutex,
|
||||
thread::Thread,
|
||||
types::{AllocateProcessId, ProcessTlsInfo},
|
@ -6,7 +6,7 @@ use kernel_arch::task::TaskContext;
|
||||
use libk_util::waker::WakeWeak;
|
||||
use yggdrasil_abi::error::Error;
|
||||
|
||||
use crate::{thread::Thread, TaskContextImpl};
|
||||
use crate::task::{thread::Thread, TaskContextImpl};
|
||||
|
||||
use super::{
|
||||
task::{Task, Termination},
|
@ -1,7 +1,7 @@
|
||||
#[macro_export]
|
||||
macro_rules! block {
|
||||
($($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)*
|
||||
}))
|
||||
};
|
@ -3,7 +3,7 @@ use crossbeam_queue::ArrayQueue;
|
||||
use libk_util::{sync::IrqGuard, OneTimeInit};
|
||||
use yggdrasil_abi::error::Error;
|
||||
|
||||
use crate::thread::Thread;
|
||||
use crate::task::thread::Thread;
|
||||
|
||||
use super::task::Task;
|
||||
|
@ -8,7 +8,7 @@ use kernel_arch::{
|
||||
};
|
||||
use libk_util::{sync::IrqGuard, OneTimeInit};
|
||||
|
||||
use crate::{thread::Thread, TaskContextImpl, ThreadId, ThreadState};
|
||||
use crate::task::{thread::Thread, TaskContextImpl, ThreadId, ThreadState};
|
||||
|
||||
/// Per-CPU queue
|
||||
pub struct CpuQueue {
|
@ -12,7 +12,7 @@ use kernel_arch::task::Scheduler;
|
||||
use libk_util::{sync::LockMethod, waker::QueueWaker};
|
||||
use yggdrasil_abi::error::Error;
|
||||
|
||||
use crate::{sched::CpuQueue, thread::Thread};
|
||||
use crate::task::{sched::CpuQueue, thread::Thread};
|
||||
|
||||
struct ThreadedMutexInner {
|
||||
queue: ArrayQueue<Arc<Thread>>,
|
@ -21,7 +21,7 @@ use yggdrasil_abi::{
|
||||
process::{ExitCode, ProcessId, Signal, SignalEntryData},
|
||||
};
|
||||
|
||||
use crate::{
|
||||
use crate::task::{
|
||||
mem::ForeignPointer,
|
||||
process::{Process, ProcessManager},
|
||||
sched::CpuQueue,
|
@ -11,14 +11,16 @@ use alloc::{
|
||||
sync::Arc,
|
||||
};
|
||||
use futures_util::{task::AtomicWaker, Future};
|
||||
use libk_thread::{block, sync::Mutex};
|
||||
use libk_util::sync::{IrqSafeSpinlock, LockMethod};
|
||||
use yggdrasil_abi::{
|
||||
error::Error,
|
||||
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
|
||||
pub struct Channel {
|
||||
|
@ -6,7 +6,6 @@ use core::{
|
||||
|
||||
use alloc::{sync::Arc, vec, vec::Vec};
|
||||
use futures_util::{task::AtomicWaker, Future};
|
||||
use libk_thread::block;
|
||||
use libk_util::sync::IrqSafeSpinlock;
|
||||
use yggdrasil_abi::error::Error;
|
||||
|
||||
|
@ -1,14 +1,16 @@
|
||||
use alloc::{borrow::ToOwned, sync::Arc};
|
||||
use libk_thread::binary::ProgramLoadSource;
|
||||
use yggdrasil_abi::{
|
||||
error::Error,
|
||||
io::{FileMode, FileType, GroupId, OpenOptions, UserId},
|
||||
path::{Path, PathBuf},
|
||||
};
|
||||
|
||||
use crate::vfs::{
|
||||
use crate::{
|
||||
task::binary::ProgramLoadSource,
|
||||
vfs::{
|
||||
node::{AccessToken, CreateInfo},
|
||||
File, FileRef, NodeRef,
|
||||
},
|
||||
};
|
||||
|
||||
/// Describes a general filesystem access
|
||||
|
@ -7,11 +7,13 @@ use core::{
|
||||
use alloc::collections::BTreeMap;
|
||||
|
||||
use futures_util::{future::BoxFuture, FutureExt};
|
||||
use libk_thread::{runtime, sync::Mutex};
|
||||
use libk_util::sync::LockMethod;
|
||||
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
|
||||
/// timeout is reached.
|
||||
|
@ -8,7 +8,6 @@ use core::{
|
||||
};
|
||||
|
||||
use alloc::{boxed::Box, sync::Arc};
|
||||
use libk_thread::{block, signal_process_group};
|
||||
use libk_util::{
|
||||
ring::{LossyRingQueue, RingBuffer},
|
||||
sync::{spin_rwlock::IrqSafeRwLock, IrqSafeSpinlock},
|
||||
@ -22,6 +21,8 @@ use yggdrasil_abi::{
|
||||
process::{ProcessGroupId, Signal},
|
||||
};
|
||||
|
||||
use crate::task::signal_process_group;
|
||||
|
||||
const CAPACITY: usize = 8192;
|
||||
|
||||
struct PtySlaveToMasterHalf {
|
||||
|
@ -7,14 +7,16 @@ use core::{
|
||||
use alloc::boxed::Box;
|
||||
|
||||
use futures_util::FutureExt;
|
||||
use libk_thread::{
|
||||
runtime::{self, SleepFuture},
|
||||
sync::Mutex,
|
||||
};
|
||||
use libk_util::sync::LockMethod;
|
||||
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
|
||||
pub struct TimerFile {
|
||||
|
@ -7,8 +7,8 @@ use kernel_arch_x86_64::context::IrqFrame;
|
||||
use libk::{
|
||||
arch::Cpu,
|
||||
device::{external_interrupt_controller, message_interrupt_controller},
|
||||
task::thread::Thread,
|
||||
};
|
||||
use libk_thread::thread::Thread;
|
||||
use static_assertions::{const_assert, const_assert_eq};
|
||||
|
||||
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_fs::devfs;
|
||||
use libk::runtime;
|
||||
use libk::task::runtime;
|
||||
use tock_registers::interfaces::Writeable;
|
||||
use yboot_proto::{
|
||||
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 kernel_arch_x86_64::{context::ExceptionFrame, registers::CR3};
|
||||
use libk::arch::Cpu;
|
||||
use libk_thread::thread::Thread;
|
||||
use libk::{arch::Cpu, task::thread::Thread};
|
||||
use tock_registers::interfaces::Readable;
|
||||
|
||||
use crate::{arch::x86_64::apic, task::process::ProcessManagerImpl};
|
||||
|
@ -6,7 +6,7 @@ use device_api::{
|
||||
timer::MonotonicTimestampProviderDevice,
|
||||
Device,
|
||||
};
|
||||
use libk::{device::external_interrupt_controller, runtime};
|
||||
use libk::{device::external_interrupt_controller, task::runtime};
|
||||
use libk_util::sync::IrqSafeSpinlock;
|
||||
|
||||
use crate::arch::x86_64::{
|
||||
|
@ -8,7 +8,7 @@ use kernel_arch_x86_64::{
|
||||
context::SyscallFrame,
|
||||
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 crate::{
|
||||
|
@ -2,7 +2,7 @@
|
||||
use core::fmt::{self, Arguments};
|
||||
|
||||
use abi::error::Error;
|
||||
use libk_thread::process::Process;
|
||||
use libk::task::process::Process;
|
||||
use libk_util::{ring::RingBuffer, sync::IrqSafeSpinlock, StaticVector};
|
||||
|
||||
const MAX_DEBUG_SINKS: usize = 4;
|
||||
@ -63,7 +63,7 @@ macro_rules! log_print_raw {
|
||||
|
||||
macro_rules! log_print {
|
||||
($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 alloc::{vec, vec::Vec};
|
||||
use bitflags::bitflags;
|
||||
use libk::runtime;
|
||||
use libk::task::runtime;
|
||||
use libk_util::{sync::IrqSafeSpinlock, StaticVector};
|
||||
|
||||
use crate::debug::DebugSink;
|
||||
|
@ -7,14 +7,13 @@ use core::{
|
||||
|
||||
use abi::{error::Error, io::DeviceRequest, process::ProcessId};
|
||||
use device_api::Device;
|
||||
use libk::vfs::block::BlockDevice;
|
||||
use libk::{task::thread::Thread, vfs::block::BlockDevice};
|
||||
use libk_mm::{
|
||||
address::{IntoRaw, PhysicalAddress},
|
||||
device::{DeviceMemoryAttributes, DeviceMemoryCaching, RawDeviceMemoryMapping},
|
||||
table::{EntryLevel, MapAttributes},
|
||||
PageProvider,
|
||||
};
|
||||
use libk_thread::thread::Thread;
|
||||
use libk_util::sync::IrqSafeSpinlock;
|
||||
|
||||
use crate::arch::L3;
|
||||
|
@ -12,7 +12,7 @@ use abi::{
|
||||
};
|
||||
use device_api::serial::SerialDevice;
|
||||
use futures_util::Future;
|
||||
use libk_thread::process::ProcessImpl;
|
||||
use libk::task::process::ProcessImpl;
|
||||
use libk_util::{ring::RingBuffer, sync::IrqSafeSpinlock, waker::QueueWaker};
|
||||
|
||||
use crate::{proc::io::ProcessIoImpl, task::process::ProcessManagerImpl};
|
||||
|
@ -3,9 +3,8 @@
|
||||
use abi::error::Error;
|
||||
use alloc::borrow::ToOwned;
|
||||
use kernel_fs::devfs;
|
||||
use libk::runtime;
|
||||
use libk::task::{runtime, thread::Thread};
|
||||
use libk::vfs::{impls::FnSymlink, IoContext, NodeRef};
|
||||
use libk_thread::thread::Thread;
|
||||
use memfs::MemoryFilesystem;
|
||||
|
||||
use crate::{
|
||||
|
@ -1,8 +1,10 @@
|
||||
//! Process I/O management
|
||||
|
||||
use abi::error::Error;
|
||||
use libk::vfs::{FileSet, IoContext, Node};
|
||||
use libk_thread::process::ProcessIo;
|
||||
use libk::{
|
||||
task::process::ProcessIo,
|
||||
vfs::{FileSet, IoContext, Node},
|
||||
};
|
||||
|
||||
/// I/O context of a process, contains information like root, current directory and file
|
||||
/// descriptor table
|
||||
|
@ -2,8 +2,7 @@
|
||||
|
||||
use abi::{error::Error, path::Path, process::ProcessGroupId};
|
||||
use alloc::sync::{Arc, Weak};
|
||||
use libk::vfs::IoContext;
|
||||
use libk_thread::thread::Thread;
|
||||
use libk::{task::thread::Thread, vfs::IoContext};
|
||||
|
||||
use crate::task::process::ProcessImpl;
|
||||
|
||||
@ -20,5 +19,5 @@ pub fn load_binary<P: AsRef<Path>>(
|
||||
args: &[&str],
|
||||
envs: &[&str],
|
||||
) -> 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;
|
||||
|
||||
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 libk::{
|
||||
block, runtime,
|
||||
block,
|
||||
task::{
|
||||
process::{Process, ProcessManager},
|
||||
runtime,
|
||||
thread::Thread,
|
||||
},
|
||||
vfs::{self, File, IoContext, MessagePayload, Read, Seek, Write},
|
||||
};
|
||||
use ygg_driver_net_core::socket::{RawSocket, TcpListener, TcpSocket, UdpSocket};
|
||||
@ -73,10 +78,6 @@ mod impls {
|
||||
process::VirtualRangeBacking,
|
||||
table::{EntryLevelExt, MapAttributes},
|
||||
};
|
||||
use libk_thread::{
|
||||
process::{Process, ProcessManager},
|
||||
thread::Thread,
|
||||
};
|
||||
|
||||
use crate::{
|
||||
arch::L3,
|
||||
|
@ -8,11 +8,14 @@ use kernel_arch::{
|
||||
task::{Scheduler, TaskContext, Termination},
|
||||
Architecture, ArchitectureImpl,
|
||||
};
|
||||
use libk::{arch::Cpu, runtime};
|
||||
use libk_thread::{
|
||||
use libk::{
|
||||
arch::Cpu,
|
||||
task::{
|
||||
runtime,
|
||||
sched::{init_queues, CpuQueue},
|
||||
thread::Thread,
|
||||
TaskContextImpl,
|
||||
},
|
||||
};
|
||||
use libk_util::sync::SpinFence;
|
||||
|
||||
|
@ -2,12 +2,12 @@
|
||||
|
||||
use abi::process::{ProcessGroupId, ProcessId, Signal};
|
||||
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 crate::proc::io::ProcessIoImpl;
|
||||
|
||||
pub use libk_thread::{
|
||||
pub use libk::task::{
|
||||
process::ProcessImage,
|
||||
types::{ProcessTlsInfo, ProcessTlsLayout},
|
||||
};
|
||||
@ -16,7 +16,7 @@ pub use libk_thread::{
|
||||
pub struct ProcessManagerImpl;
|
||||
|
||||
/// 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>>> =
|
||||
IrqSafeRwLock::new(BTreeMap::new());
|
||||
|
Loading…
x
Reference in New Issue
Block a user