| Commit message (Collapse) | Author | Age |
... | |
| | |
|
| |
| |
| |
| | |
This is a work around so that GSN-EDF can use the code, too.
|
| | |
|
| | |
|
| | |
|
| | |
|
| | |
|
| | |
|
| |
| |
| |
| |
| | |
GSN-EDF needs to be called after every task switch. This patch changes the
existing plugins to handle the changed behavior.
|
| |
| |
| |
| |
| | |
Allow access to the release and ready queues for GSN-EDF. GSN-EDF doesn't
use the locks embedded in the domain.
|
| | |
|
| |
| |
| |
| | |
This will be the GSN-EDF scheduler.
|
| |\
| | |
| | |
| | | |
Merge with git+ssh://cvs/cvs/proj/litmus/repo/litmus
|
| | | |
|
| | | |
|
| | | |
|
| | | |
|
| |/ |
|
| |
| |
| |
| |
| | |
semaphores accessible through system calls, so that they can be used with
the LSO (for partitioned FMLP).
|
| |
| |
| |
| | |
actually is called at boot.
|
| | |
|
| |
| |
| |
| | |
another pointer issue.
|
| |
| |
| |
| |
| |
| |
| |
| | |
A user now makes a system call where a semaphore ID is specified, and
the semaphore implementation is hidden away in the kernel. There are a
finite number of semaphores and the kernel system call will return an error
if it cannot claim one, however user space code in libso does not yet
acknowledge this.
|
| |
| |
| |
| | |
inheritance.
|
| |
| |
| |
| | |
tested.
|
| |
| |
| |
| |
| |
| |
| | |
priority inheritance. Also fixed a few bugs. Many files were modified, as
the PI semaphores were are implementing replicate much of the original
Linux semaphore implementation with minor changes, often causing a cascade
of changes as functions were chased down and changed in several files.
|
| |
| |
| |
| | |
inheritance, for use in our synchronization implementation.
|
| | |
|
| |
| |
| |
| |
| |
| |
| |
| | |
Added two system calls, one to check if we are in the blocking zone, and
one to wait until we exit the blocking zone. Both calls rely on some
additional support from the local timer interrupt handler. Everything still
needs to be tested with the zone-lock implemention in user space,
especially under many different types of race conditions.
|
| |
| |
| |
| |
| |
| |
| | |
System calls and user-level code in libso related to zone-based locking
still needs to be tested. Additionally, need to fix an issue getting the
time of day within an interrupt handler --- the current method will compile
but it will not run because of the need to claim a lock in the handler.
|
| | |
|
| | |
|
| |
| |
| |
| |
| |
| |
| |
| | |
sys_wait_for_zone_exit waits on a flag which is cleared during the local
timer interrupt. Yet more race conditions have been avoided by performing
zone checks before waiting for the flag, and by setting the flag *before*
performing the zone check, so that if we enter the loop immediately after
leaving the blocking zone, we are still okay.
|
| | |
|
|/
|
|
| |
zone-based locking.
|
|\ |
|
| |\
| | |
| | |
| | | |
Pulled in the queue lock implementation.
|
| | |
| | |
| | |
| | |
| | | |
insert barrier() to be sure order is preserved by inline expansion
don't depend on macro for initialization
|
| | | |
|
| | |
| | |
| | |
| | | |
Force gcc to actually spin.
|
| | |
| | |
| | |
| | | |
The first needs to be unlocked, not the last.
|
| | |\
| | | |
| | | |
| | | | |
Pulled in john's quantum alignment updates
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
This re-implements the queue locks for the new LITMUS version. Major
differences to the previous implementation:
1) platform independent implementation - no manual assembly code in
the queue lock implementation required
2) Recursive acquiring of the locks is not possible! None of the
other Linux locking primitives allow it, so it is consistent
and we weren't using it anyway as far as I know.
3) The number of "processes" in the implementation is fixed to
NR_CPUS. Anything else doesn't really make sense in the kernel
anyway.
|
| | | |
| | | |
| | | |
| | | |
| | | | |
Queue locks in LTMUS always must allow for NR_CPUS processes. Therefore,
it is redundant to specify that int queue_lock_init().
|
| | | | |
|
| | |/
| |/|
| | |
| | |
| | | |
The current plugin's mode change callback was not being called when
switching from RT mode to NON-RT mode.
|
|/ / |
|
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Renamed function in timer.c, removed personal EXTRAVERSION from Makefile,
changed some other small things. Aligned and staggered quanta are now
working properly, Use quanta=staggered as a boot option to get staggered
quanta, and no boot option (or quanta=aligned) to get aligned quanta. In
most cases, quantum alignments are even more precise now than they were
previously (less than 5 microseconds versus 10-20 microseconds).
|
| |
| |
| |
| |
| |
| |
| |
| | |
Provided a boot option that allows either aligned or staggered quanta to
be chosen, and added a TRACE call that displays the offsets from the global
timer tick at each CPU, in order to debug each type of quanta.
Code related to periodic resynch is still commented out and will be
debugged soon.
|
| |
| |
| |
| |
| |
| | |
Tried to read the amount of time since the last global timer interrupt
occurred and log that time on all processors using TRACE, but I think locks
are causing me grief, because the system instead hangs.
|