mirror of
https://github.com/saymrwulf/xous-core.git
synced 2026-11-15 08:30:02 +00:00
syscall: add intial CreateServer call
Signed-off-by: Sean Cross <sean@xobs.io>
This commit is contained in:
parent
c2008e5fe8
commit
7a3e038e6b
8 changed files with 28 additions and 7 deletions
|
|
@ -1,7 +1,7 @@
|
|||
use crate::arch::current_pid;
|
||||
use crate::arch::mem::MemoryMapping;
|
||||
use crate::mem::MemoryManagerHandle;
|
||||
use crate::processtable::{ProcessContext, ProcessState, SystemServicesHandle, RETURN_FROM_ISR};
|
||||
use crate::services::{ProcessContext, ProcessState, SystemServicesHandle, RETURN_FROM_ISR};
|
||||
use riscv::register::{scause, sepc, sie, sstatus, stval, vexriscv::sim, vexriscv::sip};
|
||||
use xous::{SysCall, PID};
|
||||
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
use crate::processtable::ProcessContext;
|
||||
use crate::services::ProcessContext;
|
||||
use riscv::register::{sepc, sstatus};
|
||||
|
||||
extern "C" {
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
use xous::PID;
|
||||
use crate::processtable::SystemServicesHandle;
|
||||
use crate::services::SystemServicesHandle;
|
||||
use crate::arch;
|
||||
|
||||
static mut IRQ_HANDLERS: [Option<(PID, *mut usize, *mut usize)>; 32] = [None; 32];
|
||||
|
|
|
|||
|
|
@ -16,11 +16,11 @@ mod arch;
|
|||
mod args;
|
||||
mod irq;
|
||||
mod mem;
|
||||
mod processtable;
|
||||
mod services;
|
||||
mod syscall;
|
||||
|
||||
use mem::MemoryManagerHandle;
|
||||
use processtable::SystemServicesHandle;
|
||||
use services::SystemServicesHandle;
|
||||
use xous::*;
|
||||
|
||||
#[cfg(not(test))]
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
use crate::args::KernelArguments;
|
||||
use crate::processtable::SystemServicesHandle;
|
||||
use crate::services::SystemServicesHandle;
|
||||
use core::fmt;
|
||||
use core::mem;
|
||||
use core::slice;
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
use crate::arch;
|
||||
use crate::irq::interrupt_claim;
|
||||
use crate::mem::{MemoryManagerHandle, PAGE_SIZE};
|
||||
use crate::processtable::{ProcessState, SystemServicesHandle};
|
||||
use crate::services::{ProcessState, SystemServicesHandle};
|
||||
use xous::*;
|
||||
|
||||
// extern "Rust" {
|
||||
|
|
|
|||
|
|
@ -219,6 +219,23 @@ pub enum SysCall {
|
|||
/// * **ProcessTerminated**: The process has crashed.
|
||||
SwitchTo(PID, usize /* thread ID */),
|
||||
|
||||
/// Create a new Server
|
||||
///
|
||||
/// This will return a 128-bit Server ID that can be used to send messages
|
||||
/// to this server.
|
||||
///
|
||||
/// # Returns
|
||||
///
|
||||
/// The ServerId can be assembled to form a 128-bit server ID in native
|
||||
/// byte order.
|
||||
///
|
||||
/// # Errors
|
||||
///
|
||||
/// * **OutOfMemory**: The server table was full and a new server couldn't
|
||||
/// be created.
|
||||
CreateServer,
|
||||
|
||||
/// This syscall does not exist
|
||||
Invalid(usize, usize, usize, usize, usize, usize, usize),
|
||||
}
|
||||
|
||||
|
|
@ -235,6 +252,7 @@ enum SysCallNumber {
|
|||
DecreaseHeap = 11,
|
||||
UpdateMemoryFlags = 12,
|
||||
SetMemRegion = 13,
|
||||
CreateServer = 14,
|
||||
Invalid,
|
||||
}
|
||||
|
||||
|
|
@ -335,6 +353,7 @@ impl SysCall {
|
|||
0,
|
||||
],
|
||||
|
||||
SysCall::CreateServer => [SysCallNumber::CreateServer as usize, 0, 0, 0, 0, 0, 0, 0],
|
||||
SysCall::Invalid(a1, a2, a3, a4, a5, a6, a7) => {
|
||||
[SysCallNumber::Invalid as usize, a1, a2, a3, a4, a5, a6, a7]
|
||||
}
|
||||
|
|
@ -378,6 +397,7 @@ impl SysCall {
|
|||
Some(SysCallNumber::SetMemRegion) => {
|
||||
SysCall::SetMemRegion(a1 as PID, MemoryType::from(a2), a3 as *mut usize, a4)
|
||||
}
|
||||
Some(SysCallNumber::CreateServer) => SysCall::CreateServer,
|
||||
Some(SysCallNumber::Invalid) => SysCall::Invalid(a1, a2, a3, a4, a5, a6, a7),
|
||||
None => return Err(InvalidSyscall {}),
|
||||
})
|
||||
|
|
@ -399,6 +419,7 @@ pub enum Result {
|
|||
MemoryRange(MemoryRange),
|
||||
ResumeResult(usize, usize, usize, usize, usize, usize),
|
||||
ResumeProcess,
|
||||
ServerID(usize, usize, usize, usize),
|
||||
UnknownResult(usize, usize, usize, usize, usize, usize, usize),
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue