Skip to content

Commit

Permalink
Merge branch 'obhq:main' into main
Browse files Browse the repository at this point in the history
  • Loading branch information
SuchAFuriousDeath committed Apr 7, 2024
2 parents 9eb257d + e40bfbe commit 3e9dd7e
Show file tree
Hide file tree
Showing 5 changed files with 931 additions and 882 deletions.
40 changes: 19 additions & 21 deletions src/kernel/src/main.rs
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
use crate::arch::MachDep;
use crate::budget::{Budget, BudgetManager, ProcType};
use crate::dev::{
DebugManager, DebugManagerInitError, DipswInitError, DipswManager, TtyManager,
DebugManager, DebugManagerInitError, DipswInitError, DipswManager, DmemContainer, TtyManager,
TtyManagerInitError,
};
use crate::dmem::{DmemManager, DmemManagerInitError};
Expand All @@ -15,7 +15,7 @@ use crate::log::{print, LOGGER};
use crate::namedobj::NamedObjManager;
use crate::net::NetManager;
use crate::osem::OsemManager;
use crate::process::{VProc, VProcInitError, VThread};
use crate::process::{ProcManager, VThread};
use crate::regmgr::RegMgr;
use crate::rtld::{ExecError, LoadFlags, ModuleFlags, RuntimeLinker};
use crate::shm::SharedMemoryManager;
Expand Down Expand Up @@ -115,11 +115,9 @@ fn run() -> Result<(), KernelError> {

path.push("param.sfo");

// Open param.sfo.
let param = File::open(&path).map_err(KernelError::FailedToOpenGameParam)?;

// Load param.sfo.
let param = Arc::new(Param::read(param)?);
let param = File::open(&path).map_err(KernelError::FailedToOpenGameParam)?;
let param = Arc::new(Param::read(param).map_err(KernelError::FailedToReadGameParam)?);

// Get auth info for the process.
let auth =
Expand Down Expand Up @@ -366,6 +364,7 @@ fn run() -> Result<(), KernelError> {
NamedObjManager::new(&mut syscalls);
OsemManager::new(&mut syscalls);
UmtxManager::new(&mut syscalls);
let pmgr = ProcManager::new(&mut syscalls);

// Initialize runtime linker.
let ee = NativeEngine::new();
Expand All @@ -374,16 +373,17 @@ fn run() -> Result<(), KernelError> {
// TODO: Get correct budget name from the PS4.
let budget_id = budget.create(Budget::new("big app", ProcType::BigApp));
let proc_root = fs.lookup(proc_root, true, None).unwrap();

let proc = VProc::new(
auth,
budget_id,
ProcType::BigApp,
dev::DmemContainer::One, // See sys_budget_set on the PS4.
proc_root,
system_component,
syscalls,
)?;
let proc = pmgr
.spawn(
auth,
budget_id,
ProcType::BigApp,
DmemContainer::One, // See sys_budget_set on the PS4.
proc_root,
system_component,
syscalls,
)
.map_err(KernelError::CreateProcessFailed)?;

info!(
"Application stack: {:p}:{:p}",
Expand Down Expand Up @@ -449,8 +449,6 @@ fn run() -> Result<(), KernelError> {
todo!("statically linked eboot.bin");
}

// TODO: Setup hypervisor.

// Get entry point.
let boot = ld.kernel().unwrap();
let mut arg = Box::pin(EntryArg::new(&proc, app.clone()));
Expand Down Expand Up @@ -588,7 +586,7 @@ enum KernelError {
FailedToOpenGameParam(#[source] std::io::Error),

#[error("couldn't read param.sfo ")]
FailedToReadGameParam(#[from] param::ReadError),
FailedToReadGameParam(#[source] param::ReadError),

#[error("{0} has an invalid title identifier")]
InvalidTitleId(PathBuf),
Expand All @@ -614,8 +612,8 @@ enum KernelError {
#[error("dmem manager initialization failed")]
DmemManagerInitFailes(#[from] DmemManagerInitError),

#[error("virtual process initialization failed")]
VProcInitFailed(#[from] VProcInitError),
#[error("couldn't create application process")]
CreateProcessFailed(#[source] self::process::SpawnError),

#[error("couldn't execute {0}")]
ExecFailed(&'static VPath, #[source] ExecError),
Expand Down
File renamed without changes.
Loading

0 comments on commit 3e9dd7e

Please sign in to comment.