bootstrap: Directly pass event cap fd to procmgr

This commit is contained in:
bjorn3
2026-03-06 22:17:35 +01:00
parent 890f325368
commit b31f48cb59
2 changed files with 10 additions and 19 deletions
+7 -2
View File
@@ -148,8 +148,13 @@ pub fn main() -> ! {
&this_thr_fd,
scheme_creation_cap,
kernel_schemes,
|write_fd, scheme_creation_cap, auth, kernel_schemes| {
crate::procmgr::run(write_fd, auth, kernel_schemes, scheme_creation_cap)
|write_fd, scheme_creation_cap, auth, mut kernel_schemes| {
let event = kernel_schemes
.0
.remove(&GlobalSchemes::Event)
.expect("failed to get event fd");
drop(kernel_schemes);
crate::procmgr::run(write_fd, auth, event, scheme_creation_cap)
},
);
+3 -17
View File
@@ -29,7 +29,6 @@ use redox_scheme::{
Socket, Tag,
};
use slab::Slab;
use syscall::data::GlobalSchemes;
use syscall::schemev2::NewFdFlags;
use syscall::{
CallFlags, ContextStatus, ContextVerb, CtxtStsBuf, EACCES, EAGAIN, EBADF, EBADFD, ECANCELED,
@@ -39,8 +38,6 @@ use syscall::{
sig_bit,
};
use crate::KernelSchemeMap;
#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
enum VirtualId {
KernelId(Id),
@@ -48,12 +45,7 @@ enum VirtualId {
InternalId(u64),
}
pub fn run(
write_fd: FdGuard,
auth: FdGuard,
kernel_schemes: KernelSchemeMap,
scheme_creation_cap: FdGuard,
) -> ! {
pub fn run(write_fd: FdGuard, auth: FdGuard, event: FdGuard, scheme_creation_cap: FdGuard) -> ! {
let socket = Socket::create_inner(scheme_creation_cap.as_raw_fd(), true)
.expect("failed to open proc scheme socket");
drop(scheme_creation_cap);
@@ -61,14 +53,8 @@ pub fn run(
// TODO?
let socket_ident = socket.inner().raw();
let queue = RawEventQueue::new(
kernel_schemes
.get(GlobalSchemes::Event)
.expect("failed to get event fd")
.as_raw_fd(),
)
.expect("failed to create event queue");
drop(kernel_schemes);
let queue = RawEventQueue::new(event.as_raw_fd()).expect("failed to create event queue");
drop(event);
queue
.subscribe(socket.inner().raw(), socket_ident, EventFlags::EVENT_READ)