Browse Source

Merge branch 'feature/ps-module' of https://github.com/ian-h-chamberlain/ctru-rs

pull/47/head
Andrea Ciliberti 3 years ago
parent
commit
ab728c75c1
  1. 1
      ctru-rs/src/services/mod.rs
  2. 29
      ctru-rs/src/services/ps.rs

1
ctru-rs/src/services/mod.rs

@ -2,6 +2,7 @@ pub mod apt;
pub mod fs; pub mod fs;
pub mod gspgpu; pub mod gspgpu;
pub mod hid; pub mod hid;
pub mod ps;
pub mod soc; pub mod soc;
pub mod sslc; pub mod sslc;

29
ctru-rs/src/services/ps.rs

@ -0,0 +1,29 @@
//! Process Services (PS) module. This is used for miscellaneous utility tasks, but
//! is particularly important because it is used to generate random data, which
//! is required for common things like [`HashMap`](std::collections::HashMap).
//! See also <https://www.3dbrew.org/wiki/Process_Services>
/// PS handle. This must not be dropped in order for random generation
/// to work (in most cases, the lifetime of an application).
#[non_exhaustive]
pub struct Ps;
impl Ps {
/// Initialize the PS module.
pub fn init() -> crate::Result<Self> {
let r = unsafe { ctru_sys::psInit() };
if r < 0 {
Err(r.into())
} else {
Ok(Self)
}
}
}
impl Drop for Ps {
fn drop(&mut self) {
unsafe {
ctru_sys::psExit();
}
}
}
Loading…
Cancel
Save