aboutsummaryrefslogtreecommitdiffstats
path: root/include
Commit message (Collapse)AuthorAge
* Add litmus_clock() helperBjoern Brandenburg2016-07-20
| | | | Convenient wrapper for CLOCK_MONOTONIC -> lt_t.
* Add sleep_until_mono(), lt_sleep_until() helpersBjoern Brandenburg2016-07-19
|
* Add unit-test for CPU mapping parsingMahircan Gul2016-07-18
| | | | | | | | - Decompose read_mapping into two functions: *read_mapping* which reads CPU mapping data as string from file, and *set_mapping* that actually sets the cpu_set_t according to the mapping - Add unit test for setting cpu_set_t to various CPU indexes
* Add reservation_create() LITMUS^RT system callBjoern Brandenburg2016-03-16
|
* Switch syscalls to use new LITMUS^RT ioctl() interfaceBjoern Brandenburg2015-12-18
| | | | This change should be transparent to clients of the library.
* Add monotime() wrapper for CLOCK_MONOTONICBjoern Brandenburg2015-12-16
|
* Add syscall get_current_budget()Bjoern Brandenburg2015-09-08
|
* Rebase 2015.1: update SCHED_LITMUS policy IDBjoern Brandenburg2015-07-20
| | | | | With the addition of SCHED_DEADLINE in mainline Linux, we have to adjust the ID of SCHED_LITMUS.
* Modernize rt_launch; remove internal API cruftBjoern Brandenburg2014-06-03
| | | | | | | 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.
* Add add convenience wrapper and tests for the DFLPBjoern Brandenburg2014-04-01
|
* Add support for the DFLPBjoern Brandenburg2014-04-01
| | | | Just add the ID and symbol.
* Use /proc/litmus/domains to set up affinity masksGlenn Elliott2014-02-24
| | | | | | | | | | | | | | | | | | | | | | | | | 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]
* liblitmus: Add Doxygen documentation for public APIsRoy Spliet2013-11-27
|
* Fix for C++: 'namespace' renamed to 'name_space'Glenn Elliott2013-09-27
| | | | | | | 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.)
* Add testcase for admission of suspended tasksBjoern Brandenburg2013-06-08
| | | | | | 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.
* Change convenience API routines.Glenn Elliott2013-03-12
| | | | | | | | | | | | | 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.
* Add init_rt_task_param().Glenn Elliott2013-03-12
| | | | | Adds init_rt_task_param(). Facilitates setting up default real-time task attributes that cannot be set by memset(0).
* Cluster-aware rtspin and rt_launch.Glenn Elliott2013-03-12
| | | | | | | | | 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).
* Auto-CPU-affinity from part./cluster assignment.Glenn Elliott2013-03-12
| | | | | | | | | | | 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().)
* Add basic locking support to rtspinBjoern Brandenburg2013-02-04
| | | | | | 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.
* Include PID info in test failuresBjoern Brandenburg2013-01-14
| | | | Useful for correlating test failures to events in traces.
* rt_launch: add support for -q <priority>Bjoern Brandenburg2013-01-11
| | | | This mirrors the option in rtspin.
* Make release_ts a bit more userfriendlyBjoern Brandenburg2013-01-11
| | | | | | | 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.
* Add control page offset checksstagingBjoern Brandenburg2012-12-06
| | | | | Make sure the kernel and userspace compilers have the same idea of the layout of the control page.
* Add testcase for preemptions on wakeup under P-EDF and P-FPBjoern Brandenburg2012-08-14
| | | | | | Resuming higher-priority tasks should of course preempt lower-priority tasks. This test case infers if higher-priority tasks are unreasonably delayed.
* Implement lt_sleep() syscall wrapperBjoern Brandenburg2012-08-14
| | | | | Wrap nanosleep() to make sleeping for a given number of nanoseconds easier, using the LITMUS^RT time type lt_t.
* Implement get_nr_ts_release_waiters() /proc wrapperBjoern Brandenburg2012-08-14
| | | | | Add a wrapper for /proc/litmus/stats to make it easy to query the number of tasks already waiting for a task set release.
* Add convenience wrappers for the DPCP and MPCPBjoern Brandenburg2012-08-14
| | | | For consistency reasons and to document the cpu parameter of the DPCP.
* Make use of kernel-provided FP macrosBjoern Brandenburg2012-06-26
| | | | | | Use the kernel's notion of fixed priorities. Also, add some clarifying comments to the task setup wrappers.
* P-FP: make PCP available to user spaceSven Dziadek2012-05-31
| | | | | | PCP was only used for DPCP before tests: add some basic tests for PCP under P-FP
* P-FP: port P-FP plugin used in B. Brandenburg'sSven Dziadek2012-05-31
| | | | | | | | | dissertation (branch bbb-diss) I took the unchanged code but removed references to OMLP which was and is not implemented tests: changed so that they work for P-FP
* Switch to new np-section protocol.Bjoern B. Brandenburg2011-11-24
| | | | Everything is in one 32-bit word now.
* update headersBjoern B. Brandenburg2011-11-24
| | | | we need uint64_t in litmus.h
* switch to generic locking system callsBjoern B. Brandenburg2011-02-03
| | | | | The new generic lock layer in LITMUS^RT does away with per-protocol system calls. Change accordingly.
* Export wctime() and cputime() from rtspin to library clientsBjoern B. Brandenburg2011-02-03
| | | | | The timing functions are quite handy when building benchmark tasks. Avoid copy&paste reuse by making them available via the library.
* refactor: remove all architecture-dependent code from include/Bjoern B. Brandenburg2010-11-09
| | | | Move the architecture-dependent code to the arch/ subtree.
* refactor: use architecture-specific includes for cycles.hBjoern B. Brandenburg2010-11-09
|
* avoid including header files directlyBjoern B. Brandenburg2010-11-09
| | | | | | | | | | | | | | | The kernel warns against including header files directly. For good reason: our previous approach (just -I$KERNEL/include) caused all kinds of files to be included that should have come from /usr/include instead. This patch rewrites the Makfile so that the (few) needed headers are copied into the liblitmus src tree before compiling the library. This avoids having to specify the kernel include directories with -I, and also makes it easier to link against liblitmus (external applications do not need to know where the kernel is). Finally, this allows us to enable -Werror.
* Support budget enforcement policies. Allows tasks to specifyGlenn Elliott2010-05-20
| | | | | | | | how their execution budgets should be enforced: NO_ENFORCEMENT, QUANTUM_ENFORCEMENT, and PRECISE_ENFORCEMENT (unsupported). NOTE: Users of NO_ENFORCEMENT must call sleep_next_period() at the end of every job to signal to the kernel that its job is complete.
* Add atomic operations on x86_642010.1Andrea Bastoni2010-04-19
|
* Add cli() and sti() wrappers... use with care...Andrea Bastoni2010-04-12
|
* Add get_control_page() library functionAndrea Bastoni2010-04-12
|
* Remove prototype for non-existing system call.Bjoern B. Brandenburg2010-02-26
| | | | | This syscall hasn't been around since Fall 2007... The RTCSA'08 paper details how we are doing it now.
* Provide additional information on test failures.Bjoern B. Brandenburg2010-02-25
|
* Merge branch 'tests'Bjoern B. Brandenburg2010-02-25
|\
| * Introduce test framework for LITMUS^RT.Bjoern B. Brandenburg2010-02-20
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This is the beginning of the LITMUS^RT testsuite. The main design goals are flexibility and ease of test writing. To create a new test, simply write a test case in any C file in the tests/ subdirectory. The buildsystem will find the test and hook it up with the testrunner. Have a look at tests/fdso.c and include/tests.h to get an idea for what tests look like. Tests can be executed with the 'runtests' tool. Each testcase is executed in a separate process in order to ensure that tests do not influence each other.
* | Added protections to litmus.h to prevent name mangling when usedGlenn Elliott2010-02-22
|/ | | | in C++ code.
* Re-implement non-preemptive section support.Bjoern B. Brandenburg2010-02-03
| | | | Layered on top of the LITMUS control page.
* Add initial support x86-64 ASM header.Bjoern B. Brandenburg2010-02-03
|
* Porting on x86_64Andrea Bastoni2009-12-17
|