top과 같은 리눅스 커널에서 cpu usage측정하는 프로그램작성...

슈퍼공돌이맨의 이미지

안녕하세요

디바이스 드라이버 관련해서 리눅스 커널 모듈 작성을 공부하고 있는 학생입니다.

지금 간단한 예제를 수행하고 있는데 procfs 쪽을 하고 있습니다. 지금은 너무 왕초보 단계라서

하나하나 차근차근하고 있습니다 ㅜ

printk가 아닌 커널 로그가 아닌
cat /proc/proc_example 과 같은 command를 입력했을때

입력 후 1초 동안 각 프로세스별 cpu사용량을 측정 후 화면에 표시하는 프로그램을 작성하고자 합니다. top하고 비슷한거같네요

현재 생각한게 cat 입력시점 프로세스의 사용자 사용시간과 커널사용시간의 합인 stime+utime을 저장해놓고 1초후 이 시간을 다시 구해서

뺀다음 1초로 나누면 될같다고 생각합니다. 그런데 1초후에 이시간을 구하고 이전데이터와 연산까지는 가능할것같은데, 화면에 표시하는게 문제네요. seq_file을 사용을 하는데

타이머를 이용해서 1초후에 화면 표시하기 위해서 타이머 함수에서 특정 시간후 실행될 함수의 argument로

seq_file* m 포인터를 넘긴다음 이를 seq_file()을 호출해서 표시하려고 하니 그냥 시스템이 멈추네요. 잘못한건가

msleep을 이용해서 1초 기다렸다가 하는게 맞는건지....

조언좀 부탁드립니다....