FSTWikiRev. 1.7 KernelApi
Login:
Password:
Join
E D R S I H P RSS
FrontPage|FindPage|TitleIndex|RecentChanges

Kernel API #

-- 김도집 2005-09-22 14:20:31

Contents

1 Kernel API 1 - Core (1/2)
1.1 서론
1.2 기본 자료형
1.3 주요 헤더 파일들
1.4 비트 연산
1.4.1 set_bit
1.4.2 clear_bit
1.4.3 change_bit
1.4.4 test_and_set_bit
1.4.5 test_and_clear_bit
1.4.6 test_and_change_bit
1.4.7 test_bit(nr,p)
1.5 initcall/exitcall
1.6 디바이스 등록 및 해제
1.6.1 struct platform_device
1.6.1.1 to_platform_device
1.6.1.2 platform_device_register
1.6.1.3 platform_device_unregister
1.6.1.4 platform_device_register_simple
1.7 드라이버 등록 및 해제
1.7.1 platform_driver
1.7.1.1 platform_driver_register
1.7.1.2 platform_driver_unregister
1.7.1.3 platform_get_drvdata/platform_set_drvdata
1.7.2 device_driver
1.7.2.1 driver_register
1.7.2.2 driver_unregister
1.7.2.3 dev_set_drvdata
1.7.2.4 dev_get_drvdata
1.8 문자 디바이스 드라이버
1.8.1 어떤 API를 사용할 것인가
1.8.2 chrdevs vs cdev_map
1.8.3 문자 디바이스 드라이버 API
1.8.3.1 struct file_operations
1.8.3.2 register_chrdev
1.8.3.3 unregister_chrdev
1.8.3.4 struct cdev
1.8.3.5 cdev_init
1.8.3.6 cdev_add
1.8.3.7 cdev_del
1.8.3.8 register_chrdev_region
1.8.3.9 alloc_chrdev_region
1.8.3.10 unregister_chrdev_region
1.9 장치 번호
1.9.1 MKDEV
1.9.2 MAJOR
1.9.3 MINOR
1.10 프로세스
1.10.1 스케줄링
1.10.1.1 schedule_timeout
1.10.1.2 set_current_state
1.10.1.3 wait_event_interruptible
1.10.1.4 wake_up_interruptible
1.11 타임(타이머)
1.11.1 ?BogoMIPS
1.11.2 loops_per_jiffy
1.11.3 jiffies
1.11.4 커널 타이머
1.11.4.1 자료 구조
1.11.4.2 TIMER_INITIALIZER
1.11.4.3 init_timer
1.11.4.4 add_timer
1.11.4.5 del_timer
1.11.4.6 mod_timer
1.11.5 High-resolution 커널 타이머
1.11.5.1 hrtimer_init
1.11.5.2 hrtimer_start
1.11.5.3 hrtimer_cacel
1.11.5.4 hrtimer_restart
1.11.5.5 hrtimer_get_remaining
1.11.5.6 hrtimer_get_res
1.11.5.7 hrtimer_active
1.11.5.8 hrtimer_forward
1.11.5.9 hrtimer_nanosleep
1.12 메모리
1.12.1 사용자/커널 공간
1.12.1.1 copy_from_user
1.12.1.2 copy_to_user
1.12.1.3 get_user
1.12.1.4 put_user
1.12.1.5 verify_area
1.12.1.6 access_ok
1.12.2 메모리 매핑
1.12.2.1 remap_page_range
1.12.2.2 remap_pfn_range
1.12.2.3 get_user_pages
1.12.3 IO 메모리 매핑
1.12.3.1 request_mem_region / release_mem_region
1.12.3.2 ioremap
1.12.3.3 iounmap
1.12.3.4 io_remap_pfn_range
1.12.3.5 readb/w/l
1.12.3.6 writeb/w/l
1.12.4 커널 메모리
1.12.4.1 kmalloc
1.12.4.2 kzalloc
1.12.4.3 vmalloc
1.12.4.4 kmem_cache_create
1.12.4.5 kmem_cache_alloc
1.12.4.6 kmem_cache_free
1.12.4.7 kmem_cache_destroy
1.12.4.8 get_zeroed_page
1.12.4.9 __get_free_page
1.12.4.10 __get_free_pages
1.12.5 유용한 매크로
1.13 MMAP
1.13.1 dma_mmap_writecombine
1.13.2 dma_free_writecombine
1.13.3 io_remap_pfn_range
2 DMA
2.1 메모리 할당
2.1.1 dma_alloc_coherent
2.1.2 dma_alloc_writecombine
2.1.3 Streaming DMA
2.1.4 dma_map_single
2.1.5 dma_unmap_single
2.1.6 dma_sync_single_for_cpu
2.1.7 dma_sync_single_for_device
2.2 DMA POOL
2.2.1 dma_pool_create
2.2.2 dma_pool_destroy
2.2.3 dma_pool_alloc
2.2.4 dma_pool_free

1.1 드라이버 등록 및 해제 #

1.1.1 관련 자료형 #

driver_register/device_unregister 함수에서 사용하는 자료형은 <linux/device.h>에 선언되어 있다.
struct device_driver {
  const char *name;
  struct bus_type *bus;

  struct completion unloaded;
  struct kobject kobj;
  struct klist klist_devices;
  struct klist_node knode_bus;

  struct module *owner;

  int (*probe) (struct device *dev);
  int (*remove) (struct device *dev);
  int (*shutdown) (struct device *dev);
  int (*suspend) (struct device *dev, pm_message_t state, u32 level);
  int (*resume) (struct device *dev, u32 level);
};

필드설명
name디바이스 드라이버의 이름을 문자열 형으로 지정한다 (필수)
bus보통은 &platform_bus_type으로 지정한다 (필수)
unloaded
kobj내부적으로 드라이버 객체를 관리하기 위한 것으로 직접적으로 사용하지 않는다 (임의 지정하지 않는다)
klist_devices
knode_bus
owner
probe()디바이스의 초기화 루틴이다 (필수)
remove()디바이스가 제거될 때 호출되는 루틴이다 (필수)
shutdown()
suspend()절전모드로 들어갈 때 호출된다 (필수)
resume()절점모들 빠져나올 때 호출된다 (필수)
/!\위 테이블에서 foo()와 같이 ()가 붙은 필드는 함수(포인터)를 의미한다.

1.1.2 driver_register #

버스를 갖는 드라이버를 등록할 때 사용하는 함수이다. 함수의 원형은 다음과 같다:
int driver_register(struct device_driver *drv);

1.1.3 driver_unregister #

driver_register()를 통해 등록된 드라이버를 해제할 때 사용한다. 함수의 원형은 다음과 같다:
void driver_unregister(struct device_driver *drv)

관련함수: driver_register

last modified 2007-03-11 13:55:12
ShowPage|FindPage|DeletePage|LikePages Valid XHTML 1.0! Valid CSS! powered by MoniWiki
4.0708 sec