2011-03-01 3 views
0

리눅스 커널에서 특정 sys 호출 (sys_clone)에 대한 사이클 수를 측정하려고합니다. 즉, 내 프로세스가 그 프로세스를 호출하는 유일한 프로세스가 아니며 미리 내 PID를 알 수 없습니다. 그래서 모든 pid에 대해 모든 호출을 기록해야합니다.리눅스 커널에서 파일에 데이터 추가하기

내가 가진 문제점은이 데이터 (debugfs, sysfs, procfs)를 출력하는 방법을 알아내는 유일한 방법은 sys_clone을 호출하는 다른 프로세스의 관련이없는 데이터로 빠르게 덮어 쓸 정적 크기의 버퍼를 사용한다는 것입니다. .

그래서 누군가가 리눅스에서 사용자 공간 접근 가능한 파일에 임의의 수의 행을 추가하는 방법을 알고 있습니까?

답변

0

printk()/klogd 접근 방식을 취할 수 있으며/proc을 통해 내보내는 순환 버퍼를 사용할 수 있습니다. 사용자 공간 프로세스는/proc 파일을 읽는 것을 막고, 일단 버퍼에서 제거 된 것을 읽으면 차단됩니다. 실제로 klogd/syslogd가/proc 파일을 읽도록 수정 될 수 있는지 살펴볼 수 있으므로 사용자 공간 부분을 구현할 필요가 없습니다.

만약 당신이 더 간단하다면, 접두어가있는 정규화 된 형식으로 정보를 인쇄하고이 접두사를 사용하여 syslog에서 정보를 필터링하면됩니다.

몇 가지 가능성이 있습니다 (예 : netlink를 사용하여 사용자 공간으로 메시지 보내기).하지만 커널에서 파일에 쓰는 것이 좋습니다.

0

오른쪽에있는 카운트를 숨겨두고 의 카운트를 숨기고 /proc/<pid>/의 프로세스 별 파일을 통해 볼 수 있습니다.

관련 문제