bootstrap: Directly pass event cap fd to procmgr
This commit is contained in:
@@ -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)
|
||||
},
|
||||
);
|
||||
|
||||
|
||||
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user