| Commit message (Collapse) | Author | Age |
... | |
|
|
|
|
|
|
| |
Switch rt_launch to use a more modern way to launch real-time tasks.
This makes rt_launch more flexible, makes it more similar to rtspin,
and also allows to let us get rid of a chunk of old, inflexible code
in liblitmus that wasn't really serving any useful purpose anymore.
|
|
|
|
| |
Don't override the defaults unless required.
|
|
|
|
|
| |
This patch adds S_IRUSR as the third parameter to open()
in the DFLP locking unit test.
|
|
|
|
|
|
|
|
|
|
|
|
| |
This patch improves the cpu bit map parsing used to determine
CPU/cluster mapping. Namely, it supports clusters with more
than 32 CPUs. Prior to this patch, mapping would fail due to
unexpected commas in bitfield data read from /proc (groups
of 32 CPUs are separated by commas).
NOTE: Bug could still be encountered if NR_CPUS > 32.
New CPU limit: 4096.
|
|
|
|
|
|
|
|
| |
The LITMUS^RT kernel was changed to no longer test for "invalid" CPU
paramters to allow reuse of the CPU parameter to denote virtual CPUs,
reservations, etc.
This patch removes the corresponding test.
|
| |
|
|
|
|
| |
Just add the ID and symbol.
|
|
|
|
|
|
| |
Make sure new default parameters such as the deadline are taken care
of in the old task creation routines. This fixes a problem with
rt_launch.
|
|
|
|
|
| |
This crashes old versions of the kernel. Kernel patches fixing the
various panics have been merged into the kernel staging tree.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This patch replaces the algorithm used to compute CPU affinity masks.
The old algorithm was fragile and would break on systems with multiple
levels of shared caches. (As found on some older Intel chips, and as
one would probably find on a system with hyper-threading enabled.) The
bug stems from fact that Linux enumerates consecutive CPUs in a way
that distributes them across the physical system, thereby reducing
contention resources (e.g., cache).
Cluster size no longer needs to be provided now that cluster/CPU
mappings are explicit in /proc/litmus/domains/.
This keeps the following migration functions, but marks them as
deprecated:
- be_migrate_to_cluster()
- cluster_to_first_cpu()
- partition_to_cpu()
Although the deprecated interfaces are supported, the implementations
for these functions call the new be_migrate_to_domain() and
domain_to_first_cpu() functions.
[bbb: resolved several merge conflicts]
|
|
|
|
| |
Also adjust 'make clean' and .gitignore.
|
| |
|
|
|
|
|
|
| |
Fixed build on ARMv7
Signed-off-by: Roy Spliet <rspliet@mpi-sws.org>
|
|
|
|
|
|
|
| |
Renames the 'namespace' parameter to litmus_open_lock() forard
declaration in litmus.h to 'name_space'. This allows litmus.h
to be compiled by a C++ compiler. (Note: Using 'extern "C" {}'
does not work as an alternative solution.)
|
|
|
|
| |
This matches the corresponding change in the kernel.
|
|
|
|
|
|
|
|
|
|
|
| |
The userspace versions of unistd.h have moved to include/uapi/asm in
recent kernel versions; we need to adjust the liblitmus Makefile
accordingly.
Further, on x86, the unistd_32.h and unistd_64.h files are now
actually being auto-generated; this also forced adjustments.
This patch is required for liblitmus to compile against Linux 3.10.
|
|
|
|
| |
The string 'NO_CPU' needs to fit into the buffer.
|
|
|
|
|
| |
Complements the prior test for suspended tasks. All plugins currently
pass this test.
|
|
|
|
|
|
| |
The kernel needs to be able to deal with tasks that do not make
themselves a real-time task, but get configured by some other task
instead.
|
|
|
|
|
| |
A recent patch changed the name of the constant in the kernel. Update
liblitmus accordingly.
|
|
|
|
|
|
|
|
| |
My version of gcc would complain about "dereferencing pointer does
break strict-aliasing rules" because of a (harmless) pointer cast.
This patch adds a helper void pointer to make the assignment explicit,
which avoids the cast and hence silences the warning.
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The sproadic_*() macros have become unwieldy. This patch
replaces those convenience macros for global, clustered,
and partitioned scheduling. A part of this API change
is the explicit use of nanosecond time-values. Prior APIs
have used lt_t (litmus time), which had an implied time
scale of nanoseconds.
/bin apps and test suite also updated to use revised API.
Modifications to the test suite are mostly centered around
using nanoseconds instead of milliseconds.
|
|
|
|
|
| |
Adds init_rt_task_param(). Facilitates setting up default
real-time task attributes that cannot be set by memset(0).
|
|
|
|
|
|
|
|
|
| |
This patch adds cluster scheduling options to
rtspin and rt_launch. The convenience routines
in litmus.h were also updated to facilitate
clustered scheduling. For partitioned scheduling,
just set cluster_size = 1 (default size for rtspin
and rt_launch).
|
|
|
|
|
|
|
|
|
|
|
| |
This patch replaces be_migrate_to() with several
be_migrate_*() APIs to automatically assign CPU affinity
masks from a task's partition (or cluster) assignment.
Routines are release-master-aware such that the release
master (if one exists) will NOT be included in the
task's affinity mask. (Note that release-master
avoidance may be overridden by calling
__be_migrate_thread_to_cluster().)
|
|
|
|
|
| |
Minor changes to test case code to enable compilation
with 'gcc -O2' (gcc v4.7.2).
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This adds the uncache test tool (bin/uncache.c). The tool
can be used to test Litmus's char device driver for allocating
uncacheable CPU memory. The tool runs various checks and
gathers basic cache vs. main memory statistics.
In the future, uncache could be extended to quantify the
benefits of the L1, L2, and L3 caches, instead of treating
them as a black box.
Note: Uncache works best when compiled with '-O2'. While '-O2'
has not been added to the Makefile, other code was updated (code
in tests/ and rtspin), to compile with -O2.
DEPENDS UPON LITMUS-RT PATCH 888d097deb6d1fdc0c89a4f9667fd81cf416cfc7.
|
|
|
|
|
| |
The kernel should deny attempts to nest resources in ways that are not
supported.
|
|
|
|
|
|
| |
This is useful for testing locking protocol implementations (not
intended for benchmarking!), and also serves to document how to use
the LITMUS^RT locking API.
|
|
|
|
| |
Useful for correlating test failures to events in traces.
|
|
|
|
|
| |
Context: priority inheritance triggered a BUG_ON() in fp_common.c.
While at it, add a similar test for the SRP.
|
|
|
|
| |
This mirrors the option in rtspin.
|
|
|
|
|
|
|
| |
The -f option required manually *also* setting
the -w option. This is no longer required.
While at it, simplify the code by using the /proc interface.
|
|
|
|
|
|
| |
Branch litmus-rt/prop/robust-tie-break added fpmath.h for fixed-point
computations. Updated Makefile to pull this header from litmus-rt
so it may also be used in liblitmus.
|
|
|
|
|
| |
Make sure the kernel and userspace compilers have the same idea of the
layout of the control page.
|
|
|
|
|
|
| |
Resuming higher-priority tasks should of course preempt lower-priority
tasks. This test case infers if higher-priority tasks are unreasonably
delayed.
|
|
|
|
|
| |
Wrap nanosleep() to make sleeping for a given number of
nanoseconds easier, using the LITMUS^RT time type lt_t.
|
|
|
|
|
| |
Add a wrapper for /proc/litmus/stats to make it easy to query the
number of tasks already waiting for a task set release.
|
|
|
|
|
| |
The 2 second delay was quite annoying. Make it short enough to not be
so obvious.
|
|
|
|
|
| |
Do the basic open/lock/unlock/close test sequence for the MPCP and the
DPCP as well.
|
|
|
|
| |
For consistency reasons and to document the cpu parameter of the DPCP.
|
|
|
|
| |
Prevents accidental staging of auto-generated files.
|
|
|
|
|
| |
Add a test that makes sure that the kernel does indeed not accept
infeasible densities.
|
|
|
|
| |
Try to infer current plugin if no plugin is specified.
|
|
|
|
| |
Also add the priority parameter, which was missing.
|
|
|
|
|
|
|
|
| |
Updated APIs to support arbitrary deadlines. Added macros for implicit
deadlines.
Note: Had to tweak Makefile to support gcc version >= 4.6 (moved -lrt to the
end of the link command).
|
|
|
|
|
| |
Segmentation faults are clearly test failures;
make sure to report them accordingly.
|
|
|
|
|
| |
Under any plugin, the control page should be mappable
and writable.
|
|
|
|
|
| |
Make sure out-of-range priorities
are always rejected.
|