aboutsummaryrefslogtreecommitdiffstats
path: root/litmus/ctrldev.c
Commit message (Collapse)AuthorAge
* Remove the uncached-control page code.Christopher Kenna2012-12-04
|
* Turn color_ctrl_page into a system call.Christopher Kenna2012-10-18
| | | | | | | | Conflicts: include/litmus/color.h Signed-off-by: Christopher Kenna <cjk@cs.unc.edu>
* uncachable color control pageChristopher Kenna2012-10-11
| | | | Signed-off-by: Christopher Kenna <cjk@cs.unc.edu>
* Architecture dependent uncachable control page.Christopher Kenna2012-10-07
| | | | | | | | | | | | | | | | | | | | | | | | | | While working on an ODROID-X (Samsung Exynos4412 ARM Cortex-A9), I experienced non-determinism when reading and writing values to the LITMUS^RT control page. Writes to the control page from user- (kernel-) space where not always reflected in kernel- (user-) space. Neither restricting the task to run on a single CPU nor inserting general memory barriers (with mb()) fixed the problem. Mapping the control page as uncachable in both kernel and user space did fix the problem, which is what this patch does. Also, since vunmap() cannot be called from an interrupt context, I had to add a workqueue that unmaps and frees the control page when it is no longer needed. (On my system, exit_litmus() was called from interrupt context while the kernel reaped the task_struct.) Conflicts: include/litmus/rt_param.h litmus/litmus.c Does not make the color control page uncachable yet! Signed-off-by: Christopher Kenna <cjk@cs.unc.edu>
* control page: avoid "minor" page faultsBjoern Brandenburg2012-07-23
| | | | | | | | | 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.
* control page: warn on page faultBjoern Brandenburg2012-07-23
| | | | | Page faults should not happen here. Scream if they do anyway. This is useful when extending the control page.
* control page: use vm_insert_page() instead of remap_pfn_range()Bjoern Brandenburg2012-07-23
| | | | | | 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.
* Used miscdevice API for sched_traceBjoern B. Brandenburg2010-05-29
| | | | | | | | | This patch changes sched_trace.c to use the miscdevice API instead of doing all the cdev management ourselves. This remove a chunk of code and we get sysfs / udev integration for free. On systems with default udev rules, this will result in a /dev/litmus/log device being created automatically.
* Add virtual LITMUS^RT control device.Bjoern B. Brandenburg2010-05-29
This device only supports mmap()'ing a single page. This page is shared RW between the kernel and userspace. It is inteded to allow near-zero-overhead communication between the kernel and userspace. It's first use will be a proper implementation of user-signaled non-preemptable section support.