diff options
| author | Ronald Kinard <[email protected]> | 2015-06-09 19:00:59 -0500 |
|---|---|---|
| committer | Ronald Kinard <[email protected]> | 2015-06-09 19:00:59 -0500 |
| commit | de4cca655dfce2e92611e5f7b3e890adbadfa105 (patch) | |
| tree | a34cfa4e8cbaf44a5bb78e2e0fe857a152d78246 /src | |
| download | ctru-rs-de4cca655dfce2e92611e5f7b3e890adbadfa105.tar.xz ctru-rs-de4cca655dfce2e92611e5f7b3e890adbadfa105.zip | |
Initial commit.
Diffstat (limited to 'src')
| -rw-r--r-- | src/lib.rs | 29 | ||||
| -rw-r--r-- | src/raw/mod.rs | 72 | ||||
| -rw-r--r-- | src/raw/srv.rs | 16 | ||||
| -rw-r--r-- | src/raw/svc.rs | 0 |
4 files changed, 117 insertions, 0 deletions
diff --git a/src/lib.rs b/src/lib.rs new file mode 100644 index 0000000..e94c809 --- /dev/null +++ b/src/lib.rs @@ -0,0 +1,29 @@ +#![feature(core)] +#![feature(no_std)] +#![no_std] + +extern crate core; + +pub mod raw; + +pub type Result = i32; +pub type Handle = u32; + +pub mod srv { + use super::Result; + use super::raw::srv; + pub fn init() -> Result { + unsafe { + return srv::srvInit(); + } + } + pub fn exit() -> Result { + unsafe { + return srv::srvExit(); + } + } + + pub fn awesome() -> i32 { + 0 + } +} diff --git a/src/raw/mod.rs b/src/raw/mod.rs new file mode 100644 index 0000000..d02165f --- /dev/null +++ b/src/raw/mod.rs @@ -0,0 +1,72 @@ +#![allow(non_camel_case_types)] +#![allow(overflowing_literals)] + +pub mod srv; +pub mod svc; + +#[repr(C)] +pub enum mediatypes_enum { + mediatype_NAND, + mediatype_SDMC, + mediatype_GAMECARD +} + +pub type s8 = i8; +pub type s16 = i16; +pub type s32 = i32; +pub type s64 = i64; + +#[repr(u8)] +pub enum c_void { + __variant1, + __variant2 +} + +#[repr(C)] +pub enum MemOp { + MEMOP_FREE = 1, + MEMOP_ALLOC = 3, + MEMOP_MAP = 4, + MEMOP_UNMAP = 5, + MEMOP_PROT = 6, + + MEMOP_ALLOC_LINEAR = 0x10003, +} + +#[repr(C)] +pub enum MemState { + MEMSTATE_FREE = 0, + MEMSTATE_RESERVED = 1, + MEMSTATE_IO = 2, + MEMSTATE_STATIC = 3, + MEMSTATE_CODE = 4, + MEMSTATE_PRIVATE = 5, + MEMSTATE_SHARED = 6, + MEMSTATE_CONTINUOUS = 7, + MEMSTATE_ALIASED = 8, + MEMSTATE_ALIAS = 9, + MEMSTATE_ALIASCODE = 10, + MEMSTATE_LOCKED = 11 +} + +#[repr(C)] +pub enum MemPerm { + MEMPERM_READ = 1, + MEMPERM_WRITE = 2, + MEMPERM_EXECUTE = 4, + MEMPERM_DONTCARE = 0x10000000, + MEMPERM_MAX = 0xFFFFFFFF //force 4-byte +} + +#[repr(C)] +pub struct MemInfo { + pub base_addr: u32, + pub size: u32, + pub perm: u32, + pub state: u32, +} + +#[repr(C)] +pub struct PageInfo { + flags: u32, +} diff --git a/src/raw/srv.rs b/src/raw/srv.rs new file mode 100644 index 0000000..338b30f --- /dev/null +++ b/src/raw/srv.rs @@ -0,0 +1,16 @@ +use super::*; +use super::super::{Result, Handle}; + +#[link(name="ctru")] +extern { + pub fn srvInit() -> Result; + pub fn srvExit() -> Result; + pub fn srvGetSessionHandle() -> * const Handle; + pub fn srvRegisterClient() -> Result; + pub fn srvGetServiceHandle(out: *mut Handle, name: * const u8) -> Result; + pub fn srvRegisterService(out: *mut Handle, name: * const u8) -> Result; + pub fn srvUnregisterService(name: * const u8) -> Result; + pub fn srvPmInit() -> Result; + pub fn srvRegisterProcess(procid: u32, count: u32, serviceaccesscontrol: *mut c_void) -> Result; + pub fn srvUnregisterProcess(procid: u32) -> Result; +} diff --git a/src/raw/svc.rs b/src/raw/svc.rs new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/src/raw/svc.rs |