aboutsummaryrefslogtreecommitdiffstats
path: root/litmus/litmus.c
diff options
context:
space:
mode:
Diffstat (limited to 'litmus/litmus.c')
-rw-r--r--litmus/litmus.c39
1 files changed, 39 insertions, 0 deletions
diff --git a/litmus/litmus.c b/litmus/litmus.c
index db5ce0e9c76e..27efb22d1d2f 100644
--- a/litmus/litmus.c
+++ b/litmus/litmus.c
@@ -31,6 +31,8 @@
31#include <trace/events/litmus.h> 31#include <trace/events/litmus.h>
32#endif 32#endif
33 33
34extern void l2c310_flush_all(void);
35
34/* Number of RT tasks that exist in the system */ 36/* Number of RT tasks that exist in the system */
35atomic_t rt_task_count = ATOMIC_INIT(0); 37atomic_t rt_task_count = ATOMIC_INIT(0);
36 38
@@ -314,6 +316,43 @@ asmlinkage long sys_null_call(cycles_t __user *ts)
314 return ret; 316 return ret;
315} 317}
316 318
319/* sys_test_call() is a test system call for developing */
320asmlinkage long sys_test_call(unsigned int param)
321{
322 long ret = 0;
323 unsigned long flags;
324 struct vm_area_struct *vma_itr = NULL;
325
326 TRACE_CUR("test_call param = %d\n", param);
327
328 down_read(&current->mm->mmap_sem);
329 vma_itr = current->mm->mmap;
330 while (vma_itr != NULL) {
331 printk(KERN_INFO "vm_start : %lx\n", vma_itr->vm_start);
332 printk(KERN_INFO "vm_end : %lx\n", vma_itr->vm_end);
333 printk(KERN_INFO "vm_flags : %lx\n", vma_itr->vm_flags);
334 printk(KERN_INFO "vm_prot : %x\n", pgprot_val(vma_itr->vm_page_prot));
335 printk(KERN_INFO "VM_SHARED? %ld\n", vma_itr->vm_flags & VM_SHARED);
336 if (vma_itr->vm_file) {
337 struct file *fp = vma_itr->vm_file;
338 unsigned long fcount = atomic_long_read(&(fp->f_count));
339 printk(KERN_INFO "f_count : %ld\n", fcount);
340 if (fcount > 1) {
341 vma_itr->vm_page_prot = pgprot_noncached(vma_itr->vm_page_prot);
342 }
343 }
344 printk(KERN_INFO "vm_prot2 : %x\n", pgprot_val(vma_itr->vm_page_prot));
345 vma_itr = vma_itr->vm_next;
346 }
347 up_read(&current->mm->mmap_sem);
348
349 local_irq_save(flags);
350 l2c310_flush_all();
351 local_irq_restore(flags);
352
353 return ret;
354}
355
317/* p is a real-time task. Re-init its state as a best-effort task. */ 356/* p is a real-time task. Re-init its state as a best-effort task. */
318static void reinit_litmus_state(struct task_struct* p, int restore) 357static void reinit_litmus_state(struct task_struct* p, int restore)
319{ 358{