projects
/
bertos.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
preempt: Cleanup
[bertos.git]
/
bertos
/
kern
/
preempt.c
diff --git
a/bertos/kern/preempt.c
b/bertos/kern/preempt.c
index cde336510ee0e36cf6644f9bc5f92e5f0e74dc98..95ffbea093234e74834f5067f174fa3b90bfc956 100644
(file)
--- a/
bertos/kern/preempt.c
+++ b/
bertos/kern/preempt.c
@@
-48,7
+48,7
@@
int preempt_forbid_cnt;
int preempt_forbid_cnt;
-Timer preempt_timer;
+
static
Timer preempt_timer;
// fwd decl from idle.c
// fwd decl from idle.c
@@
-59,33
+59,28
@@
void proc_preempt(void)
{
IRQ_DISABLE;
{
IRQ_DISABLE;
+ ASSERT(preempt_forbid_cnt == 0);
LIST_ASSERT_VALID(&ProcReadyList);
CurrentProcess = (struct Process *)list_remHead(&ProcReadyList);
LIST_ASSERT_VALID(&ProcReadyList);
CurrentProcess = (struct Process *)list_remHead(&ProcReadyList);
- LIST_ASSERT_VALID(&ProcReadyList);
ASSERT2(CurrentProcess, "no idle proc?");
IRQ_ENABLE;
ASSERT2(CurrentProcess, "no idle proc?");
IRQ_ENABLE;
- TRACEMSG("new proc: %p:%s", CurrentProcess, CurrentProcess ? CurrentProcess->monitor.name : "---");
- monitor_report();
+ TRACEMSG("launching %p:%s", CurrentProcess, proc_currentName());
}
void proc_preempt_timer(UNUSED_ARG(void *, param))
{
}
void proc_preempt_timer(UNUSED_ARG(void *, param))
{
- /* Abort if task preemption is disabled */
- if (preempt_forbid_cnt)
- return;
-
- IRQ_DISABLE;
-/*
- if (!CurrentProcess->forbid_cnt)
+ if (!preempt_forbid_cnt)
{
{
- TRACEMSG("preempting %p:%s", CurrentProcess, CurrentProcess->monitor.name);
+ IRQ_DISABLE;
+ TRACEMSG("preempting %p:%s", CurrentProcess, proc_currentName());
+#if 0
SCHED_ENQUEUE(CurrentProcess);
proc_preempt();
SCHED_ENQUEUE(CurrentProcess);
proc_preempt();
+#endif
+ IRQ_ENABLE;
}
}
-*/
- IRQ_ENABLE;
timer_setDelay(&preempt_timer, CONFIG_KERN_QUANTUM);
timer_add(&preempt_timer);
timer_setDelay(&preempt_timer, CONFIG_KERN_QUANTUM);
timer_add(&preempt_timer);