| Commit message (Collapse) | Author | Age |
| |
|
|
|
|
|
|
| |
Note that non-rt tasks are released immediately. That is,
the 'delay' provided to the release_ts() system-call is ignored
for non-rt tasks.
|
| |
|
|
|
|
|
|
|
|
|
|
| |
1) Deadlock in litmus_task_exit()-- added litmus_pre_task_exit()
to be called without the Linux runqueue lock held.
2) Prioritization of base-prio klmirqd/aux threads vs. normal
real-time tasks.
3) Initialization of gpu owner binheap node moved to *after*
memset(0) of rt_params.
4) Exit path of klmirqd threads.
|
| |
|
| |
|
| |
|
|
|
|
|
|
| |
Note that num_online_gpus() merely reports the
staticly configured maximum number of available
GPUs. Will make dynamic in the future.
|
| |
|
|
|
|
| |
this code is untested!
|
| |
|
| |
|
|
|
|
|
|
|
|
| |
This patch causes reboot notifications to be send
to Litmus. With this patch, Litmus attempts to
switch back to the Linux-plugin before the reboot
proceeds. Any failures to switch back are reported
via printk() (the reboot is not halted).
|
| |
|
| |
|
| |
|
|\ |
|
| | |
|
|/ |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Fixes two bugs with nested locks:
1) List of aux threads could become corrupted.
-- moved modifications to be within scheduler lock.
2) Fixed bad EDF comparison ordering that could lead
to schedule thrashing in an infinite loop.
3) Prevent aux threads from inheriting a priority from
a task that is blocked on a real-time litmus lock.
(since the aux threads can't possibly hold these locks,
we don't have to worry about inheritance.)
|
|\
| |
| |
| |
| | |
Conflicts:
kernel/sched.c
|
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Fixes a bug in Litmus where processor scheduling states
could become corrupted. Corruption can occur when a
just-forked thread is externally forced to be scheduled
by SCHED_LITMUS before this just-forked thread can complete
post-fork processing. Specifically, before schedule_tail()
has completed.
|
| | |
|
| |
| |
| |
| | |
Extended auxillary task support to C-EDF. Modeld after G-EDF.
|
| |
| |
| |
| |
| |
| | |
Auxillary task features were enabled by CONFIG_LITMUS_LOCKING.
Made auxillary tasks a seperate feature that depends upon
CONFIG_LITMUS_LOCKING.
|
| | |
|
| | |
|
|\ \
| | |
| | |
| | |
| | |
| | |
| | | |
Conflicts:
include/litmus/unistd_32.h
include/litmus/unistd_64.h
litmus/litmus.c
|
| | | |
|
| | | |
|
| |\ \
| | | |
| | | |
| | | |
| | | | |
Conflicts:
litmus/sched_gsn_edf.c
|
| | |/
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
Added signals to Litmus. Specifcally, SIG_BUDGET signals
are delivered (when requested by real-time tasks) when
a budget is exceeded.
Note: pfair not currently supported (but it probably could be).
|
| |\ \
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
Conflicts:
include/litmus/binheap.h
include/litmus/fdso.h
include/litmus/litmus.h
litmus/Makefile
litmus/binheap.c
litmus/edf_common.c
litmus/fdso.c
litmus/jobs.c
litmus/locking.c
|
| | | | |
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
Instead of tie-breaking by PID (which is a static
priority tie-break), we can tie-break by other
job-level-unique parameters. This is desirable
because tasks are equaly affected by tardiness
since static priority tie-breaks cause tasks
with greater PID values to experience the most
tardiness.
There are four tie-break methods:
1) Lateness. If two jobs, J_{1,i} and J_{2,j} of
tasks T_1 and T_2, respectively, have equal
deadlines, we favor the job of the task that
had the worst lateness for jobs J_{1,i-1} and
J_{2,j-1}.
Note: Unlike tardiness, lateness may be less than
zero. This occurs when a job finishes before its
deadline.
2) Normalized Lateness. The same as #1, except
lateness is first normalized by each task's
relative deadline. This prevents tasks with short
relative deadlines and small execution requirements
from always losing tie-breaks.
3) Hash. The job tuple (PID, Job#) is used to
generate a hash. Hash values are then compared.
A job has ~50% chance of winning a tie-break
with respect to another job.
Note: Emperical testing shows that some jobs
can have +/- ~1.5% advantage in tie-breaks.
Linux's built-in hash function is not totally
a uniform hash.
4) PIDs. PID-based tie-break used in prior
versions of Litmus.
Conflicts:
litmus/edf_common.c
|
| | |/
| | |
| | |
| | |
| | |
| | | |
Restructured the EDF task comparison code to improve readability.
Recoded chained logical expression embedded in return statement
into a series of if/else blocks.
|
| | | |
|
| | | |
|
| | | |
|
| | | |
|
| |/
|/| |
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Added support for arbitrary deadlines.
Constraint: Relative deadline must be >= exec cost.
Use: Set relative deadline in rt_task::rdeadline. Set value to 0
to default to implicit deadlines.
Limitations: PFAIR not supported by this patch. PFAIR updated to
reject tasks that do not have implicit deadlines.
|
| |
| |
| |
| |
| |
| |
| |
| |
| | |
By default, even private writable pages are mapped
with the RW bit disabled in the PTE. This causes a
"minor" page fault when the page is first written
to. To avoid this, make sure that vm_inert_page()
uses the proper page protection bits and mark the
VMA as VM_IO to keep the rest of the VM code out.
|
| |
| |
| |
| |
| | |
Page faults should not happen here. Scream if they do anyway. This is
useful when extending the control page.
|
| |
| |
| |
| |
| |
| | |
vm_insert_page() is the simpler and preferred interface for remapping
individual pages and includes additional error checks. It suffices for
our purposes, so let's use it instead.
|
| |
| |
| |
| |
| |
| | |
The existing admission test failed to test for too-low
priorities. Use the common macro to accept only valid
priorities.
|
| |
| |
| |
| |
| |
| | |
Add a comment to explain how priorities are
interpreted, and provide some useful macros for
userspace.
|
| |
| |
| |
| |
| | |
Move declaration of 'cpu' out of #ifdef block, it's also needed for
CONFIG_LITMUS_LOCKING.
|
| |
| |
| |
| | |
Prior to that it was only used internally for DPCP
|