티스토리 뷰
동적으로 major number를 할당하고 device node를 생성하는 script~
#!/bin/sh
module="scull"
device="scull"
mode="664"
# 스크립트로 전달한 모든 argument를 가지고 insmod를 호출한다.
/sbin/insmod -f ./$module.o $* || exit 1
# 기존에 존재하던 node를 제거한다.
rm -f /dev/${device}[0-3]
# /proc/devices 파일로 부터 major number를 읽어온다.
major=`awk "\\$2==\*$module\" {print \\$1}" /proc/devices`
# sed를 사용한 예제.
# major=`sed -ne "/$module/s/ *\(.*\) *$module/\1/p" /proc/devices`
mknod /dev/${device}0 c $major 0
mknod /dev/${device}1 c $major 1
mknod /dev/${device}2 c $major 2
mknod /dev/${device}3 c $major 3
group="staff"
grep '^staff:' /etc/group > /dev/null || group="wheel"
chgrp $group /dev/${device}[0-3]
chmod $mode /dev/${device}[0-3]
동적으로 major number를 할당받는 device driver 예제
result = register_chrdev( scull_major, "scull", &scull_fops);
if( result < 0)
{
printk( KERN_WARNING "scull: can't get major %d\n", scull_major);
return result;
}
if( scull_major == 0)
scull_major = result; /* dynamic */
내용은 KLDP의 KTD님의 글에서 퍼왔습니다.
'Development > Linux' 카테고리의 다른 글
Ubuntu 14.04에 Synergy 설치하여 시작 프로그램에 등록 하기 / 사라진 커서 보이게 하기 (0) | 2015.07.21 |
---|---|
[Linux] Ubuntu 10.10 server 인터넷 연결하기 (0) | 2011.02.07 |
[Linux Driver] 리눅스 Kernel Module 드라이버 샘플 (0) | 2010.10.15 |
리눅스에서 해당하는 함수의 라이브러리 찾기 (0) | 2010.05.17 |
FILE Input/Output System Call Function (0) | 2008.11.27 |
- Total
- Today
- Yesterday
- jni강좌
- API
- db
- Troubleshooting
- java
- driver
- source
- jni
- C++
- 프로그래밍
- NDK
- AWS
- linux
- 안드로이드
- it
- winapi
- C
- MFC
- kering
- gcc
- Visual C++
- 음악
- Python
- android
- Quiz
- database
- 드라이버
- algorithm
- 리눅스
- Cloud
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |