没有合适的资源?快使用搜索试试~ 我知道了~
首页Linux内核API详解
Linux内核API详解
需积分: 10 6 下载量 112 浏览量
更新于2024-07-24
收藏 4.81MB PDF 举报
"Linux内核API文档"
Linux内核API是开发Linux内核模块或驱动程序时所依赖的一系列函数、数据结构和接口。这份807页的文档详细介绍了如何与Linux内核进行交互,涵盖了从驱动程序的基本构建块到高级并发控制机制的各种主题。
1. 驱动基础 (Driver Basics)
在Linux内核中,驱动程序是操作系统与硬件设备之间的桥梁。驱动程序的基本功能包括初始化(entry)和退出(exit)操作。`module_init`和`module_exit`宏分别用于指定驱动程序的加载和卸载时执行的函数。当驱动被插入系统时,`module_init`定义的函数会被调用,而在移除驱动时,`module_exit`定义的函数执行清理工作。
2. 原子操作和指针操作 (Atomic and pointer manipulation)
在多线程环境中,原子操作确保了对变量的访问不会被中断。例如,`atomic_read`用于无锁地读取一个原子变量的值,而`atomic_set`则用于设置原子变量的值。其他原子操作如`atomic_add`和`atomic_sub`用于增加或减少原子变量的值,而`atomic_sub_and_test`、`atomic_inc_and_test`等则结合了操作和条件测试,用于在执行操作后检查结果。
3. 自旋锁和信号量 (Spinlocks and Semaphores)
自旋锁是用于保护短生命周期临界区的一种机制,持有自旋锁的线程会一直忙等待直到锁释放。信号量则提供了更复杂的功能,允许线程在无法获取锁时挂起,等到条件满足后再继续执行。
4. 内存管理 (Memory Management)
Linux内核提供了一系列内存管理函数,如动态内存分配的`kmalloc`和释放内存的`kfree`。此外,还有针对连续内存分配的`vmalloc`和物理地址映射的`ioremap`等。
5. I/O子系统 (I/O Subsystem)
Linux内核支持多种I/O模型,包括中断处理、底半部(bottom halves)、任务队列和异步I/O。驱动开发者需要理解和利用这些机制来有效地处理设备事件。
6. 设备模型 (Device Model)
现代Linux内核使用统一的设备模型,它管理设备树、设备节点和驱动程序的匹配。`device_register`和`device_unregister`等函数用于设备的注册和注销。
7. 总线和控制器 (Buses and Controllers)
总线和控制器抽象层帮助内核管理和驱动各种硬件总线上的设备,如PCI、USB等。
8. 调度器 (Scheduler)
Linux内核的调度器负责决定哪个进程应该获得CPU时间片。它涉及到了调度策略(如实时调度、公平调度等)和调度类的实现。
9. 文件系统 (File Systems)
内核提供了对多种文件系统的支持,包括EXT4、XFS、Btrfs等。文件系统相关的API允许驱动程序和内核组件与文件系统进行交互。
10. 进程间通信 (Inter-Process Communication, IPC)
内核提供了多种IPC机制,如信号、消息队列、共享内存和管道,用于进程间的通信。
11. 网络子系统 (Network Subsystem)
网络子系统处理网络协议栈,包括网络接口层、传输层(TCP、UDP等)和应用层协议。
以上只是Linux内核API文档中的一部分内容,完整的文档还包括关于中断处理、定时器、内存页管理、故障处理、系统调用等更多高级主题。通过深入学习这些API,开发者可以更好地理解和定制Linux内核,以适应特定的硬件需求或优化性能。
pci_dev_put .......................................................................................................................... 493
pci_remove_bus_device........................................................................................................ 494
pci_remove_behind_bridge .................................................................................................. 495
pci_osc_support_set ............................................................................................................. 496
pci_osc_control_set.............................................................................................................. 496
pci_enable_msi..................................................................................................................... 497
pci_enable_msix................................................................................................................... 498
pci_bus_alloc_resource ........................................................................................................ 499
pci_bus_add_device.............................................................................................................. 500
pci_bus_add_devices............................................................................................................ 501
pci_scan_slot ........................................................................................................................ 502
pci_map_rom........................................................................................................................ 502
pci_map_rom_copy.............................................................................................................. 503
pci_unmap_rom.................................................................................................................... 504
pci_remove_rom................................................................................................................... 505
13.5. PCI Hotplug Support Library................................................................................................ 505
pci_hp_register ..................................................................................................................... 506
pci_hp_deregister.................................................................................................................. 506
pci_hp_change_slot_info...................................................................................................... 507
13.6. MCA Architecture................................................................................................................. 508
13.6.1. MCA Device Functions............................................................................................ 508
13.6.2. MCA Bus DMA ....................................................................................................... 508
14. The Device File System.................................................................................................................... 515
devfs_mk_dir.................................................................................................................................. 515
15. The Filesystem for Exporting Kernel Objects............................................................................... 516
sysfs_create_file............................................................................................................................. 516
sysfs_update_file............................................................................................................................ 516
sysfs_chmod_file............................................................................................................................ 517
sysfs_remove_file........................................................................................................................... 518
sysfs_create_link............................................................................................................................ 518
sysfs_remove_link.......................................................................................................................... 519
sysfs_create_bin_file...................................................................................................................... 520
sysfs_remove_bin_file.................................................................................................................... 520
16. Security Framework
........................................................................................................................ 522
register_security............................................................................................................................. 522
unregister_security......................................................................................................................... 522
mod_reg_security........................................................................................................................... 523
mod_unreg_security....................................................................................................................... 524
17. Power Management ......................................................................................................................... 526
pm_register..................................................................................................................................... 526
pm_unregister_all........................................................................................................................... 526
pm_send_all ................................................................................................................................... 527
xvi
18. Device drivers infrastructure.......................................................................................................... 529
18.1. Device Drivers Base.............................................................................................................. 529
driver_for_each_device ........................................................................................................ 529
driver_find_device................................................................................................................ 530
driver_create_file.................................................................................................................. 530
driver_remove_file................................................................................................................ 531
get_driver.............................................................................................................................. 532
put_driver.............................................................................................................................. 532
driver_register....................................................................................................................... 533
driver_unregister................................................................................................................... 534
driver_find ............................................................................................................................ 534
device_create_file................................................................................................................. 535
device_remove_file............................................................................................................... 536
device_initialize.................................................................................................................... 537
device_add............................................................................................................................ 537
device_register...................................................................................................................... 538
get_device............................................................................................................................. 539
put_device............................................................................................................................. 540
device_del............................................................................................................................. 540
device_unregister.................................................................................................................. 541
device_for_each_child.......................................................................................................... 542
request_firmware.................................................................................................................. 543
release_firmware................................................................................................................... 544
register_firmware.................................................................................................................. 544
request_firmware_nowait ..................................................................................................... 545
transport_class_register........................................................................................................ 546
transport_class_unregister.................................................................................................... 547
anon_transport_class_register .............................................................................................. 548
anon_transport_class_unregister .......................................................................................... 549
transport_setup_device......................................................................................................... 550
transport_add_device............................................................................................................ 551
transport_configure_device .................................................................................................. 551
transport_remove_device...................................................................................................... 552
transport_destroy_device......................................................................................................
553
dma_pool_create................................................................................................................... 554
dma_pool_destroy ................................................................................................................ 556
dma_pool_alloc .................................................................................................................... 556
dma_pool_free...................................................................................................................... 557
sysdev_driver_register.......................................................................................................... 558
sysdev_driver_unregister...................................................................................................... 559
sysdev_register ..................................................................................................................... 560
platform_get_resource.......................................................................................................... 560
platform_get_irq................................................................................................................... 561
platform_get_resource_byname ........................................................................................... 562
platform_get_irq_byname .................................................................................................... 562
platform_add_devices........................................................................................................... 563
platform_device_put............................................................................................................. 564
platform_device_alloc.......................................................................................................... 564
xvii
platform_device_add_resources ........................................................................................... 565
platform_device_add_data.................................................................................................... 566
platform_device_add............................................................................................................ 567
platform_device_del............................................................................................................. 568
platform_device_register...................................................................................................... 568
platform_device_unregister.................................................................................................. 569
platform_device_register_simple ......................................................................................... 570
platform_driver_register....................................................................................................... 571
platform_driver_unregister................................................................................................... 571
bus_for_each_dev................................................................................................................. 572
bus_find_device.................................................................................................................... 573
bus_for_each_drv ................................................................................................................. 574
bus_add_device..................................................................................................................... 575
bus_remove_device .............................................................................................................. 576
bus_rescan_devices............................................................................................................... 576
device_reprobe...................................................................................................................... 577
find_bus ................................................................................................................................ 578
bus_register........................................................................................................................... 579
bus_unregister....................................................................................................................... 579
18.2. Device Drivers Power Management...................................................................................... 580
device_pm_set_parent.......................................................................................................... 580
device_resume...................................................................................................................... 581
device_power_up.................................................................................................................. 582
device_suspend..................................................................................................................... 582
device_power_down............................................................................................................. 583
18.3. Device Drivers ACPI Support ............................................................................................... 584
acpi_bus_register_driver....................................................................................................... 584
acpi_bus_unregister_driver................................................................................................... 585
setup_sys_fs_device_files..................................................................................................... 586
acpi_bus_match.................................................................................................................... 586
acpi_bus_driver_init ............................................................................................................. 587
acpi_bus_find_driver ............................................................................................................ 588
18.4. Device drivers PnP support ................................................................................................... 588
pnp_register_protocol........................................................................................................... 589
pnp_unregister_protocol....................................................................................................... 589
pnp_remove_device.............................................................................................................. 590
pnp_add_card_id .................................................................................................................. 590
pnp_add_card ....................................................................................................................... 591
pnp_remove_card ................................................................................................................. 592
pnp_add_card_device ........................................................................................................... 592
pnp_remove_card_device..................................................................................................... 593
pnp_request_card_device ..................................................................................................... 593
pnp_release_card_device...................................................................................................... 594
pnp_register_card_driver...................................................................................................... 595
pnp_unregister_card_driver.................................................................................................. 595
pnp_add_id ........................................................................................................................... 596
pnp_init_resource_table ....................................................................................................... 597
pnp_manual_config_dev....................................................................................................... 597
xviii
pnp_auto_config_dev............................................................................................................ 598
pnp_start_dev........................................................................................................................ 599
pnp_stop_dev........................................................................................................................ 599
pnp_activate_dev.................................................................................................................. 600
pnp_disable_dev................................................................................................................... 601
pnp_resource_change ........................................................................................................... 601
pnp_is_active........................................................................................................................ 602
19. Block Devices.................................................................................................................................... 604
blk_get_backing_dev_info............................................................................................................. 604
blk_queue_prep_rq......................................................................................................................... 604
blk_queue_merge_bvec.................................................................................................................. 605
blk_queue_make_request............................................................................................................... 606
blk_queue_ordered......................................................................................................................... 607
blk_queue_issue_flush_fn.............................................................................................................. 608
blk_queue_bounce_limit................................................................................................................ 609
blk_queue_max_sectors................................................................................................................. 610
blk_queue_max_phys_segments.................................................................................................... 610
blk_queue_max_hw_segments ...................................................................................................... 611
blk_queue_max_segment_size....................................................................................................... 612
blk_queue_hardsect_size ............................................................................................................... 613
blk_queue_stack_limits.................................................................................................................. 613
blk_queue_segment_boundary....................................................................................................... 614
blk_queue_dma_alignment............................................................................................................ 615
blk_queue_find_tag........................................................................................................................ 615
blk_queue_free_tags ...................................................................................................................... 616
blk_queue_init_tags ....................................................................................................................... 617
blk_queue_resize_tags ................................................................................................................... 618
blk_queue_end_tag ........................................................................................................................ 618
blk_queue_start_tag ....................................................................................................................... 619
blk_queue_invalidate_tags............................................................................................................. 620
generic_unplug_device .................................................................................................................. 621
blk_start_queue.............................................................................................................................. 622
blk_stop_queue .............................................................................................................................. 623
blk_sync_queue
.............................................................................................................................. 623
blk_run_queue................................................................................................................................ 624
blk_init_queue................................................................................................................................ 625
blk_requeue_request ...................................................................................................................... 626
blk_insert_request.......................................................................................................................... 627
blk_rq_map_user............................................................................................................................ 628
blk_rq_map_user_iov..................................................................................................................... 629
blk_rq_unmap_user........................................................................................................................ 630
blk_rq_map_kern ........................................................................................................................... 631
blk_execute_rq_nowait .................................................................................................................. 632
blk_execute_rq............................................................................................................................... 633
blkdev_issue_flush......................................................................................................................... 634
blk_end_sync_rq............................................................................................................................ 635
blk_congestion_wait ...................................................................................................................... 635
xix
generic_make_request.................................................................................................................... 636
submit_bio...................................................................................................................................... 637
end_that_request_first.................................................................................................................... 638
end_that_request_chunk................................................................................................................. 639
blk_complete_request .................................................................................................................... 640
20. Miscellaneous Devices ..................................................................................................................... 641
misc_register.................................................................................................................................. 641
misc_deregister .............................................................................................................................. 641
21. Video4Linux ..................................................................................................................................... 643
video_register_device..................................................................................................................... 643
video_unregister_device................................................................................................................. 644
22. Sound Devices................................................................................................................................... 645
snd_printk....................................................................................................................................... 645
snd_printd....................................................................................................................................... 645
snd_assert....................................................................................................................................... 646
snd_printdd..................................................................................................................................... 647
register_sound_special_device....................................................................................................... 648
register_sound_mixer..................................................................................................................... 649
register_sound_midi....................................................................................................................... 649
register_sound_dsp......................................................................................................................... 650
register_sound_synth...................................................................................................................... 651
unregister_sound_special............................................................................................................... 652
unregister_sound_mixer................................................................................................................. 653
unregister_sound_midi................................................................................................................... 653
unregister_sound_dsp..................................................................................................................... 654
unregister_sound_synth.................................................................................................................. 655
snd_pcm_playback_ready.............................................................................................................. 655
snd_pcm_capture_ready................................................................................................................. 656
snd_pcm_playback_data................................................................................................................ 657
snd_pcm_playback_empty............................................................................................................. 658
snd_pcm_capture_empty ............................................................................................................... 658
snd_pcm_format_cpu_endian........................................................................................................ 659
snd_pcm_new_stream.................................................................................................................... 660
snd_pcm_new................................................................................................................................. 661
snd_device_new ............................................................................................................................. 662
snd_device_free.............................................................................................................................. 663
snd_device_register........................................................................................................................ 664
snd_iprintf...................................................................................................................................... 665
snd_info_get_line........................................................................................................................... 666
snd_info_get_str............................................................................................................................. 666
snd_info_create_module_entry...................................................................................................... 667
snd_info_create_card_entry........................................................................................................... 668
snd_card_proc_new........................................................................................................................ 669
snd_info_free_entry ....................................................................................................................... 670
snd_info_register............................................................................................................................ 671
snd_info_unregister........................................................................................................................ 672
snd_rawmidi_receive ..................................................................................................................... 672
xx
剩余806页未读,继续阅读
2009-07-12 上传
2023-12-04 上传
2023-11-13 上传
2023-06-13 上传
2024-01-04 上传
yanxuex
- 粉丝: 2
- 资源: 3
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 新型智能电加热器:触摸感应与自动温控技术
- 社区物流信息管理系统的毕业设计实现
- VB门诊管理系统设计与实现(附论文与源代码)
- 剪叉式高空作业平台稳定性研究与创新设计
- DAMA CDGA考试必备:真题模拟及章节重点解析
- TaskExplorer:全新升级的系统监控与任务管理工具
- 新型碎纸机进纸间隙调整技术解析
- 有腿移动机器人动作教学与技术存储介质的研究
- 基于遗传算法优化的RBF神经网络分析工具
- Visual Basic入门教程完整版PDF下载
- 海洋岸滩保洁与垃圾清运服务招标文件公示
- 触摸屏测量仪器与粘度测定方法
- PSO多目标优化问题求解代码详解
- 有机硅组合物及差异剥离纸或膜技术分析
- Win10快速关机技巧:去除关机阻止功能
- 创新打印机设计:速释打印头与压纸辊安装拆卸便捷性
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功