2007년 9월 3일 월요일

Linux Device Driver(시스템콜, 모듈 ,디바이스 파일)

- 시스템콜 -
--linux kernel 2.4

/linux/arch/i386/kernel/entry.S에 시스템 콜이 정의되어있다.
/linux/include/asm-i386/unistd.h에 시스템 콜을 추가 시킨다.
편집창의 시스템콜이 정의된 부분의 마지막 부분에 아래 문구를 추가하여서 시스템 콜을 추가한다.
#define __NR_newsystemcall (마지막 번호)

--linux kernel 2.6
/linux/arch/i386/kernel/Syscall_table.S에 시스템 콜이 정의되어 있다.
--------------------------------------
시스템콜 참고 서적 |
커널 프로그래밍 -교학사- |
--------------------------------------

커널 심볼 테이블에 등록 되지 않은 심볼은 커널에 올라와 있지 않다.
/]# vim /proc/kallsyms
/]# vim /linux/system.map
ex>
주소 T(t) 심볼명
c0400000 T _text

- 모듈
모듈의 사용 이유
- 효율적인 자원 사용, 작업시간의 단축
모듈은 커널의 부팅됭어 동작 중에도 삽입 제거가 가능하게 하는 방법이다.
모듈은 MMU가 있는 CPU 에서만 지원

- 디바이스 파일
- 리눅스는 모든 하드웨어를 파일로 추상화
- 장치 파일은 일반파일과는 다르게 시스템 또는 하드웨어 정보를 제공
- 디바이스 타입 정보 ( 문자(c) , 블록(b), 네트워크)
- 주번호 (집합화 되는 디바이스의 집합 이름 or 번호
- 부번호 (실질적인 각각의 하드웨어를 구분하기 위한 번호)

댓글 없음: