목차 일부
역자 서문 ... 5
저자 서문 ... 14
1장 디바이스 드라이버 소개
디바이스 드라이버 업무 ... 24
커널 구분 ... 27
디바이스와 모듈 클래스 ... 29
보안 문제 ... 32
버전 번호 ... 33
라이선스 조건 ... 35
커널 개발 커뮤니티에 동참하기 ... 36
이 책의 전반적인 흐름 ... ...
더보기
목차 전체
역자 서문 ... 5
저자 서문 ... 14
1장 디바이스 드라이버 소개
디바이스 드라이버 업무 ... 24
커널 구분 ... 27
디바이스와 모듈 클래스 ... 29
보안 문제 ... 32
버전 번호 ... 33
라이선스 조건 ... 35
커널 개발 커뮤니티에 동참하기 ... 36
이 책의 전반적인 흐름 ... 37
2장 모듈 빌드와 실행
테스트 시스템 설정 ... 39
Hello World 모듈 ... 40
커널 모듈 대 응용 프로그램 ... 43
컴파일과 적재 ... 48
커널 심벌 테이블 ... 54
사전 지식 ... 56
초기화와 종료 ... 57
모듈 매개 변수 ... 63
사용자 영역에서 작업하기 ... 65
빠른 참조 ... 67
3장 문자 드라이버
scull 설계 ... 72
주 번호와 부 번호 ... 73
몇몇 중요한 자료 구조체 ... 79
문자 디바이스 등록 ... 87
open과 release ... 90
scull의 메모리 사용법 ... 93
read와 write ... 97
새 디바이스 다루기 ... 105
빠른 참조 ... 105
4장 디버깅 기술
커널이 지원하는 디버깅 옵션 ... 109
출력을 통한 디버깅 ... 112
질의를 통한 디버깅 ... 121
관찰을 통한 디버깅 ... 131
시스템 폴트 디버깅 ... 134
디버거와 관련 도구 ... 141
5장 동시성과 경쟁 상태
scull에 존재하는 함정 ... 150
동시성과 동시성 관리 ... 151
세마포어와 뮤텍스 ... 152
완료 ... 159
스핀락(spinlocks) ... 161
잠금 시 피해야 할 함정 ... 167
잠금 대안 ... 169
빠른 참조 ... 177
6장 고급 문자 디바이스 연산
ioctl ... 184
차단I/O ... 198
poll과 select ... 215
비동기식 통지 ... 222
디바이스 탐색 ... 226
디바이스 파일 접근 제어 ... 227
빠른 참조 ... 235
7장 시간, 지연, 작업 연기
시간 경과 측정하기 ... 239
현재 시각 알기 ... 245
실행 지연하기 ... 248
커널 타이머 ... 255
태스크릿 ... 262
작업 큐 ... 265
빠른 참조 ... 269
8장 메모리 할당
kmalloc에 얽힌 진짜 이야기 ... 275
색인 캐시 ... 280
get_free_page와 관련 함수 ... 285
vmalloc와 관련 함수 ... 289
CPU별 변수 ... 293
대형 버퍼 얻기 ... 296
빠른 참조 ... 297
9장 하드웨어와 통신하기
I/O 포트와 I/O 메모리 ... 304
I/O 포트 사용하기 ... 308
I/O 포트 예제 ... 315
I/O 메모리 사용하기 ... 319
빠른 참조 ... 326
10장 인터럽트 처리하기
병렬 포트 준비하기 ... 332
인터럽트 처리기 설치하기 ... 333
처리기 구현하기 ... 345
상반부와 하반부 ... 352
인터럽트 공유하기 ... 356
인터럽트 구동 I / O ... 360
빠른 참조 ... 365
11장 커널 자료형
표준 C 타입 활용 ... 370
자료 항목 크기를 명시적으로 할당하기 ... 371
인터페이스에 종속적인 타입 ... 373
기타 이식성 문제 ... 374
연결 리스트 ... 379
빠른 참조 ... 383
12장 PCI 드라이버
PCI 인터페이스 ... 388
돌아온 탕아: ISA ... 408
PC/104와 PC/104+ ... 411
다른 PC 버스 ... 412
S버스(SBus) ... 414
누버스(NuBus) ... 415
외부 버스 ... 416
빠른 참조 ... 416
13장 USB 드라이버
USB 디바이스 기본 ... 422
USB와 Sysfs ... 426
USB urb(USB 요청 블록) ... 429
USB 드라이버 작성하기 ... 442
urb 없이 USB 전송하기 ... 455
빠른 참조 ... 460
14장 리눅스 디바이스 모델
Kobject, Kset, 하위시스템 ... 466
저수준 sysfs 연산 ... 475
핫플러그 사건 생성 ... 480
버스, 디바이스, 드라이버 ... 482
클래스 ... 495
하나로 합치기 ... 500
핫플러그 ... 507
펌웨어 다루기 ... 516
빠른 참조 ... 519
15장 메모리 사상과 DMA
리눅스에서 메모리 관리 ... 526
mmap 디바이스 연산 ... 537
직접 I/O 수행하기 ... 552
직접 메모리 접근(DMA) ... 559
빠른 참조 ... 582
16장 블록 드라이버
등록 ... 590
블록 디바이스 연산 ... 597
요청 처리하기 ... 602
다른 몇몇 세부 사항 ... 623
빠른 참조 ... 626
17장 네트워크 드라이버
snull 설계 방법 ... 633
커널에 접속하기 ... 637
net_device 구조체 세부 내역 ... 642
열고 닫기 ... 653
패킷 전송 ... 655
패킷 수신 ... 661
인터럽트 처리기 ... 664
수신 인터럽트 완화 ... 666
연결 상태 변경 ... 669
소켓 버퍼 ... 670
MAC 주소 결정 ... 674
전용 ioctl 명령 ... 677
통계 정보 ... 679
멀티캐스트 ... 680
기타 사항 ... 684
빠른 참조 ... 686
18장 TTY 드라이버
자그마한 TTY 드라이버 ... 694
tty_driver 함수 포인터 ... 701
TTY 터미널 전송 제어 규칙 ... 708
ioctls ... 714
tty 디바이스를 다루는 proc과 sysfs ... 717
tty_driver 구조체 자세히 살펴보기 ... 719
tty_operations 구조체 자세히 살펴보기 ... 721
tty_struct 구조체 자세히 살펴보기 ... 723
빠른 참조 ... 725
소스코드 디렉토리 구조 ... 729
참고문헌 ... 731
찾아보기 ... 737
더보기 닫기