《Linux内核API完全参考手册》PDF下载

  • 购买积分:19 如何计算积分?
  • 作  者:邱铁,周玉,邓莹莹编著
  • 出 版 社:北京:机械工业出版社
  • 出版年份:2011
  • ISBN:9787111323570
  • 页数:684 页
图书介绍:Linux作为源码开放的操作系统,在计算机与嵌入式设备中广泛应用,因此对Linux内核开发与编程变得越来越重要了。本书以最新的Linux内核版本2.6.30为依据,对常用的内核API作了系统分析、归纳,设计典型实例,并对开发场景进行详细讲解。分析的内核API模块包括:模块机制内核API、进程管理内核API、进程调度内核API、中断与异常机制内核API、时间与定时机制内核API、内存管理内核API、内核同步机制API、文件系统内核API和设备驱动与设备管理模块内核API。本书立足Linux内核API分析,深入实践。读者可以在较低起点下进行高效的内核分析与编程实践。本书可作为高等院校计算机、电子、信息类大学生及研究生进行Linux操作系统学习和编程的教材或参考书,也可作为Linux开发人员和广大的Linux爱好者编程开发的参考用书。

第1章 Linux内核API分析必备知识 1

Linux内核编程注意事项 1

本书中模块编译Makefile模板 1

内核调试函数printk 2

内核编译与定制 4

温馨提示 10

参考文献 11

第2章 Linux内核模块机制API 12

函数:_module_address() 12

函数:_module_ref_addr() 14

函数:_module_text_address() 16

函数:_print_symbol() 18

函数:_symbol_get() 20

函数:_symbol_put() 22

函数:find_module() 24

函数:find_symbol() 27

函数:module_is_live() 30

函数:module_put() 32

函数:module_refcount() 34

函数:sprint_symbol() 36

函数:symbol_put_addr() 38

函数:try_module_get() 40

函数:use_module() 42

参考文献 44

第3章 Linux进程管理内核API 45

函数:_task_pid_nr_ns() 45

函数:find_get_pid() 47

函数:find_pid_ns() 49

函数:find_task_by_pid_ns() 51

函数:find_task_by_pid_type_ns() 53

函数:find_task_by_vpid() 55

函数:find_vpid() 57

函数:get_pid() 59

函数:get_task_mm() 60

函数:is_container_init() 63

函数:kernel_thread() 65

函数:mmput() 67

函数:ns_of_pid() 69

函数:pid_nr() 71

函数:pid_task() 73

函数:pid_vnr() 75

函数:put_pid() 77

函数:task_active_pid_ns() 79

函数:task_tgid_nr_ns() 81

参考文献 83

第4章 Linux进程调度内核API 84

函数:_wake_up() 84

函数:_wake_up_sync() 87

函数:_wake_up_sync_key() 89

函数:abort_exclusive_wait() 91

函数:add_preempt_count() 95

函数:add_wait_queue() 97

函数:add_wait_queue_exclusive() 100

函数:autoremove_wake_function() 102

函数:complete() 106

函数:complete_all() 108

函数:complete_done() 111

函数:current_thread_info() 113

函数:default_wake_function() 115

函数:do_exit() 118

函数:finish_wait() 120

函数:init_waitqueue_entry() 123

函数:init_waitqueue_head() 125

函数:interruptible_sleep_on() 127

函数:interruptible_sleep_on_timeout() 130

函数:preempt_notifier_register() 133

函数:preempt_notifier_unregister() 136

函数:prepare_to_wait() 139

函数:prepare_to_wait_exclusive() 142

函数:remove_wait_queue() 146

函数:sched_setscheduler() 149

函数:set_cpus_allowed_ptr() 152

函数:set_user_nice() 155

函数:sleep_on() 158

函数:sleep_on_timeout() 160

函数:sub_preempt_count() 162

函数:task_nice() 164

函数:try_wait_for_completion() 166

函数:wait_for_completion() 169

函数:wait_for_completion_interruptible() 172

函数:wait_for_completion_interruptible_timeout() 175

函数:wait_for_completion_killable() 179

函数:wait_for_completion_timeout() 182

函数:wake_up_process() 184

函数:yield() 187

参考文献 188

第5章 Linux中断机制内核API 189

函数:_set_irq_handler() 189

函数:_tasklet_hi_schedule() 191

函数:_tasklet_schedule() 194

函数:disable_irq() 196

函数:disable_irq_nosync() 196

函数:disable_irq_wake() 198

函数:enable_irq() 201

函数:enable_irq_wake() 203

函数:free_irq() 205

函数:kstat_irqs_cpu() 207

函数:remove_irq() 209

函数:request_irq() 213

函数:request_threaded_irq() 216

函数:set_irq_chained_handler() 219

函数:set_irq_chip() 221

函数:set_irq_chip_data() 225

函数:set_irq_data() 227

函数:set_irq_handler() 229

函数:set_irq_type() 232

函数:set_irq_wake() 234

函数:setup_irq() 237

函数:tasklet_disable() 239

函数:tasklet_disable_nosync() 241

函数:tasklet_enable() 243

函数:tasklet_hi_enable() 244

函数:tasklet_hi_schedule() 246

函数:tasklet_init() 248

函数:tasklet_kill() 250

函数:tasklet_shedule() 252

函数:tasklet_trylock() 254

函数:tasklet_unlock() 255

参考文献 257

第6章 Linux内存管理内核API 258

函数:_free_pages() 258

函数:_get_free_pages() 258

函数:_get_vm_area() 260

函数:_krealloc() 262

函数:alloc_pages() 265

函数:alloc_pages_exact() 268

函数:alloc_vm_area() 270

函数:do_brk() 272

函数:do_mmap() 273

函数:do_mmap_pgoff() 276

函数:do_munmap() 279

函数:find_vma() 281

函数:find_vma_intersection() 284

函数:free_pages() 286

函数:free_pages_exact() 287

函数:free_vm_area() 288

函数:get_unmapped_area() 288

函数:get_user_pages() 290

函数:get_user_pages_fast() 292

函数:get_vm_area_size() 294

函数:get_zeroed_page() 295

函数:kcalloc() 297

函数:kfree() 299

函数:kmalloc() 299

函数:kmap_high() 301

函数:kmem_cache_alloc() 303

函数:kmem_cache_create() 305

函数:kmem_cache_destroy() 308

函数:kmem_cache_free() 308

函数:kmem_cache_zalloc() 309

函数:kmemdup() 311

函数:krealloc() 313

函数:ksize() 315

函数:kstrdup() 318

函数:kstrndup() 319

函数:kunmap_high() 321

函数:kzalloc() 321

函数:memdup_user() 323

函数:mempool_alloc() 325

函数:mempool_alloc_pages() 327

函数:mempool_alloc_slab() 329

函数:mempool_create() 331

函数:mempool_create_kzalloc_pool() 333

函数:mempool_destroy() 334

函数:mempool_free() 335

函数:mempool_free_pages() 335

函数:mempool_free_slab() 336

函数:mempool_kfree() 336

函数:mempool_kmalloc() 337

函数:mempool_kzalloc() 339

函数:mempool_resize() 341

函数:nr_free_buffer_pages() 343

宏:page_address() 345

宏:page_cache_get() 346

宏:page_cache_release() 348

函数:page_zone() 349

宏:probe_kernel_address() 352

函数:probe_kernel_read() 354

函数:probe_kernel_write() 355

函数:vfree() 357

函数:vma_pages() 358

函数:vmalloc() 359

函数:vmalloc_to_page() 361

函数:vmalloc_to_pfn() 363

函数:vmalloc_user() 365

参考文献 366

第7章 Linux内核定时机制API 368

函数:_round_jiffies() 368

函数:_round_jiffies_relative() 369

函数:_round_jiffies_up() 371

函数:_round_jiffies_up_relative() 373

函数:_timecompare_update() 375

函数:add_timer() 377

函数:current_kernel_time() 378

函数:del_timer() 380

函数:del_timer_sync() 382

函数:do_gettimeofday() 384

函数:do_settimeofday() 386

函数:get_seconds() 388

函数:getnstimeofday() 390

函数:init_timer() 391

函数:init_timer_deferrable() 393

函数:init_timer_deferrable_key() 395

函数:init_timer_key() 398

函数:init_timer_on_stack() 400

函数:init_timer_on_stack_key() 402

函数:mktime() 404

函数:mod_timer() 406

函数:mod_timer_pending() 408

函数:ns_to_timespec() 410

函数:ns_to_timeval() 412

函数:round_jiffies() 414

函数:round_jiffies_relative() 416

函数:round_jiffies_up() 418

函数:round_jiffies_up_relative() 420

函数:set_normalized_timespec() 422

函数:setup_timer() 424

函数:setup_timer_key() 426

函数:setup_timer_on_stack() 428

函数:setup_timer_on_stack_key() 430

函数:timecompare_offset() 432

函数:timecompare_transform() 435

函数:timecompare_update() 436

函数:timer_pending() 439

函数:timespec_add_ns() 441

函数:timespec_compare() 442

函数:timespec_equal() 444

函数:timespec_sub() 446

函数:timespec_to_ns() 448

函数:timeval_compare() 450

函数:timeval_to_ns() 452

函数:try_to_del_timer_sync() 453

参考文献 456

第8章 Linux内核同步机制API 457

函数:atomic_add() 457

函数:atomic_add_negative() 458

函数:atomic_add_return() 460

函数:atomic_add_unless() 461

宏:atomic_cmpxchg() 463

函数:atomic_dec() 464

函数:atomic_dec_and_test() 466

函数:atomic_inc() 467

函数:atomic_inc_and_test() 469

宏:atomic_read() 470

宏:atomic_set() 471

函数:atomic_sub() 472

函数:atomic_sub_and_test() 474

函数:atomic_sub_return() 475

函数:down() 477

函数:down_interruptible() 479

函数:down_killable() 481

函数:down_read() 483

函数:down_read_trylock() 485

函数:down_timeout() 487

函数:down_trylock() 489

函数:down_write() 491

函数:down_write_trylock() 492

函数:downgrade_write() 494

宏:init_rwsem() 496

宏:read_lock() 498

函数:read_seqbegin() 499

函数:read_seqretry() 500

宏:read_trylock() 503

宏:read_unlock() 504

宏:rwlock_init() 505

函数:sema_init() 508

宏:seqlock_init() 509

宏:spin_can_lock() 511

宏:spin_lock() 513

宏:spin_lock_bh() 514

宏:spin_lock_init() 516

宏:spin_lock_irq() 518

宏:spin_lock_irqsave() 520

宏:spin_trylock() 522

宏:spin_unlock() 525

宏:spin_unlock_bh() 526

宏:spin_unlock_irq() 526

宏:spin_unlock_irqrestore() 527

宏:spin_unlock_wait() 527

函数:up() 529

函数:up_read() 531

函数:up_write() 532

宏:write_lock() 532

函数:write_seqlock() 534

函数:write_sequnlock() 534

宏:write_trylock() 535

宏:write_unlock() 537

参考文献 537

第9章 Linux文件系统内核API 539

函数:_mnt_is_readonly() 539

函数:current_umask() 541

函数:d_alloc() 542

函数:d_alloc_root() 544

函数:d_delete() 547

函数:d_find_alias() 547

函数:d_invalidate() 549

函数:d_move() 550

函数:d_validate() 551

函数:dput() 553

函数:fget() 554

函数:find_inode_number() 557

函数:generic_fillattr() 559

函数:get_empty_filp() 561

函数:get_fs_type() 563

函数:get_max_files() 565

函数:get_super() 566

函数:get_unused_fd() 569

函数:have_submounts() 570

函数:I_BDEV() 572

函数:iget_locked() 573

函数:inode_add_bytes() 575

函数:inode_get_bytes() 576

函数:inode_needs_sync() 578

函数:inode_set_bytes() 580

函数:inode_setattr() 581

函数:inode_sub_bytes() 584

函数:invalidate_inodes() 586

函数:is_bad_inode() 587

函数:make_bad_inode() 588

函数:may_umount() 590

函数:may_umount_tree() 591

函数:mnt_pin() 593

函数:mnt_unpin() 594

函数:mnt_want_write() 596

函数:new_inode() 596

函数:notify_change() 598

函数:put_unused_fd() 600

函数:register_filesystem() 602

函数:unregister_filesystem() 604

函数:unshare_fs_struct() 604

函数:vfs_fstat() 606

函数:vfs_getattr() 608

函数:vfs_statfs() 610

参考文献 613

第10章 Linux设备驱动及设备管理API 614

函数:_class_create() 614

函数:_class_register() 615

函数:cdev_add() 616

函数:cdev_alloc() 617

函数:cdev_del() 619

函数:cdev_init() 624

宏:class_create() 628

函数:class_destroy() 629

宏:class_register() 631

函数:class_unregister() 632

函数:device_add() 637

函数:device_create() 638

函数:device_del() 640

函数:device_destroy() 640

函数:device_initialize() 646

函数:device_register() 652

函数:device_rename() 652

函数:device_unregister() 657

函数:get_device() 663

函数:put_device() 663

函数:register_chrdev() 667

函数:register_keyboard_notifier() 668

函数:unregister_chrdev() 669

函数:unregister_keyboard_notifier() 675

部分相关函数说明 679

参考文献 679

附录 Linux内核API快速检索表 680