1
This commit is contained in:
parent
873e104469
commit
a1589b9773
@ -77,7 +77,7 @@ impl<T> ListHead<T> {
|
|||||||
return self.next.upgrade().unwrap().borrow().data();
|
return self.next.upgrade().unwrap().borrow().data();
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn replace_init(head: &mut Rc::<RefCell::<ListHead<T>>>,
|
pub fn replace_init(head: &Rc::<RefCell::<ListHead<T>>>,
|
||||||
pnew: &mut Rc::<RefCell::<ListHead<T>>>) {
|
pnew: &mut Rc::<RefCell::<ListHead<T>>>) {
|
||||||
pnew.borrow_mut().next = head.borrow_mut().next.clone();
|
pnew.borrow_mut().next = head.borrow_mut().next.clone();
|
||||||
pnew.borrow_mut().next.upgrade().unwrap().borrow_mut().prev = Rc::downgrade(pnew);
|
pnew.borrow_mut().next.upgrade().unwrap().borrow_mut().prev = Rc::downgrade(pnew);
|
||||||
|
26
src/timer.rs
26
src/timer.rs
@ -167,7 +167,26 @@ impl Timer {
|
|||||||
return p;
|
return p;
|
||||||
}
|
}
|
||||||
|
|
||||||
fn cascade(&mut self, tv: &mut [TimerListListHeadRp], index: usize) -> usize {
|
fn cascade(&mut self, idx: usize) -> usize {
|
||||||
|
let index = self.get_timer_index(idx);
|
||||||
|
let tv : &mut [TimerListListHeadRp];
|
||||||
|
match idx {
|
||||||
|
0 => {
|
||||||
|
tv = &mut self.tv2;
|
||||||
|
}
|
||||||
|
1 => {
|
||||||
|
tv = &mut self.tv3;
|
||||||
|
}
|
||||||
|
2 => {
|
||||||
|
tv = &mut self.tv4;
|
||||||
|
}
|
||||||
|
3 => {
|
||||||
|
tv = &mut self.tv5;
|
||||||
|
}
|
||||||
|
_ => {
|
||||||
|
tv = &mut self.tv5;
|
||||||
|
}
|
||||||
|
}
|
||||||
if !tv[index].borrow().empty() {
|
if !tv[index].borrow().empty() {
|
||||||
let mut cascade_list = crate::ListHead::<TimerList>::new_head();
|
let mut cascade_list = crate::ListHead::<TimerList>::new_head();
|
||||||
crate::ListHead::<TimerList>::replace_init
|
crate::ListHead::<TimerList>::replace_init
|
||||||
@ -194,7 +213,10 @@ impl Timer {
|
|||||||
while tick >= self.timer_tick {
|
while tick >= self.timer_tick {
|
||||||
let index = (self.timer_tick & (TVR_MASK as i64)) as usize;
|
let index = (self.timer_tick & (TVR_MASK as i64)) as usize;
|
||||||
if index == 0 &&
|
if index == 0 &&
|
||||||
self.cascade(&mut self.tv2, self.get_timer_index(0)) == 0 {
|
self.cascade(0) == 0 &&
|
||||||
|
self.cascade(1) == 0 &&
|
||||||
|
self.cascade(2) == 0 {
|
||||||
|
self.cascade(3);
|
||||||
}
|
}
|
||||||
self.timer_tick += 1;
|
self.timer_tick += 1;
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user