| Commit message (Collapse) | Author | Age |
... | |
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
changed edfsc_cschedule found no fixed task to be next, it will now
return the container instead of null
To explain the other changes, first I must explain the problem.
When a container has no fixed tasks, but still has budget, there is
nothing in litmus that enforces its budget or updates its exec_time in
job_params.
This means we will have to enforce the container budget in
this case ourselves with an enforcement timer. Furthermore, we also have
to update the exec_time ourselves since only actual task have their
exec_time updated automatically by litmus
the new functions are added and gschedule changed to fix the above
problem
|
| |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
The schedule functions expect entry->scheduled to be set if the task
is real-time, but edfsc_gschedule() is called before g_finish_switch()
when inserting a new real-time task via edfsc_task_new(). Resolve this
issue by also setting entry->scheduled in edfsc_task_new() if nothing
was scheduled before.
Current issue I'm working through is that entry->scheduled is still
not always being set. This causes NULL to be passed to preempt(),
which should never happen.
|
|
|
|
|
|
|
|
|
|
|
|
| |
-Added some printk statements to better debug why container_boundary
would not execute 10ms after setting scheduler to EDF-sc
-Initialized container exec_cost to 0
We still have unresolved issues. Namely, during container_boundary,
when releasing new container jobs(where my printk statements are), the
containers are shown to have a large, non-zero exec_cost despite the
fact that there are no fixed tasks in the system. Need to check
container_boundary logic.
|
| |
|
|
|
|
| |
container boundary timer and container task completion
|
| |
|
| |
|
| |
|
| |
|
|
|
|
| |
updated references to parameters in edfsc plugin
|
|
|
|
|
|
| |
worked out scheduling logic
worked out logic for inserting and deleting tasks
TODO: fix updated function names
|
| |
|
|\
| |
| | |
add missing curly braces to error path
|
|/
|
| |
Error with the curly braquets
|
|
|
|
|
| |
To allow userspace to determine when exactly a synchronous release
should occur.
|
| |
|
| |
|
|
|
|
|
| |
Instead of replicating this code across all supported architectures,
hook into the IPI code only once.
|
| |
|
| |
|
| |
|
|
|
|
|
| |
The platform code does not synchronize anything, so make sure there's
only one caller at any time.
|
| |
|
| |
|
|
|
|
|
| |
Mirror what ftrace does to ensure that we can patch up the text
segment.
|
|
|
|
|
|
|
| |
This file is indirectly included in a _a lot_ of Linux. A generic name
like TRACE causes a symbol clashes in drivers, SquashFS, etc.
To avoid this, use only the LITMUS-prefixed version in preempt.h.
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
|
|
|
|
| |
Even if a kernel is relocatable, the if-based implementation of
Feather-Trace can still work. So don't hide these options.
|
|
|
|
|
| |
Don't forget to charge *current* reservation before its (potentially)
only client departs.
|
|
|
|
| |
The comment regarding hrtimer_start() is no longer valid in Linux 4.9.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
P-RES: the partitioned reservation-based scheduler.
A simple partitioned scheduler that provides a reservation environment
on each core, based on the generic reservations code. Hierarchical
scheduling is not supported in this version.
P-RES: trace sporadic wake-ups
P-RES: use inferred_sporadic_job_release_at()
porting fix: add missing header for module_init()
porting fix: adopt new hrtimer API in P-RES plugin
P-RES: add fork() support
P-RES: don't return -ESRCH on reservation lookup failure
P-RES: improve task admission
- Deal with the fact that task_cpu() is not yet updated for
currently suspended tasks.
- Provide some feedback via printk().
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
PFAIR: fix wrong memset()
PFAIR: don't arm timer for tardy tasks
If the system is overloaded, tasks may be tardy. In that case, do not
arm timers. Rather, add tardy tasks back into the ready queue right
away.
PFAIR: use sched_trace_last_suspension_as_completion()
PFAIR: use inferred_sporadic_job_release_at()
rebase fix: use new hrtimer API in PFAIR plugin
|
|
|
|
|
|
|
|
|
|
| |
C-EDF: fix bad memset()
C-EDF: use sched_trace_last_suspension_as_completion()
C-EDF: use inferred_sporadic_job_release_at()
C-EDF: include np.h
|
|
|
|
|
|
|
|
|
|
|
|
| |
P-FP: fix wrong memset()
P-FP: use sched_trace_last_suspension_as_completion()
P-FP: use inferred_sporadic_job_release_at()
P-FP: include np.h
P-FP: improve debug tracing
|
|
|
|
|
|
|
|
|
|
| |
GSN-EDF: fix wrong memset()
GSN-EDF: use sched_trace_last_suspension_as_completion()
GSN-EDF use inferred_sporadic_job_release_at()
GSN-EDF: include np.h
|
|
|
|
|
|
|
|
|
|
| |
PSN-EDF: fix wrong memset()
PSN-EDF: use sched_trace_last_suspension_as_completion()
PSN-EDF: use inferred_sporadic_job_release_at
PSN-EDF: include np.h
|
| |
|
|
|
|
|
| |
To intercept absolute-timed nanosleeps relative to CLOCK_MONOTONIC,
which are likely related to periodic job arrivals.
|
|
|
|
|
|
|
| |
When tasks add timers that have already expired (e.g., when preempted
during schedule_hrtimeout), we should not use the expriration time as
the reference time point, but rather the time when the timer was added
(the delay then includes activation of ksoftirqd, etc.).
|