Add message metadata

This commit is contained in:
Mark Poliakov 2023-12-31 01:55:25 +02:00
parent 3d6408a3cd
commit fd79f99f13
2 changed files with 12 additions and 9 deletions

View File

@ -23,8 +23,9 @@ pub mod io {
pub use abi::io::{
DeviceRequest, DirectoryEntry, FileAttr, FileMode, FileType, MessageDestination,
MountOptions, OpenOptions, PollControl, RawFd, SeekFrom, TerminalInputOptions,
TerminalLineOptions, TerminalOptions, TerminalOutputOptions, UnmountOptions,
MountOptions, OpenOptions, PollControl, RawFd, ReceivedMessageMetadata, SeekFrom,
SentMessage, TerminalInputOptions, TerminalLineOptions, TerminalOptions,
TerminalOutputOptions, UnmountOptions,
};
}

View File

@ -6,7 +6,8 @@ use abi::{
error::{Error, SyscallResult},
io::{
DeviceRequest, DirectoryEntry, FileAttr, FileMode, MessageDestination, MountOptions,
OpenOptions, PollControl, RawFd, SeekFrom, UnmountOptions,
OpenOptions, PollControl, RawFd, ReceivedMessageMetadata, SeekFrom, SentMessage,
UnmountOptions,
},
mem::MappingSource,
process::{
@ -567,14 +568,13 @@ pub unsafe fn open_channel(name: &str, with_sub: bool) -> Result<RawFd, Error> {
/// Unsafe: direct system call.
pub unsafe fn send_message(
fd: RawFd,
msg: &[u8],
message: &SentMessage<'_>,
destination: MessageDestination,
) -> Result<(), Error> {
<()>::from_syscall_result(syscall!(
SyscallFunction::SendMessage,
argn!(fd.0 as usize),
argp!(msg.as_ptr()),
argn!(msg.len()),
argp!(message as *const _),
argn!(u64::from(destination) as usize)
))
}
@ -586,14 +586,16 @@ pub unsafe fn send_message(
/// Unsafe: direct system call.
pub unsafe fn receive_message(
fd: RawFd,
msg: &mut [u8],
metadata: &mut MaybeUninit<ReceivedMessageMetadata>,
buffer: &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()),
argp!(metadata as *mut _),
argp!(buffer.as_mut_ptr()),
argn!(buffer.len()),
argp!(from as *mut _)
))
}