분류 전체보기 834

[펌] Kernel API 정리

2장 insmod modprobe rmmod 실행 커널로 모듈을 적재하고 제거하는 사용자 영역 유틸리티 #include module_init(init_function); module_exit(cleanup_function); 모듈 초기화 함수와 정리 함수를 지정하는 매크로 #include sleeping관련 함수 변수, 드라이버의 Kernel API대부분의 정의 stuct task_struct *current; 현재 프로세스 current->pid current->comm 현재 프로세스 ID와 명령 이름 obj-m 커널 빌드 시스템이 현재 디렉토리에서 빌드할 모듈을 파악하는데 사용하는 makefile심벌 /sys/module 적재된 모듈 정보를 포함하는 sys 디렉토리 층 /proc/modules 모듈 ..

OS/Linux 2010.05.26

[Android] ADB - Android SDK Tools -

주요 명령 adb devices adb 서버가 인식한 휴대폰과 에뮬레이터 목록을 보여준다. 연결된 devices의 TCP/IP 포트 번호를 알아낼 때 도움이 된다. -s나 -e 옵션은 여러 개의 장치를 연결했을 때 특정한 디바이스를 지정할 때 사용한다. adb shell 타겟 시스템의 쉘에 연결하고 # 프롬프트를 띄운다. 쉘은 간소한 유닉스 쉘 같아서 간단한 명령으로 타겟 시스템을 탐색하고 수정할 수 있다. adb logcat [filter_spec] 로그캣 로그를 타겟 시스템에서 볼 수 있는 명령. 현재까지 축적한 모든 로그를 터미널에 출력하고 시스템이 실행중인 동안 발생하는 추가적인 로그도 계속 출력한다. 이 명령은 주로 맨 뒤에 &를 붙여서 실행하는데, 이 기호를 명령 뒤에 붙이면 유닉스에서처럼 '..

OS/Linux 2010.05.25

work queue

작업 큐 소개 작업 큐는 2.5 버전의 Linux 커널에 추가된 최신 지연 메커니즘이다. 한번에 모든 작업을 처리하는 지연 스키마를 제공하는 태스크릿과는 달리 작업 큐는 작업 큐에 대한 핸들러 함수가 대기 상태에 있을 수 있는(태스크릿 모델에서는 가능하지 않음) 제네릭 지연 메커니즘이다. 작업 큐는 태스크릿보다 높은 지연 시간을 가질 수 있고 더 다양한 작업 지연 API를 포함하고 있다. 지연은 keventd를 통해 태스크 큐에 의해 관리되었지만 이제는 events/X라는 커널 작업자 스레드에 의해 관리된다. 작업 큐는 기능을 하반부로 지연시킬 수 있는 일반적인 방법을 제공한다. 중앙에 있는 작업 큐(struct workqueue_struct)는 작업이 배치되는 구조체이다. 작업은 work_struct ..

OS/Linux 2010.05.24

Ubuntu 설치 버전 확인

Ubuntu의 경우, patch도 많이되고,.. 설치 버전도 많이 틀리다. Ubuntu manual page(http://manpages.ubuntu.com/) 에서도 6개의 버전을 다 표시해준다. (6.06 LTS/ 8.04 LTS / 8.10 / 9.04 / 10.04 LTS ) 설치된 ubuntu 버전은 어떻게 확인할까?? $ uname -a 이걸로는 커널의 버전을 알수 있다. Ubuntu의 버전은 $ cat /etc/issue Ubuntu 10.04 LTS \n \l 위와 같이 표시해 준다. 참고로, ubuntu manual 에서 kqueue의 page는 http://manpages.ubuntu.com/manpages/lucid/en/man2/kqueue.2freebsd.html 요기임.. 휴~ ..

OS/Linux 2010.05.14

Kqueue 관련 함수

kqueue를 사용하려면 밑의 해더를 추가해야 합니다. #include #include #include int kqueue( void ); 설명 : 새로운 kernel event queue를 생성하고 해당 descriptor를 반환한다. 해당 queue는 fork()된 자식이 상속할 수 없다. 하지만 RFFDG 플래그를 쓰지 않고 rfork()를 호출한 경우에는 해당 descriptor table을 공유할 수 있다. 이렇게 해서 두개의 다른 process들이 한 kernel queue를 공유하게 된다. 리턴값 : error가 나면 -1을 리턴하고, errno 를 설정한다. 성공하면 kqueue의 descriptor을 리턴한다. int kevent( int kq, // [in] kqueue() 함수가 반환..

OS/Linux 2010.05.14

kthread - linux kernel 용

kthread를 이용한 thread 생성 test 한 source 샘플 코드가 별로 없어서.. 참조해서 구현 했음 좋겠다. [kthread1.c] #include #include #include #include #include #include struct task_struct *ts; int thread1(void *data) { int count =0; while(1) { count++; printk(KERN_ALERT "Hi!! I am kernel thread1[%d]!\n", count ); msleep(1000); if (kthread_should_stop()) break; } return 0; } int init_module(void) { printk(KERN_INFO "init_module(..

OS/Linux 2010.05.14

Kqueue 예제 - Echo.c

kqueue를 이용한 예제임. 내가 필요한 소스 이긴 한데.. 이번엔 잘 돌아갈려나..ㅠㅠ 아무튼 참조 하고,, 공부 하자 아자아자..!! /* echo.c - Simple `echo' server for N clients written using kqueue/kevent. */ #include #include #include #include #include #include #include #include #include #include #include #include #include #include typedef struct in_addr in_addr; typedef struct sockaddr_in sockaddr_in; typedef struct servent servent; typedef str..

OS/Linux 2010.05.14