Use docker as dev environment

This commit is contained in:
Jianfeng Jiang
2023-07-05 14:08:58 +08:00
committed by Tate, Hongliang Tian
parent bf961756b9
commit 9137ef434f
52 changed files with 202 additions and 207 deletions

View File

@ -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",

View File

@ -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();

View File

@ -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()
}
}

View File

@ -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() {

View File

@ -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");
}
}

View File

@ -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");
}