summaryrefslogtreecommitdiff
path: root/kernel/scheduler.c
diff options
context:
space:
mode:
Diffstat (limited to 'kernel/scheduler.c')
-rw-r--r--kernel/scheduler.c14
1 files changed, 11 insertions, 3 deletions
diff --git a/kernel/scheduler.c b/kernel/scheduler.c
index e5cdec7..ff46889 100644
--- a/kernel/scheduler.c
+++ b/kernel/scheduler.c
@@ -176,7 +176,7 @@ volatile uint32_t scheduler_run(uint32_t oldesp,uint32_t preference)
for(int i=0;i<MAX_TASKS;i++)
{
int idx=(last_task[cpu]+1+i)%MAX_TASKS; // schedule round robin style
- if(preference==-1&&idx==0)continue;
+// if(preference==-1&&idx==0)continue;
if(idx==preference||idx==2)continue;// skip sleeper and preferred tasks here.
@@ -229,6 +229,8 @@ void scheduler_func()
volatile int add_task(uint32_t parent_pid,uint32_t vmem, bool thread)
{
+ static bool first=true;
+
uint32_t parent=task_runs(parent_pid);
uint32_t cpu=smp_get(SMP_APIC_ID);
@@ -265,7 +267,11 @@ volatile int add_task(uint32_t parent_pid,uint32_t vmem, bool thread)
stack[12]=0x1;
stack[13]=0; // this task returns pid=0 to the caller
- if(!thread)compositor_add_window(vmem);
+ if(!thread&&first)
+ {
+ compositor_add_window(vmem);
+ //first=false;
+ }
return task_list[cpu][i].pid;
}
@@ -277,7 +283,8 @@ uint32_t scheduler_wake_worker(uint32_t oldesp)
{
uint32_t cpu=smp_get(SMP_APIC_ID);
task_list[cpu][0].syscall=false; // wake (syscall misused)
- return scheduler_run(oldesp,0);
+ return 0;
+// return scheduler_run(oldesp,0);
}
void scheduler_wake_all()
@@ -484,5 +491,6 @@ void task_exit(uint32_t pid)
task_list[cpu][i].active=false;
}
+ compositor_del_window(task_list[cpu][idx].vmem);
vmem_free_space_dir(task_list[cpu][idx].vmem,task_list[cpu][idx].thread);
}