提交 fb310486 编写于 作者: hm12299's avatar hm12299

let cpu utlization work again

上级 6b16e180
......@@ -54,10 +54,10 @@ impl CpuStat{
unimplemented!()
}
fn get_cpu_info(&self) -> CpuStatInner{
//let inner = self.inner.borrow_mut();
//(inner.cpu_clock, inner.task_clock)
unimplemented!()
fn get_cpu_info(&self) -> (usize, usize){
let inner = self.inner.borrow_mut();
(inner.cpu_clock, inner.task_clock)
//unimplemented!()
}
fn get_cache_reference_info() -> usize{
......@@ -98,6 +98,19 @@ impl CpuStat{
inner.task_clock = inner.task_clock_temp;
inner.task_clock_temp = 0;
}
fn add_task_clock(&self, num: usize){
let mut inner = self.inner.borrow_mut();
inner.task_clock_temp += num - inner.task_start;
}
fn set_time_stamp(&self, num: usize){
self.inner.borrow_mut().time_stamp = num;
}
fn get_time_stamp(&self) -> usize{
self.inner.borrow().time_stamp
}
}
unsafe impl Sync for CpuStat {}
......@@ -107,36 +120,26 @@ lazy_static! {
}
pub fn set_busy_start(num: usize){
pub fn set_task_start(num: usize){
CPUSTAT.set_task_start(num);
}
pub fn set_sample_duration(num: usize){
let mut inner = CPUSTAT.inner.borrow_mut();
inner.sample_duration = num;
inner.sample_busy_want = inner.sample_busy_duration;
inner.sample_busy_duration = 0;
pub fn set_cpu_clock(num: usize){
CPUSTAT.set_cpu_clock(num)
}
pub fn set_sample_busy_duration(num: usize){
//println!("add");
let mut inner = CPUSTAT.inner.borrow_mut();
inner.is_input = false;
inner.sample_busy_duration += num - inner.busy_start;
//println!("delta: {}", inner.sample_busy_duration);
//println!("sample_busy_duration:{}",inner.sample_duration);
pub fn add_task_clock(num: usize){
CPUSTAT.add_task_clock(num);
}
/*pub fn get_cpu_info() -> (usize, usize){
pub fn get_cpu_info() -> (usize, usize){
CPUSTAT.get_cpu_info()
}*/
}
pub fn set_time_stamp(num: usize){
let mut inner = CPUSTAT.inner.borrow_mut();
inner.time_stamp = num;
CPUSTAT.set_time_stamp(num)
}
pub fn get_time_stamp() -> usize{
let mut inner = CPUSTAT.inner.borrow_mut();
inner.time_stamp
CPUSTAT.get_time_stamp()
}
\ No newline at end of file
......@@ -7,7 +7,7 @@ use lazy_static::*;
use super::{fetch_task, TaskStatus};
use super::__switch;
use crate::trap::TrapContext;
use super::cpu::{get_time_stamp, is_input, set_sample_busy_duration, set_busy_start, set_sample_duration, set_time_stamp};
use super::cpu::{get_time_stamp, add_task_clock, set_task_start, set_cpu_clock, set_time_stamp};
pub struct Processor {
inner: RefCell<ProcessorInner>,
......@@ -56,7 +56,7 @@ impl Processor {
//let mut task_inner = self.inner.borrow().current.unwrap().acquire_inner_lock();
//let inner_lock = self.inner.borrow_mut().current.as_ref().unwrap().acquire_inner_lock();
//let _ = inner_lock.stamp();
set_busy_start(get_time());
set_task_start(get_time());
//let busy_start = get_time();
//println!("run switch time start");
......@@ -74,7 +74,7 @@ impl Processor {
all += now - get_time_stamp();
set_time_stamp(now);
if all > 1250000{
set_sample_duration(all);
set_cpu_clock(all);
all = 0;
}
}
......@@ -118,7 +118,7 @@ pub fn current_trap_cx() -> &'static mut TrapContext {
pub fn schedule(switched_task_cx_ptr2: *const usize) {
let idle_task_cx_ptr2 = PROCESSOR.get_idle_task_cx_ptr2();
//println!("idle switch start");
set_sample_busy_duration(get_time());
add_task_clock(get_time());
unsafe {
__switch(
switched_task_cx_ptr2,
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册