diff options
Diffstat (limited to 'litmus/litmus.c')
-rw-r--r-- | litmus/litmus.c | 39 |
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 | ||
34 | extern 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 */ |
35 | atomic_t rt_task_count = ATOMIC_INIT(0); | 37 | atomic_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 */ | ||
320 | asmlinkage 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(¤t->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(¤t->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. */ |
318 | static void reinit_litmus_state(struct task_struct* p, int restore) | 357 | static void reinit_litmus_state(struct task_struct* p, int restore) |
319 | { | 358 | { |