[컴][os] /proc file system

리눅스 / linux proc / proc file

/proc file system

/proc file system 은 kernel 또는 kernel module 이 다른 process 에게 정보를 알려주기 위해 만들어졌다.[ref. 1, 2]

여기서는 ref. 2 의 source code 를 가지고 설명하려 한다.

우리는 create_proc_entry 함수를 호출해서, 내가 원하는 파일을 /proc 에 만들 수 있다.

만약 자신이 kernel module 을 만들었으면, module 의 시작점에 create_proc_entry 를 호출해서 /proc 에 자신의 process 이름을 만들어 놓으면 된다. 여기서는 그 이름을 helloworld 라고 하자.

그러면 다른 process 가 이 /proc/helloworld 를 read 할 수 있다. 간단하게 cat /proc/helloworld 를 할 수 있다. 마치 file 처럼.

단순한 file 이라면, 그냥 그 file 의 내용을 보여줄 것이다. 그런데 이것은 file 은 아니다. 그래서 어떤 내용을 보여줘야 할 지 정해줘야 한다. 즉, read 라는 command 가 올 때 어떤 동작을 하라고 지정해 줘야 한다. 그것을 ->read_proc 라는 변수에 지정해 주게 된다.(아래 code 참고)

// from ref. 2


int
procfile_read(char *buffer,
          char **buffer_location,
          off_t offset, int buffer_length, int *eof, void *data)
{
    ...
}

int init_module()
{
  ...
  Our_Proc_File = create_proc_entry("helloworld", 0644, NULL);
  ...
  Our_Proc_File->read_proc = procfile_read;

Reference

  1. Using proc For Input - Linux Kernel Programming - Halo Linux Services
  2. The /proc File System

댓글 없음:

댓글 쓰기