summaryrefslogtreecommitdiff
path: root/src/mqueue.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/mqueue.rs')
-rw-r--r--src/mqueue.rs12
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)
+}