mirror of
https://github.com/asterinas/asterinas.git
synced 2025-06-24 18:03:25 +00:00
Use docker as dev environment
This commit is contained in:
committed by
Tate, Hongliang Tian
parent
bf961756b9
commit
9137ef434f
@ -98,7 +98,7 @@ pub fn run_first_process() -> ! {
|
||||
}
|
||||
|
||||
fn run_busybox() -> Result<Arc<Process>> {
|
||||
let executable_path = "/busybox/busybox";
|
||||
let executable_path = "/usr/bin/busybox";
|
||||
let argv = ["sh", "-l"];
|
||||
let envp = [
|
||||
"SHELL=/bin/sh",
|
||||
|
@ -53,14 +53,12 @@ pub fn spawn_background_poll_thread(iface: Arc<dyn Iface>) {
|
||||
debug!("spawn background poll thread");
|
||||
loop {
|
||||
let next_poll_time = if let Some(next_poll_time) = iface.next_poll_at_ms() {
|
||||
trace!("next poll time = {:?}", next_poll_time);
|
||||
next_poll_time
|
||||
} else {
|
||||
Thread::yield_now();
|
||||
continue;
|
||||
};
|
||||
let now = read_monotonic_milli_seconds();
|
||||
trace!("now = {:?}", now);
|
||||
if now > next_poll_time {
|
||||
// FIXME: now is later than next poll time. This may cause problem.
|
||||
iface.poll();
|
||||
|
@ -4,24 +4,24 @@ use jinux_frame::task::{set_scheduler, Scheduler, Task, TaskAdapter};
|
||||
use intrusive_collections::LinkedList;
|
||||
|
||||
pub struct FifoScheduler {
|
||||
tasks: Mutex<LinkedList<TaskAdapter>>,
|
||||
tasks: SpinLock<LinkedList<TaskAdapter>>,
|
||||
}
|
||||
|
||||
impl FifoScheduler {
|
||||
pub fn new() -> Self {
|
||||
Self {
|
||||
tasks: Mutex::new(LinkedList::new(TaskAdapter::new())),
|
||||
tasks: SpinLock::new(LinkedList::new(TaskAdapter::new())),
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
impl Scheduler for FifoScheduler {
|
||||
fn enqueue(&self, task: Arc<Task>) {
|
||||
self.tasks.lock().push_back(task.clone());
|
||||
self.tasks.lock_irq_disabled().push_back(task.clone());
|
||||
}
|
||||
|
||||
fn dequeue(&self) -> Option<Arc<Task>> {
|
||||
self.tasks.lock().pop_front()
|
||||
self.tasks.lock_irq_disabled().pop_front()
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -102,7 +102,9 @@ impl<'a> Iterator for FutexIter<'a> {
|
||||
} else {
|
||||
None
|
||||
};
|
||||
let robust_list = read_val_from_user::<RobustList>(self.entry_ptr).unwrap();
|
||||
let Ok(robust_list) = read_val_from_user::<RobustList>(self.entry_ptr) else {
|
||||
return None;
|
||||
};
|
||||
self.entry_ptr = robust_list.next;
|
||||
self.count += 1;
|
||||
if futex_addr.is_some() {
|
||||
|
@ -465,7 +465,7 @@ pub fn syscall_dispatch(
|
||||
SYS_GETRANDOM => syscall_handler!(3, sys_getrandom, args),
|
||||
SYS_EXECVEAT => syscall_handler!(5, sys_execveat, args, context),
|
||||
_ => {
|
||||
error!("Unimplemented syscall number: {}", syscall_number);
|
||||
warn!("Unimplemented syscall number: {}", syscall_number);
|
||||
return_errno_with_message!(Errno::ENOSYS, "Syscall was unimplemented");
|
||||
}
|
||||
}
|
||||
|
@ -254,7 +254,6 @@ impl Vmo_ {
|
||||
|
||||
pub fn read_bytes(&self, offset: usize, buf: &mut [u8]) -> Result<()> {
|
||||
let read_len = buf.len();
|
||||
debug_assert!(offset + read_len <= self.size());
|
||||
if offset + read_len > self.size() {
|
||||
return_errno_with_message!(Errno::EINVAL, "read range exceeds vmo size");
|
||||
}
|
||||
|
Reference in New Issue
Block a user