twizzler_abi/syscall/
create.rs1pub use twizzler_rt_abi::object::{
2 BackingType, CreateTieFlags, CreateTieSpec, LifetimeType, ObjectCreate, ObjectCreateFlags,
3 ObjectSource,
4};
5use twizzler_rt_abi::{
6 bindings::{object_source, object_tie},
7 Result,
8};
9
10use super::{convert_codes_to_result, twzerr, Syscall};
11use crate::{arch::syscall::raw_syscall, object::ObjID};
12
13pub fn sys_object_create(
15 create: ObjectCreate,
16 sources: &[object_source],
17 ties: &[object_tie],
18) -> Result<ObjID> {
19 let args = [
20 &create as *const ObjectCreate as u64,
21 sources.as_ptr() as u64,
22 sources.len() as u64,
23 ties.as_ptr() as u64,
24 ties.len() as u64,
25 ];
26 let (code, val) = unsafe { raw_syscall(Syscall::ObjectCreate, &args) };
27 convert_codes_to_result(
28 code,
29 val,
30 |c, _| c == 0,
31 |x, y| crate::object::ObjID::from_parts([x, y]),
32 twzerr,
33 )
34}