일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- Linux
- allocator
- commit
- strex
- page
- fastpath
- mm_struct
- vm_area_struct
- kafka
- vmalloc
- slub
- devicedriver
- slowpath
- slab
- blk-mq
- Android
- multiqueue
- lruvec
- buddy_system
- spinlock
- kmalloc
- Network
- BLOCK
- Apache
- NDK
- memory
- pmap
- 카프카
- Kernel
- proc
- Today
- Total
목록IT/Linux Kernel (22)
Art of Pr0gr4m
1. Hello 모듈 작성 모듈이 초기화 될 때의 엔트리 포인트를 module_init에 등록, 모듈이 제거 될 때의 엔트리 포인트를 module_eixt에 등록 MODULE_LICENSE에 라이센스 기재 이 후 빌드를 위한 Makefile 작성 make 명령으로 빌드 성공 시 hello.ko 커널 오브젝트가 생성됨 insmod로 모듈 삽입, rmmod로 모듈 제거 2. 모듈 참조 작성한 함수를 외부에 커널 심볼로 공개하기 위해서는 EXPORT_SYMBOL 매크로 사용 참고로 커널 영역에서 공개되는 심볼 리스트는 /proc/kallsyms에서 볼 수 있음 심볼 타입은 링크 참고 이 후 Makefile 오브젝트 목록에 callee.o와 caller.o를 추가하여 빌드하면 callee.ko와 caller.k..
1. systemcall table에 시스템콜 추가하기 vi /arch/x86/entry/syscalls/syscall_64.tbl 마지막 라인에 새로운 시스템 콜 추가 548 64 mycall __x64_sys_mycall 549 64 get_cpu_info __x64_sys_get_cpu_info 2. 헤더 파일에 선언 추가하기 vi include/linux/syscalls.h 함수 선언 추가 (편의를 위해 예시에선 syscalls.h 파일 안에 구조체도 함께 정의) struct cpu_info { char vendor_id[16]; char model_id[64]; unsigned int cache_size; }; asmlinkage long sys_mycall(void); asmlinkage lo..