summaryrefslogtreecommitdiff
path: root/components/rust/core/src/api
diff options
context:
space:
mode:
Diffstat (limited to 'components/rust/core/src/api')
-rw-r--r--components/rust/core/src/api/mod.rs2
-rw-r--r--components/rust/core/src/api/queue.rs11
2 files changed, 10 insertions, 3 deletions
diff --git a/components/rust/core/src/api/mod.rs b/components/rust/core/src/api/mod.rs
index 8fc2ba2301..cf3d0bbc0c 100644
--- a/components/rust/core/src/api/mod.rs
+++ b/components/rust/core/src/api/mod.rs
@@ -14,6 +14,7 @@ pub mod thread;
pub mod mutex;
pub mod sem;
pub mod queue;
+#[cfg(feature = "libdl")]
pub mod libloading;
@@ -24,4 +25,5 @@ pub use thread::*;
pub use mutex::*;
pub use sem::*;
pub use queue::*;
+#[cfg(feature = "libdl")]
pub use libloading::*;
diff --git a/components/rust/core/src/api/queue.rs b/components/rust/core/src/api/queue.rs
index 96665e47f2..8a77374b90 100644
--- a/components/rust/core/src/api/queue.rs
+++ b/components/rust/core/src/api/queue.rs
@@ -20,7 +20,7 @@ pub type APIRawQueue = rt_mq_t;
pub(crate) fn queue_create(name: &str, len: u64, message_size: u64) -> Option<APIRawQueue> {
let s = CString::new(name).unwrap();
let raw;
- unsafe { raw = rt_mq_create(s.as_ptr(), message_size, len, 0) }
+ unsafe { raw = rt_mq_create(s.as_ptr(), message_size as rt_size_t, len as rt_size_t, 0) }
if raw == ptr::null_mut() {
None
} else {
@@ -35,7 +35,7 @@ pub(crate) fn queue_send_wait(
msg_size: u64,
tick: i32,
) -> RttCResult {
- unsafe { rt_mq_send_wait(handle, msg, msg_size, tick).into() }
+ unsafe { rt_mq_send_wait(handle, msg, msg_size as rt_size_t, tick).into() }
}
#[inline]
@@ -45,7 +45,12 @@ pub(crate) fn queue_receive_wait(
msg_size: u64,
tick: i32,
) -> RttCResult {
- unsafe { rt_mq_recv(handle, msg, msg_size, tick).into() }
+ let ret = unsafe { rt_mq_recv(handle, msg, msg_size as rt_size_t, tick) };
+ if ret >= 0 {
+ RttCResult::Ok
+ } else {
+ ret.into()
+ }
}
#[inline]