diff options
Diffstat (limited to 'src/mqueue.rs')
-rw-r--r-- | src/mqueue.rs | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/src/mqueue.rs b/src/mqueue.rs index d225465b..460c7e89 100644 --- a/src/mqueue.rs +++ b/src/mqueue.rs @@ -49,6 +49,8 @@ mod ffi { pub fn mq_send (mqd: MQd, msg_ptr: *const c_char, msg_len: size_t, msq_prio: c_uint) -> c_int; pub fn mq_getattr(mqd: MQd, attr: *mut MqAttr) -> c_int; + + pub fn mq_setattr(mqd: MQd, newattr: *const MqAttr, oldattr: *mut MqAttr) -> c_int; } } @@ -121,3 +123,13 @@ pub fn mq_getattr(mqd: MQd) -> Result<MqAttr> { } Ok(attr) } + + +pub fn mq_setattr(mqd: MQd, newattr: &MqAttr) -> Result<MqAttr> { + let mut attr = MqAttr::new(0, 0, 0, 0); + let res = unsafe { ffi::mq_setattr(mqd, newattr as *const MqAttr, &mut attr) }; + if res < 0 { + return Err(Error::Sys(Errno::last())); + } + Ok(attr) +} |