| Commit message (Collapse) | Author | Age |
|\
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Conflicts:
include/litmus/affinity.h
kernel/sched.c
kernel/softirq.c
litmus/Kconfig
litmus/affinity.c
litmus/litmus.c
litmus/preempt.c
litmus/sched_cedf.c
litmus/sched_gsn_edf.c
|
| | |
|
| | |
|
| | |
|
| | |
|
| | |
|
| |
| |
| |
| |
| |
| |
| | |
Increment a processor-local counter whenever an interrupt is handled.
This allows Feather-Trace to include a (truncated) counter and a flag
to report interference from interrupts. This could be used to filter
samples that were disturbed by interrupts.
|
| |
| |
| |
| |
| |
| | |
User a 32-bit word for all non-preemptive section flags.
Set the "please yield soon" flag atomically when
accessing it on remotely-scheduled tasks.
|
| |
| |
| |
| | |
The macro lock conflicts with locking protocols...
|
| | |
|
| |
| |
| |
| |
| | |
This is useful for measuring locking-related overheads
that are partially recorded in userspace.
|
| |
| |
| |
| |
| | |
This allows us to splice in information into logs from events
that were recorded in userspace.
|
| |
| |
| |
| |
| | |
Instead of doing the hackisch 'write commands to device' thing,
let's just use a real ioctl() interface.
|
| | |
|
| | |
|
| |
| |
| |
| | |
MAX_ORDER is 11, but this is about number of records, not number of pages.
|
| |
| |
| |
| |
| | |
Pfair expects to look at processors in order of increasing index.
Without this patch, Pfair could deadlock in certain situations.
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
This patch fixes two crash or hang bugs related to suspensions
in Pfair.
1) When a job was not present at the end of its last subtask, then
its linked_on field was not cleared. This confused the scheduler
when it later resumed. Fix: clear the field.
2) Just testing for linked_on == NO_CPU is insufficient in the wake_up path
to determine whether a task should be added to the ready queue. If
the task remained linked and then was "preempted" at a later
quantum boundary, then it already is in the ready queue and nothing
is required. Fix: encode need to requeue in task_rt(t)->flags.
|
| |
| |
| |
| |
| |
| | |
Preemption state tracing is only useful when debugging preemption-
and IPI-related races. Since it creates a lot of clutter in the logs,
this patch turns it off unless explicitly requested.
|
| | |
|
| | |
|
| | |
|
| |
| |
| |
| |
| |
| | |
This patch also converts Pfair to implement early releasing such that
no timer wheel is required anymore. This removes the need for a
maximum period restriction.
|
| |
| |
| |
| |
| | |
Merged in release master support for Pfair. Some merge
conflicts had to be resolved.
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Needed to update C-EDF to handle release master. Also
updated get_nearest_available_cpu() to take NO_CPU instead
of -1 to indicate that there is no release master. While
NO_CPU is 0xffffffff (-1 in two's complement), we still
translate this value to -1 in case NO_CPU changes.
Signed-off-by: Andrea Bastoni <bastoni@cs.unc.edu>
|
| |
| |
| |
| | |
As with GSN-EDF, do not insert release master into CPU heap.
|
| |
| |
| |
| | |
We can give up a processor under partitioning, too.
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Given a choice between several available CPUs (unlinked) on which
to schedule a task, let the scheduler select the CPU closest to
where that task was previously scheduled. Hopefully, this will
reduce cache migration penalties.
Notes: SCHED_CPU_AFFINITY is dependent upon x86 (only x86 is
supported at this time). Also PFair/PD^2 does not make use of
this feature.
Signed-off-by: Andrea Bastoni <bastoni@cs.unc.edu>
|
| |
| |
| |
| |
| |
| | |
* Update prototypes for switched_to(), prio_changed(), select_task_rq().
* Fix missing pid field in printk output.
* Synchronize syscall numbers for arm and x86.
|
|/
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Some notes:
* Litmus^RT scheduling class is the topmost scheduling class
(above stop_sched_class).
* scheduler_ipi() function (e.g., in smp_reschedule_interrupt())
may increase IPI latencies.
* Added path into schedule() to quickly re-evaluate scheduling
decision without becoming preemptive again. This used to be
a standard path before the removal of BKL.
Conflicts:
Makefile
arch/arm/kernel/calls.S
arch/arm/kernel/smp.c
arch/x86/include/asm/unistd_32.h
arch/x86/kernel/smp.c
arch/x86/kernel/syscall_table_32.S
include/linux/hrtimer.h
kernel/printk.c
kernel/sched.c
kernel/sched_fair.c
|
| |
|
|
|
|
|
| |
Otherwise, the release master CPU may try to reschedule in an infinite
loop.
|
|
|
|
|
|
|
|
|
|
| |
The next owner of a FMLP-protected resource is dequeued from
the FMLP FIFO queue by unlock() (when the resource is freed by
the previous owner) instead of performing the dequeue by the next
owner immediately after it has been woken up.
This simplifies the code a little bit and also reduces potential
spinlock contention.
|
|
|
|
|
| |
Instead of having an extra flag, Pfair should just infer sporadic
release based on deadlines like other plugins, too.
|
|
|
|
|
|
|
| |
Just like C-EDF is a global scheduler that is split across several
clusters, Pfair can be applied on a per-cluster basis. This patch
changes the Pfair implementation to enable clustering based on the
recently added generic clustering support.
|
|
|
|
|
| |
Inspired by the existing C-EDF code, this generic version will build
clusters of CPUs based on a given cache level.
|
|
|
|
|
| |
Make the cluster size configuration in C-EDF generic so that it can be
used by other clustered schedulers.
|
|
|
|
|
| |
Since we don't expect to trace more than one lock type at a time,
having protocol-specific trace points is not required.
|
|
|
|
|
|
|
|
|
|
|
|
| |
As Glenn pointed out, it is useful for some protocols (e.g.,
k-exclusion protocols) to know the userspace configuration at object
creation time. This patch changes the fdso API to pass the parameter
to the object constructor, which is then in turn passed to the lock
allocater. The return code from the lock allocater is passed to
userspace in return.
This also fixes some null pointer dereferences in the FDSO code found
by the test suite in liblitmus.
|
|
|
|
| |
This introduces the global FMLP based on the generic locking layer.
|
|
|
|
|
| |
Implement the partitioned FMLP with priority boosting based on the
generic lock API.
|
|
|
|
| |
While we are at it, simplify edf_higher_prio() a bit.
|
| |
|
|
|
|
|
| |
This re-enables SRP support under PSN-EDF and demonstrates how the new
locking API should be used.
|
|
|
|
|
| |
This renders the FMLP and SRP unfunctional until they are ported to
the new locking API.
|
|
|
|
|
| |
Provide a unified userspace interface for plugin-specific locking
protocols.
|
|
|
|
|
|
|
|
|
| |
As the number of supported locking protocols is expected to rise,
hard-coding things like priority inheritance in the plugin interface
doesn't scale. Instead, use a new generic lock-ops approach. With this
approach, each plugin can define its own protocol implementation (or
use a generic one), and plugins can support multiple protocols without
having to change the plugin interface for each protocol.
|
|
|
|
| |
Passing the object type explicitly will enable generic lock constructors.
|
| |
|
|
|
|
|
|
|
|
| |
It has always been LITMUS^RT policy that children of real-time tasks
may not skip the admissions test, etc. This used to be enforced, but
was apparently dropped during some port. This commit re-introduces
this policy. This fixes a kernel panic that occurred when "real-time
children" exited without proper initilization.
|