Fix Occlum building warnings
This commit is contained in:
parent
39f268891e
commit
e8f262808b
@ -109,7 +109,7 @@ impl ToErrno for std::alloc::AllocError {
|
||||
}
|
||||
}
|
||||
|
||||
impl ToErrno for std::alloc::LayoutErr {
|
||||
impl ToErrno for std::alloc::LayoutError {
|
||||
fn errno(&self) -> Errno {
|
||||
EINVAL
|
||||
}
|
||||
|
@ -154,8 +154,8 @@ impl Inner {
|
||||
pub fn wake(&self) {
|
||||
if self
|
||||
.is_woken
|
||||
.compare_and_swap(false, true, Ordering::SeqCst)
|
||||
== false
|
||||
.compare_exchange(false, true, Ordering::SeqCst, Ordering::SeqCst)
|
||||
.is_ok()
|
||||
{
|
||||
self.host_eventfd.write_u64(1);
|
||||
}
|
||||
@ -167,8 +167,8 @@ impl Inner {
|
||||
.filter(|inner| {
|
||||
inner
|
||||
.is_woken
|
||||
.compare_and_swap(false, true, Ordering::SeqCst)
|
||||
== false
|
||||
.compare_exchange(false, true, Ordering::SeqCst, Ordering::SeqCst)
|
||||
.is_ok()
|
||||
})
|
||||
.map(|inner| inner.host_eventfd.host_fd())
|
||||
.collect::<Vec<FileDesc>>();
|
||||
|
@ -71,8 +71,9 @@ impl AtomicIoEvents for Atomic<IoEvents> {
|
||||
let new_val = old_val & !*mask | *ready;
|
||||
let success_ordering = ordering;
|
||||
let failure_ordering = Ordering::Relaxed;
|
||||
if let Ok(_) =
|
||||
self.compare_exchange(old_val, new_val, success_ordering, failure_ordering)
|
||||
if self
|
||||
.compare_exchange(old_val, new_val, success_ordering, failure_ordering)
|
||||
.is_ok()
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
@ -19,5 +19,4 @@ use fs::{AsEvent, AsINodeFile, AsTimer, CreationFlags, File, FileDesc, FileRef,
|
||||
use std::any::Any;
|
||||
use std::convert::TryFrom;
|
||||
use std::fmt;
|
||||
use std::sync::atomic::spin_loop_hint;
|
||||
use time::timeval_t;
|
||||
|
@ -563,10 +563,10 @@ process_syscall_table_with_callback!(impl_fmt_syscall);
|
||||
/// Generate the code that can dispatch any system call to its actual implementation function.
|
||||
macro_rules! impl_dispatch_syscall {
|
||||
(@do_syscall $fn:ident, $syscall:ident, $arg_i:expr, ($(,)?) -> ($($output:tt)*) ) => {
|
||||
impl_dispatch_syscall!(@as_expr $fn($($output)*));
|
||||
impl_dispatch_syscall!(@as_expr $fn($($output)*))
|
||||
};
|
||||
(@do_syscall $fn:ident, $syscall:ident, $arg_i:expr, ($_arg_name:ident : $arg_type:ty, $($more_args:tt)*) -> ($($output:tt)*)) => {
|
||||
impl_dispatch_syscall!(@do_syscall $fn, $syscall, ($arg_i + 1), ($($more_args)*) -> ($($output)* ($syscall.args[$arg_i] as $arg_type),));
|
||||
impl_dispatch_syscall!(@do_syscall $fn, $syscall, ($arg_i + 1), ($($more_args)*) -> ($($output)* ($syscall.args[$arg_i] as $arg_type),))
|
||||
};
|
||||
(@as_expr $e:expr) => { $e };
|
||||
|
||||
|
@ -52,7 +52,8 @@
|
||||
use super::*;
|
||||
|
||||
use crate::process::{futex_wait, futex_wake};
|
||||
use std::sync::atomic::{spin_loop_hint, AtomicI32, Ordering};
|
||||
use std::hint;
|
||||
use std::sync::atomic::{AtomicI32, Ordering};
|
||||
|
||||
// The implementaion of RwLock
|
||||
//
|
||||
@ -97,7 +98,7 @@ impl RwLockInner {
|
||||
&& self.rw_lock.load(Ordering::SeqCst) != 0
|
||||
&& self.rw_waiters.load(Ordering::SeqCst) == 0
|
||||
{
|
||||
spin_loop_hint();
|
||||
hint::spin_loop();
|
||||
spins -= 1;
|
||||
}
|
||||
|
||||
@ -121,7 +122,8 @@ impl RwLockInner {
|
||||
self.rw_waiters.fetch_add(1, Ordering::SeqCst);
|
||||
|
||||
let tmp = (val as u32 | 0x8000_0000) as i32;
|
||||
self.rw_lock.compare_and_swap(val, tmp, Ordering::SeqCst);
|
||||
self.rw_lock
|
||||
.compare_exchange(val, tmp, Ordering::SeqCst, Ordering::SeqCst);
|
||||
ret = futex_wait(&self.rw_lock as *const _ as *const i32, tmp, &None);
|
||||
|
||||
self.rw_waiters.fetch_sub(1, Ordering::SeqCst);
|
||||
@ -148,8 +150,8 @@ impl RwLockInner {
|
||||
|
||||
if self
|
||||
.rw_lock
|
||||
.compare_and_swap(val, val + 1, Ordering::SeqCst)
|
||||
== val
|
||||
.compare_exchange(val, val + 1, Ordering::SeqCst, Ordering::SeqCst)
|
||||
.is_ok()
|
||||
{
|
||||
break;
|
||||
}
|
||||
@ -168,7 +170,7 @@ impl RwLockInner {
|
||||
&& self.rw_lock.load(Ordering::SeqCst) != 0
|
||||
&& self.rw_waiters.load(Ordering::SeqCst) == 0
|
||||
{
|
||||
spin_loop_hint();
|
||||
hint::spin_loop();
|
||||
spins -= 1;
|
||||
}
|
||||
|
||||
@ -186,7 +188,8 @@ impl RwLockInner {
|
||||
self.rw_waiters.fetch_add(1, Ordering::SeqCst);
|
||||
|
||||
let tmp = (val as u32 | 0x8000_0000) as i32;
|
||||
self.rw_lock.compare_and_swap(val, tmp, Ordering::SeqCst);
|
||||
self.rw_lock
|
||||
.compare_exchange(val, tmp, Ordering::SeqCst, Ordering::SeqCst);
|
||||
ret = futex_wait(&self.rw_lock as *const _ as *const i32, tmp, &None);
|
||||
|
||||
self.rw_waiters.fetch_sub(1, Ordering::SeqCst);
|
||||
@ -201,12 +204,14 @@ impl RwLockInner {
|
||||
}
|
||||
|
||||
pub fn try_write(&self) -> Result<()> {
|
||||
let val = self
|
||||
if self
|
||||
.rw_lock
|
||||
.compare_and_swap(0, 0x7FFF_FFFF, Ordering::SeqCst);
|
||||
match val {
|
||||
0 => Ok(()),
|
||||
_ => return_errno!(EBUSY, "the lock is held for reading or writing"),
|
||||
.compare_exchange(0, 0x7FFF_FFFF, Ordering::SeqCst, Ordering::SeqCst)
|
||||
.is_ok()
|
||||
{
|
||||
Ok(())
|
||||
} else {
|
||||
Err(errno!(EBUSY, "the lock is held for reading or writing"))
|
||||
}
|
||||
}
|
||||
|
||||
@ -227,7 +232,11 @@ impl RwLockInner {
|
||||
_ => val - 1,
|
||||
};
|
||||
|
||||
if self.rw_lock.compare_and_swap(val, new, Ordering::SeqCst) == val {
|
||||
if self
|
||||
.rw_lock
|
||||
.compare_exchange(val, new, Ordering::SeqCst, Ordering::SeqCst)
|
||||
.is_ok()
|
||||
{
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user