SendMessage destination + ReceiveMessage source
This commit is contained in:
parent
7a73cd8ff3
commit
3d6408a3cd
@ -22,9 +22,9 @@ pub mod io {
|
||||
//! I/O data structures
|
||||
|
||||
pub use abi::io::{
|
||||
DeviceRequest, DirectoryEntry, FileAttr, FileMode, FileType, MountOptions, OpenOptions,
|
||||
PollControl, RawFd, SeekFrom, TerminalInputOptions, TerminalLineOptions, TerminalOptions,
|
||||
TerminalOutputOptions, UnmountOptions,
|
||||
DeviceRequest, DirectoryEntry, FileAttr, FileMode, FileType, MessageDestination,
|
||||
MountOptions, OpenOptions, PollControl, RawFd, SeekFrom, TerminalInputOptions,
|
||||
TerminalLineOptions, TerminalOptions, TerminalOutputOptions, UnmountOptions,
|
||||
};
|
||||
}
|
||||
|
||||
|
@ -5,8 +5,8 @@ use core::{mem::MaybeUninit, sync::atomic::AtomicU32, time::Duration};
|
||||
use abi::{
|
||||
error::{Error, SyscallResult},
|
||||
io::{
|
||||
DeviceRequest, DirectoryEntry, FileAttr, FileMode, MountOptions, OpenOptions, PollControl,
|
||||
RawFd, SeekFrom, UnmountOptions,
|
||||
DeviceRequest, DirectoryEntry, FileAttr, FileMode, MessageDestination, MountOptions,
|
||||
OpenOptions, PollControl, RawFd, SeekFrom, UnmountOptions,
|
||||
},
|
||||
mem::MappingSource,
|
||||
process::{
|
||||
@ -565,12 +565,17 @@ pub unsafe fn open_channel(name: &str, with_sub: bool) -> Result<RawFd, Error> {
|
||||
/// # Safety
|
||||
///
|
||||
/// Unsafe: direct system call.
|
||||
pub unsafe fn send_message(fd: RawFd, msg: &[u8]) -> Result<(), Error> {
|
||||
pub unsafe fn send_message(
|
||||
fd: RawFd,
|
||||
msg: &[u8],
|
||||
destination: MessageDestination,
|
||||
) -> Result<(), Error> {
|
||||
<()>::from_syscall_result(syscall!(
|
||||
SyscallFunction::SendMessage,
|
||||
argn!(fd.0 as usize),
|
||||
argp!(msg.as_ptr()),
|
||||
argn!(msg.len())
|
||||
argn!(msg.len()),
|
||||
argn!(u64::from(destination) as usize)
|
||||
))
|
||||
}
|
||||
|
||||
@ -579,11 +584,16 @@ pub unsafe fn send_message(fd: RawFd, msg: &[u8]) -> Result<(), Error> {
|
||||
/// # Safety
|
||||
///
|
||||
/// Unsafe: direct system call.
|
||||
pub unsafe fn receive_message(fd: RawFd, msg: &mut [u8]) -> Result<usize, Error> {
|
||||
pub unsafe fn receive_message(
|
||||
fd: RawFd,
|
||||
msg: &mut [u8],
|
||||
from: &mut MaybeUninit<u32>,
|
||||
) -> Result<usize, Error> {
|
||||
usize::from_syscall_result(syscall!(
|
||||
SyscallFunction::ReceiveMessage,
|
||||
argn!(fd.0 as usize),
|
||||
argp!(msg.as_mut_ptr()),
|
||||
argn!(msg.len())
|
||||
argn!(msg.len()),
|
||||
argp!(from as *mut _)
|
||||
))
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user