Commit graph

71 commits

Author SHA1 Message Date
Stefan Lankes
c6339bfd2d by leaving the interrupt handler, we check if an urgent task is ready
if yes, the kernel switchs to this task
2011-09-06 06:46:52 -07:00
Stefan Lankes
27e652f81d if a task exists with a higher priority, we start a rescheduling in check_workqueues. 2011-09-02 13:57:11 -07:00
Stefan Lankes
e6fb99beb4 add inline assembler functions to determine the MSB and LSB 2011-09-01 13:31:41 -07:00
Stefan Lankes
426c06193b remove bug in the timer queue 2011-08-28 23:56:29 -07:00
Stefan Lankes
81d384b1b0 minor changes in the code style 2011-08-28 08:54:18 -07:00
Stefan Lankes
4fe2562839 fine tuning by using the irq fast lane 2011-08-28 01:24:28 -07:00
Stefan Lankes
771db80f26 remove merge error => scheduler has to call "finish_task_switch" 2011-08-27 06:57:21 -07:00
Stefan Lankes
7e3c06f47b if required, the waken task will remove from the timer queue 2011-08-26 21:55:16 +02:00
Stefan Lankes
1e1e77351a first approach to determine the cpu load 2011-08-24 09:32:36 +02:00
Stefan Lankes
35621d72d1 first try to realize task stealing 2011-08-18 12:16:31 +02:00
Stefan Lankes
93257508ee wakeup a blocked task on the core, which the task used during the last time slice 2011-08-17 15:09:59 +02:00
Stefan Lankes
296e8e98f4 the idle priority doesn't longer possess an own runqueue
only the idle task uses this priority class
2011-08-17 14:49:12 +02:00
Stefan Lankes
4c9855c83a redesign of the scheduler, defining of a runqueue per core
=> Currently, we work stealing isn't supported
2011-08-17 13:51:19 +02:00
Stefan Lankes
20b074d81c add additional error messages 2011-08-10 09:55:59 -07:00
Stefan Lankes
5d9f361174 add system calls to map the user-level socket library to LwIP sockets 2011-08-10 08:15:53 +02:00
Stefan Lankes
a179ded21b redesign of the timers, support of timeouts in mailboxes and semaphores 2011-08-06 15:55:34 +02:00
Stefan Lankes
452aa3b1d1 cosmetic changes and add some scheduling statistics 2011-08-03 19:37:05 +02:00
Stefan Lankes
22dab59699 minor changes in the scheduler routine to relalize a fair round-robin scheduling 2011-08-03 15:10:58 +02:00
Stefan Lankes
026d5e264c use table_lock to avoid GPs during a task switch 2011-08-02 10:24:17 +02:00
Stefan Lankes
744abc36c8 minor optimization on single core systems 2011-08-02 07:07:16 +02:00
Stefan Lankes
d5bfc4f28c avoid races on SMP systems
=> signalizes with a new flag, that a task switch is finished
2011-08-01 22:01:39 +02:00
Stefan Lankes
f76f4ac70d fix wrong initialization of current_task 2011-07-30 17:36:21 +02:00
Stefan Lankes
ab37b024b0 simply the scheduler => move code from entry.asm to timer.c 2011-07-21 09:59:29 +02:00
Stefan Lankes
e57a447fda minor changes in using the per_core macro, add additional output messages by an exception & cosmetic changes 2011-07-20 09:47:46 +02:00
Stefan Lankes
20c944b099 avoid a task migration during the calculation of the current task
=> temporary clearing the IF flag
2011-07-20 08:24:24 +02:00
Stefan Lankes
dfa928de78 reduce the number of function calls to determine the core id 2011-07-19 21:22:54 +02:00
Stefan Lankes
e595fae384 add SMP support
- this is experimental version
- by setting MAX_CORES to 1, you are to disable the SMP support
2011-07-18 09:14:28 +02:00
Stefan Lankes
08f5153257 add the support of inter core interrupts 2011-05-17 08:13:20 -07:00
Stefan Lankes
29ab43f289 First steps to realize Inter-Core-Communication via RCCE 2011-04-23 00:13:12 -07:00
Stefan Lankes
f3b620a9be add rudimental support of the system call times
- no full support of the POSIX API
- however, the libc function clock works correctly
2011-04-21 10:13:58 +02:00
Stefan Lankes
0c411fd702 add basic support of sbrk and fix bug in saving of the fpu context 2011-04-21 07:32:20 +02:00
Stefan Lankes
7cb05d8f4a first version to support the FPU
- seems to work
- currently, we didn't support SIMD instructions
2011-04-21 07:32:10 +02:00
Stefan Lankes
bd703f6be4 avoid compiler errors by using MAX_CORES = 1 2011-04-18 06:44:17 -07:00
Stefan Lankes
68564c3238 Merge branch 'tests'
Conflicts:
	include/metalsvm/spinlock.h
	include/metalsvm/spinlock_types.h
	kernel/tasks.c
2011-04-18 15:36:22 +02:00
Stefan Lankes
e94c31d03b add a new IRQ save spinlock implementation
- avoids a deadlock
- usable in a interrupt handler
2011-04-18 15:12:18 +02:00
Stefan Lankes
b5908af744 Merge branch 'master' of git.lfbs.rwth-aachen.de:metalsvm into doxygen
Conflicts:
	.gitignore
	arch/x86/include/asm/apic.h
	arch/x86/include/asm/page.h
	arch/x86/include/asm/processor.h
	arch/x86/kernel/idt.c
2011-04-14 08:40:52 +02:00
Stefan Lankes
c43efee104 use HALT instead of NOP 2011-04-08 16:02:18 +02:00
Jacek Galowicz
6c6d77cfa6 Committed the rest. There is only few stuff missing.
Embedded nice pictures.
2011-04-05 14:44:42 +02:00
Stefan Lankes
604670c981 now, the system call "execve" sets also the environment 2011-03-10 09:10:12 +01:00
Stefan Lankes
2d9ba6ae70 forwarding arguments to the new tasks 2011-03-08 23:12:38 +01:00
Stefan Lankes
d201c4d1bc - add the support of the system call execve 2011-03-07 20:26:55 +01:00
Stefan Lankes
6f092641ba remove memory leak and redesign of the internal memory accounting 2011-03-04 22:44:53 +01:00
Stefan Lankes
56ee331596 add nested spinlocks
- required to avoid deadlocks
2011-03-04 11:38:40 +01:00
Stefan Lankes
a27150b923 Fix bug in system call "fork"
- issues: memory leak
2011-03-02 23:08:01 +01:00
Stefan Lankes
5ce3ed9338 First steps to support the system calls "fork" and "wait"
- Currently, the system call "fork" doesn't work and has a memory leak
- However, it is a good starting point for further developments.
2011-03-02 13:49:36 +01:00
Stefan Lankes
17193475bb use a spinlock for each PGD
increases also the useability of vm_alloc and vm_free
2011-02-24 19:06:32 +01:00
Stefan Lankes
e157f93104 create also for kernel tasks a new PGD 2011-02-24 18:44:11 +01:00
Stefan Lankes
54d636d25c after process termination, the PGD and its PGTs will be freed 2011-02-24 18:32:58 +01:00
Stefan Lankes
16efb49204 remove obsolete function arguments 2011-02-24 10:15:58 +01:00
Stefan Lankes
c5b650fc32 add the support of the VMA list into the kernel
- after process termination, this list is used to free the allocated memory regions
2011-02-24 09:37:31 +01:00