diff options
author | David Collard <davidcollardprofessional@gmail.com> | 2023-01-10 20:32:23 -0500 |
---|---|---|
committer | David Collard <davidcollardprofessional@gmail.com> | 2023-01-10 21:47:56 -0500 |
commit | 33643eff5a3b7c44c54330141d6ed71c8739fde4 (patch) | |
tree | fe8e5574a35ee42e7b6f3b63ec883f603715f63b /src/mqueue.rs | |
parent | bbb97bf3f709f0c77ab7cc0bb205915797ea59d1 (diff) | |
download | nix-33643eff5a3b7c44c54330141d6ed71c8739fde4.zip |
Added `mq_timedreceive` to `::nix::mqueue`.
Diffstat (limited to 'src/mqueue.rs')
-rw-r--r-- | src/mqueue.rs | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/src/mqueue.rs b/src/mqueue.rs index 33599bf9..ac183eb5 100644 --- a/src/mqueue.rs +++ b/src/mqueue.rs @@ -197,6 +197,32 @@ pub fn mq_receive( Errno::result(res).map(|r| r as usize) } +feature! { + #![feature = "time"] + use crate::sys::time::TimeSpec; + /// Receive a message from a message queue with a timeout + /// + /// See also ['mq_timedreceive(2)'](https://pubs.opengroup.org/onlinepubs/9699919799/functions/mq_receive.html) + pub fn mq_timedreceive( + mqdes: &MqdT, + message: &mut [u8], + msg_prio: &mut u32, + abstime: &TimeSpec, + ) -> Result<usize> { + let len = message.len() as size_t; + let res = unsafe { + libc::mq_timedreceive( + mqdes.0, + message.as_mut_ptr() as *mut c_char, + len, + msg_prio as *mut u32, + abstime.as_ref(), + ) + }; + Errno::result(res).map(|r| r as usize) + } +} + /// Send a message to a message queue /// /// See also [`mq_send(2)`](https://pubs.opengroup.org/onlinepubs/9699919799/functions/mq_send.html) |