davida326 / Szakdolgozat

BSc szakdolgozat
0 stars 0 forks source link

Kernel modul készítése az adatok kinyeréséhez #2

Closed piller-imre closed 4 years ago

piller-imre commented 4 years ago

A futáshoz kapcsolódó adatokat kinyerni valahogy a kernelből táblázatos formában. Az oszlopok például pid, priority, időszelet. Érdemes a kontextusváltásokat is közé tenni.

davida326 commented 4 years ago
#include <linux/module.h>     /* Needed by all modules */ 
#include <linux/kernel.h>     /* Needed for KERN_INFO */ 
#include <linux/init.h>       /* Needed for the macros */ 
#include <linux/sched/signal.h>
#include <linux/sched.h>
#include <linux/sched/rt.h>
struct rq *ready;
struct task_struct *p;
struct list_head *list;
///< The author -- visible when you use modinfo 
MODULE_AUTHOR("Vass Dávid Attila"); 

///< The description -- see modinfo 
MODULE_DESCRIPTION("Process information getter"); 
MODULE_LICENSE("GPL");
static int __init processinfo_init(void) 
{ 
    for_each_process(p)
    {
        printk(KERN_CRIT "/comm/and: %s pid: %d prio: %d rt_prio: %d weight: %lu vruntime: %llu pcount:%lu \nsum_exec_runtime:%llu prev_sum_exec_runtime:%llu exec_start:%llu\n",p->comm,p->pid,p->prio,rt_task(p),p->se.load.weight,p->se.vruntime,p->sched_info.pcount,p->se.sum_exec_runtime,p->se.prev_sum_exec_runtime,p->se.exec_start);
        printk(KERN_CRIT "utime: %llu stime: %llu gtime: %llu",p->utime,p->stime,p->gtime);
    }

    return 0; 
} 

static void __exit processinfo_end(void) 
{ 
    printk(KERN_INFO "Goodbye world\n"); 
} 

module_init(processinfo_init); 
module_exit(processinfo_end);
davida326 commented 4 years ago

rt_prio - 1 az értéke ha az adott processz, valós idejű. 0 ha normál processz pcount - ez a változó, az amelyik megmutatja hogy az adott processzt hányszor választották már meg futásra. vruntime - virtuális futásideje az adott processznek