aboutsummaryrefslogtreecommitdiffstats
path: root/include/litmus
Commit message (Collapse)AuthorAge
* Change API: spinlock_t -> raw_spinlock_tAndrea Bastoni2010-05-21
| | | | | | | | | | | | | | | | | | | | | | | Adapt to new schema for spinlock: (tglx 20091217) spinlock - the weakest one, which might sleep in RT raw_spinlock - spinlock which always spins even on RT arch_spinlock - the hardware level architecture dependent implementation ---- Planning for future porting on PreemptRT, probably all of the spinlock changed in this patch should true spinning lock (raw_spinlock). There are a couple of spinlock that the kernel still defines as spinlock_t (therefore no changes reported in this commit) that might cause problems to us: - wait_queue_t lock is defined as spinlock_t; it is used in: * fmlp.c -- sem->wait.lock * sync.c -- ts_release.wait.lock - rwlock_t used in fifo implementation in sched_trace.c * this need probably to be changed to something always spinning in RT at the expense of increased locking time.
* Added support for choices in budget policy enforcement.wip-budgetGlenn Elliott2010-05-20
| | | | | | | | | | NO_ENFORCEMENT - A job may execute beyond its declared execution time. Jobs notify the kernel that they are complete via liblitmus's sleep_next_period() QUANTUM_ENFORCEMENT - The kernel terminates a job if its actual execution time exceeds the declared execution time. PRECISE_ENFORCEMENT - Hook declared, but not yet implemented. Plan to support this policy through hrtimers. Error thrown if specified.
* Add /proc/litmus/cluster_cacheAndrea Bastoni2010-04-13
| | | | | - read L2, L3 clustering from proc file (default L2) - check for "feasible cluster size"
* Fixed two bugs:Glenn Elliott2010-02-11
| | | | | | | | 1) High priority task tied to FMLP semaphore in P-EDF scheduling is incorrectly tracked for tasks acquiring the lock without contention. (HP is always set to CPU 0 instead of proper CPU.) 2) Race in a print statement from P-EDF's pi_block() causes NULL pointer dereference.
* Bugfix: [x86_64] missing clobbered register in feather_trace_64Andrea Bastoni2010-02-06
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | In feather_trace_64 with optimized gcc kernel code we must force the reloading of additional (non very obvious :) registers. Fixes the following BUG: [ 66.288413] BUG: unable to handle kernel NULL pointer dereference at 0000000000000018 [ 66.289276] IP: [<ffffffff81208a8b>] requeue+0x1b/0x90 [ 66.289276] PGD 7b8cf067 PUD 7ad9e067 PMD 0 [ 66.289276] Oops: 0000 [#1] PREEMPT SMP [ 66.289276] last sysfs file: /sys/devices/pci0000:00/0000:00:01.1/ide0/0.0/block/hda/size [ 66.289276] CPU 3 [ 66.289276] Modules linked in: [ 66.289276] Pid: 1485, comm: release_ts Not tainted 2.6.32-litmus2010 #172 [ 66.289276] RIP: 0010:[<ffffffff81208a8b>] [<ffffffff81208a8b>] requeue+0x1b/0x90 [ 66.289276] RSP: 0018:ffff88007b47fdc8 EFLAGS: 00010086 [ 66.289276] RAX: 0000000000000000 RBX: ffff88007b47ffd8 RCX: ffff8800063d1560 [ 66.289276] RDX: 0000000000000000 RSI: 0000000000000018 RDI: ffff88007b47ffd8 [ 66.289276] RBP: ffff88007b47fdd8 R08: 0000000000000001 R09: 0000000000000000 [ 66.289276] R10: 0000000000000003 R11: 0000000000000000 R12: ffff88007b47ffd8 [ 66.289276] R13: ffff880005fed240 R14: 0000000000000003 R15: ffff88007b47fe88 [ 66.289276] FS: 000000000077b850(0063) GS:ffff880006200000(0000) knlGS:0000000000000000 [ 66.289276] CS: 0010 DS: 0000 ES: 0000 CR0: 000000008005003b [ 66.289276] CR2: 0000000000000018 CR3: 000000007bb5d000 CR4: 00000000000006a0 [ 66.289276] DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000 [ 66.289276] DR3: 0000000000000000 DR6: 00000000ffff0ff0 DR7: 0000000000000400 [ 66.289276] Process release_ts (pid: 1485, threadinfo ffff88007b47e000, task ffff88007ba71320) [ 66.289276] Stack: [ 66.289276] ffff88007b47ffd8 0000000000000082 ffff88007b47fde8 ffffffff81208ec3 [ 66.289276] <0> ffff88007b47fe08 ffffffff8120968f ffff880005fed240 ffff88007b725fa0 [ 66.289276] <0> ffff88007b47fe28 ffffffff810332ed ffff88007b47fe38 ffff88007b725fa0 [ 66.289276] Call Trace: [ 66.289276] [<ffffffff81208ec3>] gsnedf_job_arrival+0x13/0x20 [ 66.289276] [<ffffffff8120968f>] gsnedf_task_wake_up+0x8f/0xd0 [ 66.289276] [<ffffffff810332ed>] enqueue_task_litmus+0x3d/0x90 [ 66.289276] [<ffffffff8102c48d>] enqueue_task+0x2d/0x40 [ 66.289276] [<ffffffff8102c55e>] activate_task+0x2e/0x40 [ 66.289276] [<ffffffff8103646b>] try_to_wake_up+0x1db/0x360 [ 66.289276] [<ffffffff81036602>] default_wake_function+0x12/0x20 [ 66.289276] [<ffffffff8102c96b>] __wake_up_common+0x5b/0x90 [ 66.289276] [<ffffffff81030ddd>] complete_n+0x4d/0x70 [ 66.289276] [<ffffffff81205634>] sys_release_ts+0x104/0x120 [ 66.289276] [<ffffffff8100b2eb>] system_call_fastpath+0x16/0x1b [ 66.289276] Code: c7 40 04 01 00 00 00 e9 89 fe ff ff 0f 1f 40 00 55 48 89 e5 41 54 53 0f 1f 44 00 00 48 85 ff 49 89 fc 74 64 48 8b 87 c0 12 00 00 <83> 78 18 ff 75 5f 48 8b 9f 70 12 00 00 e8 e3 d1 e5 ff 48 39 d8 [ 66.289276] RIP [<ffffffff81208a8b>] requeue+0x1b/0x90 [ 66.289276] RSP <ffff88007b47fdc8> [ 66.289276] CR2: 0000000000000018 [ 66.289276] ---[ end trace 1475fc2061a1b4b5 ]---
* Introduce generic NP-section aware preemption functionBjoern B. Brandenburg2010-02-04
| | | | | | | | Dealing with preemptions across CPUs in the presence of non-preemptive sections can be tricky and should not be replicated across (event-driven) plugins. This patch introduces a generic preemption function that handles non-preemptive sections (hopefully) correctly.
* Re-implement non-preemptive section support.Bjoern B. Brandenburg2010-02-03
| | | | | | | | | | | | Re-introduce NP sections in the configuration and in litmus.h. Remove the old np_flag from rt_param. If CONFIG_NP_SECTION is disabled, then all non-preemptive section checks are constant expressions which should get removed by the dead code elimination during optimization. Instead of re-implementing sys_exit_np(), we simply repurposed sched_yield() for calling into the scheduler to trigger delayed preemptions.
* Add virtual LITMUS^RT control device.Bjoern B. Brandenburg2010-02-03
| | | | | | | | | 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.
* Add Feather-Trace x86_32 architecture dependent codeAndrea Bastoni2010-01-19
| | | | | Add x86_32 architecture dependent code and add the infrastructure for x86_32 - x86_64 integration.
* Refactor binomial heap names: heap -> bheapAndrea Bastoni2010-01-15
| | | | | | | - Binomial heap "heap" names conflicted with priority heap of cgroup in kernel - This patch change binomial heap "heap" names in "bheap" (I wasn't able to come up with a more interesting name, so proposal are welcomed)
* Porting on x86_64Andrea Bastoni2009-12-17
| | | | | | - add syscall on x86_64 - refactor __NR_sleep_next_period -> __NR_complete_job for both x86_32 and x86_64
* Add release-master supportAndrea Bastoni2009-12-17
|
* Add LITRMU^RT syscalls to x86_32Andrea Bastoni2009-12-17
|
* Add File Descriptor Attached Shared Objects (FDSO) infrastructureAndrea Bastoni2009-12-17
|
* Add common EDF functionsAndrea Bastoni2009-12-17
|
* Add rt_domain_t supportAndrea Bastoni2009-12-17
| | | | | to be merged: - arm_release_timer() with no rq locking
* Add tracing support and hook up Litmus KConfig for x86Andrea Bastoni2009-12-17
| | | | | | | | - fix requesting more than 2^11 pages (MAX_ORDER) to system allocator to be merged: - feather-trace generic implementation
* add Feather-Trace device file supportAndrea Bastoni2009-12-17
|
* Core LITMUS^RT infrastructure.Andrea Bastoni2009-12-17
to be merged: - SRP (sched.c) - feather-trace implementation (to be fixed) - sync support (KConfig) litmus_sched_class implements 3 new methods: .prio_changed: void .switched_to: void .get_rr_interval: return infinity (i.e., 0)