본문 바로가기

프로그래밍./ARM(임베디드)

[s5pc100] proc filesystem 만들어보기. 그림설명.

프록이란게 실습과정을 보면 모듈 프로그램을 작성해서 추가하고
만들어진 proc 파일을 읽으면서 결과를 보는 식인데.

그럼, 그냥 파일에다 쓰고, cat으로 읽는거랑 무슨 차이인가? 싶었다.

그 차이는, 일반적으로 디스크에 글을 썻다가 디스크에서 읽어 들이는 것인데.
프록은 장치파일 이기 때문에 메모리에 내용이 저장되는 셈이다.

메모리에 쓰고 메모리에서 읽어오는 것. 따라서 재부팅하면 날아갈 것이며,
실제로 파일에 쓰는 것이 아니지만, 리눅스에서 개발자나 이해를 돕기 위해서

모든 장치들을 파일형식으로 해서, 파일과 동일한 방식으로 사용할 수 있게 만들었다.

그 편리함이 오히려 약간의 혼돈을 주었던 것.




pro_filesystem 실습을 시작해 보자.


빨간색 박스는 모듈 프로그램시 반드시 있어야 하는 틀이고,
보라색 박스는 내가 만든 함수. 또는 심볼.

무슨소린지 모르겠다면 아래링크를 참조 하자.

[s5pc100] 모듈 만들기 기초. (hello 출력하기). 그림설명.

struct proc_dir_entry 라는 구조체로 entry를 만들고
create_proc_entry() 함수로 내가 지정한 이름으로 프록엔트리 생성.
모두 proc_fs.h 에 정의되어 있다.

이 구조체엔 read_proc 부분이 있는데, 그 곳에 내가 원하는 동작을 하게 하는 함수를 대입.
그러면 프록 파일을 read 했을 때, 해당 함수가 동작한다.

시그널에서 내가 원하는 신호가 들어오면 지정한 함수가 동작하게 했던 것 처럼.


struct proc_dir_entry 구조체

 

vim 검색으로 찾은거라 proc_dir_entry에 색이 다른 것이니, 신경쓰지 마세요 ^^



insmod로 추가 하고 결과 확인.

cat /proc/kstory_Proc [define으로 정의한 파일명.]

프록 파일이 read 되었으므로, read 시 작동하게 설정했던 함수가 동작한다.
Hi, in /proc file system. 출력.(오타가 있다는..- -;;)






rmmod로 삭제 화면.