views:

35

answers:

1

Hi All,

First, i admit all the things i will ask are about our homework but i assure you i am not asking without struggling at least two hours.

Description: We are supposed to add a field called max_cpu_percent to task_struct data type and manipulate process scheduling algorithm so that processes can not use an higher percentage of the cpu.

for example if i set max_cpu_percent field as 20 for the process firefox, firefox will not be able to use more than 20% of the cpu.

We wrote a system call to set max_cpu_percent field. Now we need to see if the system call works or not but we could not get the value of the max_cpu_percent field from a user-spaced program. Can we do this? and how?

We tried proc/pid/ etc can we get the value using this util?

By the way, We may add additional questions here if we could not get rid of something else

Thanks All

Solution:

The reason was we did not modify the code block writing the output to the proc queries. There are some methods in array.c file (fs/proc/array.c) we modified the function so that also print the newly added fields value. kernel is now compiling we'll see the result after about an hour =)

It Worked...

A: 

(If you simply extended getrlimit/setrlimit, then you'd be done by now…)

There's already a mechanism where similar parts of task_struct are exposed: /proc/$PID/stat (and /proc/$PID/$TID/stat). Look for functions proc_tgid_stat and proc_tid_stat. You can add new fields to the ends of these files.

ephemient