feat: Add call as a new method of Fd.
This commit is contained in:
committed by
Jacob Lorentzon
parent
2cacc86d93
commit
144500e2c9
+2
-2
@@ -1,7 +1,7 @@
|
||||
[package]
|
||||
name = "libredox"
|
||||
authors = ["4lDO2 <4lDO2@protonmail.com>"]
|
||||
version = "0.1.6"
|
||||
version = "0.1.7"
|
||||
edition = "2021"
|
||||
license = "MIT"
|
||||
description = "Redox stable ABI"
|
||||
@@ -19,5 +19,5 @@ mkns = ["ioslice"]
|
||||
[dependencies]
|
||||
bitflags = "2"
|
||||
libc = "0.2"
|
||||
redox_syscall = { version = "0.5", optional = true }
|
||||
redox_syscall = { version = "0.5.16", optional = true }
|
||||
ioslice = { version = "0.6", optional = true }
|
||||
|
||||
+55
@@ -370,6 +370,61 @@ impl Fd {
|
||||
pub fn close(self) -> Result<()> {
|
||||
call::close(self.into_raw())
|
||||
}
|
||||
|
||||
#[inline]
|
||||
pub fn call_ro(
|
||||
&self,
|
||||
payload: &mut [u8],
|
||||
flags: syscall::CallFlags,
|
||||
metadata: &[u64],
|
||||
) -> Result<usize> {
|
||||
Ok(Error::demux(unsafe {
|
||||
redox_sys_call_v0(
|
||||
self.raw(),
|
||||
payload.as_mut_ptr(),
|
||||
payload.len(),
|
||||
(flags | syscall::CallFlags::READ).bits(),
|
||||
metadata.as_ptr(),
|
||||
metadata.len(),
|
||||
)
|
||||
})?)
|
||||
}
|
||||
#[inline]
|
||||
pub fn call_wo(
|
||||
&self,
|
||||
payload: &[u8],
|
||||
flags: syscall::CallFlags,
|
||||
metadata: &[u64],
|
||||
) -> Result<usize> {
|
||||
Ok(Error::demux(unsafe {
|
||||
redox_sys_call_v0(
|
||||
self.raw(),
|
||||
payload.as_ptr() as *mut u8,
|
||||
payload.len(),
|
||||
(flags | syscall::CallFlags::WRITE).bits(),
|
||||
metadata.as_ptr(),
|
||||
metadata.len(),
|
||||
)
|
||||
})?)
|
||||
}
|
||||
#[inline]
|
||||
pub fn call_rw(
|
||||
&self,
|
||||
payload: &mut [u8],
|
||||
flags: syscall::CallFlags,
|
||||
metadata: &[u64],
|
||||
) -> Result<usize> {
|
||||
Ok(Error::demux(unsafe {
|
||||
redox_sys_call_v0(
|
||||
self.raw(),
|
||||
payload.as_mut_ptr(),
|
||||
payload.len(),
|
||||
(flags | syscall::CallFlags::READ | syscall::CallFlags::WRITE).bits(),
|
||||
metadata.as_ptr(),
|
||||
metadata.len(),
|
||||
)
|
||||
})?)
|
||||
}
|
||||
}
|
||||
#[cfg(feature = "call")]
|
||||
impl Drop for Fd {
|
||||
|
||||
Reference in New Issue
Block a user