!  å


  • | Ʈ
 󼼺
ڵ ˾ƺ ARM  Ŀ


SMART
 

ڵ ˾ƺ ARM Ŀ

<뼭>,<>,<>,<ۿ>,<>,<> /<â> |

Ⱓ
2020-06-03
PDF
뷮
27 M
PC
Ȳ
1, 0, 0
 Ұ
ټ

 Ұ

2Ⱓ ڵ м, 1Ⱓ ʷ 뼺 ARM Ŀ м!
Ŀ ڵ м Ѵ!
Ŀ ڵ м ǿ ħ!
å ڵ 3Ⱓ Ŀ м ڷḦ ʵǾ.  å ٷ ʾҴ , ӱ ˾ƺҴ 뿡 öϰ Լ 帧 󰡸 мϰ ִ. ̷ ڵ line by line м̶ ºν ̷м ڵ鿡 谨 Ȱ ̴.
̷м ޸ ARM Ŀ ٷ ִ å Ŀΰ ARM Ȯ ֵ ڵ м dz ׸ Ͽ, ڴ å ֱ Ǵ ֽ Ŀ м ִ ȿ ڿ ̴.
å Ŀ ۿ ϰ ־ Ŀ Ŀ ҽ ڵ带 мغ ϴ ڿ ϴ. ڵ带 мغ ;µ ظ ǥ θ ô , ñϼ̴ , OS Ŀ 񸻶Ͻô , ̷ ڵ鿡 å ұݰ 簡 DZ⸦ ٶ.
å ٷ ֿ .
- Ŀ ҽ ý
- ARM μ
- ȿ м ȯ
-
- Ŀ м Ǵ API, ARM ɾ, GAS Ű
- ͷƮ ߻ ڵ鷯 ȣDZ ڼ

PART I ARM Ŀ - Ŀ м  غ ʿұ?
Chapter 1 Ŀο Ұ ׸ 2.6 3.2 002
1.1 Ŀ ź ׸ 002
1.1.1 ź 002
1.1.2 پ ý ϴ 븮 Ŀ 003
1.1.3 迡 ü 005
1.2 Ŀ 2.6 3.2 006

Chapter 2 Ŀ ý 008
2.1 Ŀ ʱȭ 008
2.2 Ŀ 009
2.3 Ŀ 011
2.4 Ŀ ġ 019

Chapter 3 ARM μ ˾ƺ 021
3.1 μ Ư¡ 021
3.2 μ Űó ھ 022
3.3 μ 023
3.4 μ 024
3.5 μ 026
3.6 μ ͼ 028
3.7 ϵ Ȯ 030
3.7.1 ij 030
3.7.2 ޸ ġ 031
3.7.3 μ 031

Chapter 4 м ȯ ϱ 032
4.1 Ŀ ҽ ٿεϿ ġϱ 032
4.1.1 Ŀ ҽ ٿεϱ 032
4.1.2 ҽ ġϱ 034
4.2 ctags + cscope ġϱ 035
4.2.1 ctags ҽ ڵ ± 035
4.2.2 cscope ± ͺ̽ 037
4.3 vim ÷ ٿε ȯ漳 038
4.3.1 vim ÷ ٿεϱ 039
4.3.2 vim + plugin ȯ汸 043
4.3.3 vim ȯ漳ϱ 044
4.4 ҽ м ȯ ѷ 047

PART II Ŀ - start_kernel  ȣɱ?
Chapter 5 Ŀ غϱ 056
5.1 Ʈδ ̾ ù ŸƮ - start ̺ 057
5.2 BSS ʱȭϱ - not_relocated ̺ 059
5.3 ij Ȱȭϱ - cache_on ̺ 062
5.4 ͸ Ʈ ʱȭϱ - _ _setup_mmu ̺ 065
5.5 I-Cache Ȱȭ ij å ϱ - _ _common_mmu_cache_on ̺ 069

Chapter 6 Ŀ ̹ zImageκ Ŀ ̹ ϱ 070
6.1  ʰ Ŀ Ǯ - wont_overwrite, decompress_kernel ̺ 071
6.2 Ŀ ȣϱ - call_kernel ̺ 072
6.3 ijŬ ÷ - cache_clean_flush ̺ 073
6.4 ij Ȱȭϱ - cache_off ̺ 075

Chapter 7 start_kernel() ȣϱ 076
7.1 ʱȭ ϱ - stext ̺ 076
7.2 μ ã - _ _look_processor_type 081
7.2.1 _ _lookup_processor_type ̺ 081
7.2.2 _ _proc_info_begin _ _proc_info_end 083
7.2.3 MMU Ȱȭ ¿ ּҸ ּҷ ϱ 085
7.2.4 proc_info_list ü ã μ ϱ 087
7.3 ӽ Ÿ ã - _ _lookup_machine_type 088
7.3.1 _ _lookup_machine_type ̺ 088
7.3.2 _ _arch_info_begin _ _arch_info_end machine_desc 090
7.3.3 machine_desc ü ã ӽ ϱ 091
7.4 Ʈδ atags - _ _vet_atags ̺ 092
7.5 ޸𸮸 ϱ ϱ - _ _create_page_table ̺ 095
7.6 ھ - v6_setup ̺ 101
7.7 MMU Ѱ ּ ϱ - _ _enable_mmu / _ _turn_mmu_on ̺ 102
7.8 start_kernel - _ _mmap_switched ̺ 107

PART III Ŀ - Ŀ ۰ ΰ?
Chapter 8 smp_setup_processor_id() ~ lock_kernel() 112
8.1 smp_setup_processor_id(), lockdep_init(), debug_objects_early_init() 113
8.1.1 smp_setup_processor_id() 113
8.1.2 lockdep_init() 113
8.1.3 debug_objects_early_init() 115
8.2 ÷ο ϱ - boot_init_stack_canary() 117
8.3 μ ׷ȭϴ ϴ cgroup ʱȭϱ ? cgroup_init_early() 118
8.3.1 cgroupfs_root cgroup ʱȭϱ - init_cgroup_root() 123
8.3.2 ý ʱȭϱ - cgroup_init_subsys() 123
8.4 irq Ȱȭϱ - local_irq_disable() 125
8.5 early_boot_irqs_off(), early_init_irq_lock_class() 125
8.6 Ŀ - lock_kernel() 127

Chapter 9 Ŭ ̺Ʈ ڵ鷯 ϱ 134
9.1 Լ - tick_init() 134
9.2 ̺Ʈ ó ڵ鷯 ϱ - clockevents_register_notifier() 136
9.2.1 clockevents_lock ɱ 137
9.2.2 clockevents_chain Ǵ 139
9.2.3 clockevents_chain tick_notifier ϴ 140
9.2.4 clockevents_lock ϴ 142

Chapter 10 CPU Ʈʿ CPU ϰ HIGHMEM ʱȭ 144
10.1 ÷ ִ Ʈʿ init_task ϴ CPU ߰ϱ - boot_cpu_init() 144
10.2 ޸ ϱ - page_address_init() 146

Chapter 11 ü ϱ - setup_arch() 149

Chapter 12 unwind_init() ~ early_trap_init() 152
12.1 ϱ - unwind_init() 152
12.2 ӽ ִ machine_desc ü ϱ - setup_machine() 153
12.3 ATAG óϱ ? setup_arch() 154
12.4 Ķ óϱ - parse_cmdline() 156
12.5 ҽ Ʈ ϱ - request_standard_resources() 158
12.6 cpu possible Ʈ ʱȭϱ - smp_init_cpus() 164
12.7 ARM 帶 ֱ - cpu_init() 165
12.8 ͼ ڵ鸵 ʱȭϱ - early_trap_init() 167
12.9 ͷƮ ڵ鷯 Լ 캸 174
12.9.1 IRQ ڵ鷯 ȣϱ - asm_do_IRQ() 177
12.9.2 ͷƮ ư - ret_to_user ̺ 179

Chapter 13 μ ¾ϱ ? setup_processor() 181
13.1 setup_processor() ˾ƺ 181
13.2 CPU ID ã - read_cpuid_id() 183
13.3 μ ã - lookup_processor_type() 184
13.4 μ Űó ã - cpu_architecture() 185
13.5 μ ij Ÿ ã - cacheid_init() 189
13.6 μ ʱȭ Լ ȣϱ - cpu_proc_init() 193

Chapter 14 ޸ ¡ غϱ - paging_init() 196
14.1 paging_init() ü 캸 196
14.2 ޸ Ÿ ̺ ֱ - build_mem_type_table() 198
14.3 ޸ ϱ ? sanity_check_meminfo() 201
14.4 ̺ غϱ - prepare_page_table() 203
14.4.1 prepare_page_table() 203
14.4.2 ¡ 205
14.4.3 ͸ Ʈ ϱ 206
14.4.4 pmd_clear() 208
14.5 ̽ غϱ - devicemaps_init() 210
14.6 ޸ غϱ - kmap_init() 215
14.7 ʱȭϱ 216
14.7.1 ޸ Ҵϱ - _ _ alloc_bootmem_nopanic() 217
14.7.2 忡 fallback Ͽ ޸ Ҵޱ - alloc_bootmem_core() 218
14.7.3 ּҸ page ü ȯϱ - virt_to_page() 220
14.8 D-Cache ϰ ϱ ? flush_dcache_page() 221

Chapter 15 Ʈ Ÿ ޸ Ҵ ʱȭϱ - bootmem_init() 223
15.1 bootmem Լ 帧 ڷᱸ 224
15.2 bootmem_init() ˾ƺ 229
15.3 ũ ġ ã - check_initrd() 230
15.4 ũ ͸ ݿϱ - bootmem_init_node() 231
15.4.1 map_memory_bank() 233
15.4.2 bootmem_bootmap_pages() 236
15.4.3 find_bootmap_pfn() 238
15.4.4 node_set_online() 239
15.4.5 NODE_DATA() ũ 240
15.4.6 init_bootmem_node() 242
15.4.7 free_bootmem_node() 244
15.4.8 reserve_bootmem_node() 245
15.5 0 ܽŰ - reserve_node_zero() 246
15.6 ũ ܽŰ - bootmem_reserve_initrd() 248
15.7 ٰ ϱ - bootmem_free_node() 248
15.8 free_area ʱȭ 251
15.8.1 free_area ü 251
15.8.2 free_area_init_node() 253
15.8.3 free_area_init_core() 254
15.8.4 init_currently_empty_zone() 256
15.8.5 memmap_init() 257

Chapter 16 mm_init_owner() ~ preempt_disable() 264
16.1 ޸ ϱ ? mm_init_owner() 264
16.2 ɾ صα ? setup_command_line() 265
16.3 per-cpu ʱȭϱ - setup_per_cpu_areas() 266
16.4 CPU ϱ - setup_nr_cpu_ids() 269
16.5 SMP μ ϱ - smp_prepare_boot_cpu() 270
16.6 ٷ ϱ ڷᱸ ʱȭϱ ? sched_init() 272
16.6.1 ׷ ٸ Ǵ task_group sched_entity ü runqueue ü ޸ Ҵ 273
16.6.2 root_domain, rt_bandwidth, task_group ڷᱸ ʱȭ 276
16.6.3 ý possible cpu ť ʱȭ 278
16.6.4 ½ũ ٸ ʱȭ ε뷱 ͷƮ ڵ鷯 280
16.7 Ŀ ϱ ? preempt_enable()/preempt_disable() 281

Chapter 17 Ŀ ϱ 283
17.1 build_all_zonelists() ٷ ڷᱸ 283
17.2 build_all_zonelists() ˾ƺ 285
17.3 Ʈ ϱ - set_zonelist_order() 287
17.4 Ʈ Ʈ ϱ - _ _build_all_zonelists() 290
17.4.1 build_zonelists() 291
17.4.2 build_zonelists_in_node_order() 293
17.4.3 build_zonelists_in_zone_order() 296
17.4.4 build_thisnode_zonelists() 297
17.4.5 build_zonelist_cache() 297
17.5 Ʈ ϱ - mminit_verify_zonelist() 299
17.6 Ҵ û ó ϱ - cpuset_init_current_mems_allowed() 300
17.7 ϱ - nr_free_pagecache_pages() 300
17.8 Ƽ 304

Chapter 18 page_alloc_init() ~ pidhash_init() 308
18.1 ÷ CPU page óϱ - page_alloc_init() 309
18.2 console Ķ óϱ - parse_early_param() 311
18.3 Ư Ķ óϱ - parse_args() 313
18.4 ͷƮ Ȱȭ Ȯϱ - irqs_disabled() 317
18.5 Ŀ ̺ ϱ - sort_main_extable() 318
18.6 RCU Ŀ ʱȭϱ - rcu_init() 320
18.7 IRQ ϱ غϱ - early_irq_init() 323
18.8 ͷƮ ʱȭϱ - init_IRQ() 328
18.9 μ ã ? pidhash_init() 331

Chapter 19 init_timers() ~ page_cgroup_init() 333
19.1 Ÿ̸ ʱȭϱ ? init_timers() 334
19.1.1 timer_cpu_notify() 335
19.1.2 register_cpu_notifier() 336
19.1.3 open_softirq() 337
19.2 High Resolution Ÿ̸ ʱȭϱ ? hrtimers_init() 338
19.3 softirq ݹ Լ ϱ - softirq_init() 341
19.4 xtime ϱ - timekeeping_init() 345
19.5 ϵ Ÿ̸ ʱȭϱ - time_init() 348
19.6 clock Ÿ ʱȭϱ - sched_clock_init() 350
19.7 CPU ͷƮ Ȱȭϱ - local_irq_enable() 352
19.8 Ʈ Ͻý Ǵ init ũ ˻ϱ 353
19.9 ޸ Ҵ ʱȭ ۾ϱ - vmalloc_init() 353
19.10 Ʈ ̳ ijÿ ʱȭ ̸ ϱ - vfs_caches_init_early() 355
19.11 cpuset ý ʱȭϱ - cpuset_init_early() 358
19.12 memory ý ʱȭϱ - page_cgroup_init() 360

Chapter 20 bootmem Ҵڸ ϰ ý ü 363
20.1 mem_init() Լ ȣ ڷᱸ 363
20.2 mem_init() ˾ƺ 364
20.3 ʴ ޸ Ʈʿ ϱ - free_unused_memmap_node() 366
20.4 Ϲ ý ̰ϱ - free_all_bootmem_node() 368
20.4.1 register_page_bootmem_info_node() 368
20.4.2 free_all_bootmem_core() 370
20.4.3 _ _free_pages_bootmem() 372
20.4.4 _ _free_pages() 376
20.4.5 free_hot_cold_page() 376
20.4.6 _ _free_pages_ok() 378
20.5 ޸ ý ̰ϱ - free_area() 383

Chapter 21 CPU ÷ ʱȭ 385
21.1 cpu_hotplug ʱȭϱ - cpu_hotplug_init() 385
21.2 CPU ¶ ó 386

Chapter 22 ޸ Ҵ Ȱȭϱ - kmem_cache_init() 389
22.1 Ҵ ü 389
22.2 Ҵ ߿ ü - kmem_cache kmem_list3 391
22.3 kmem_cache_init() ˾ƺ 394
22.4 initkmem_list3[ ], cache_cache.nodelists[ ] ʱȭ 399
22.5 kmem_list3 迭 ϰ cache ҽð ϱ - set_up_list3s() 401
22.6 cache Ȯ ҿ ϱ - cache_estimate() 402
22.7 malloc_sizes cache_names 406
22.8 cache ϱ - kmem_cache_create() 408
22.8.1 kmem_cache_zalloc() 410
22.8.2 calculate_slab_order() 411
22.8.3 setup_cpu_cache() 412
22.8.4 enable_cpucache() 414
22.9 arraycache_init, kmem_list3 cache 414
22.10 Ҵ ޸𸮸 kmalloc() Ҵ ޸𸮷 üϱ 417

Chapter 23 kmem_trace_init() ~ security_init() 420
23.1 ID allocator ij ϱ ? idr_init_cache() 421
23.2 pageset ʱȭϱ - setup_per_cpu_pageset() 421
23.3 ͸ ϱ - numa_policy_init() 427
23.4 Ÿ̸ ʱȭ ϱ - late_time_init() 431
23.5 BogoMIPS ϱ - calibrate_delay() 431
23.6 μ ĺ(ID) Ҵ Ʈ - pidmap_init() 433
23.7 켱 Ʈ ڷᱸ ʱȭϱ - prio_tree_init() 435
23.8 anon_vma ij ϱ - anon_vma_init() 435
23.9 ü ں ڰ οϱ ? cred_init() 437
23.10 fork() ְ ڷᱸ ʱȭϱ - fork_init() 438
23.11 μ ij ʱȭϱ - proc_caches_init() 439
23.12 ij ʱȭϱ - buffer_init() 442
23.13 Ű غϱ ? key_init() 445

Chapter 24 VFS Ǵ پ ijõ ʱȭϱ - vfs_caches_init() 449

Chapter 25 radix_tree_init() ~ ftrace_init() 468
25.1 Ʈ õ ڷᱸ ʱȭϱ - radix_tree_init() 469
25.2 ñ׳ غϱ ? signals_init() 470
25.3 proc Ͻý ϰ Ʈϱ - proc_root_init() 471
25.4 ʱȭ ý ϱ - cgroup_init() 472
25.5 top_cpuset 缳ϰ cpuset Ͻý ϱ - cpuset_init() 474
25.6 ½ũ ̽ ʱȭϱ - taskstats_init_early() 475
25.7 غ - delayacct_init() 477
25.7.1 ī 477
25.7.2 dealyacct_init() 477
25.7.3 task_delay_info ü delayacct_tsk_init() 478
25.8 ϰ ˻ϱ - check_bugs() 481

Chapter 26 ޸𸮿 ŷ ũϱ - Ʈ 483
26.1 Ʈ Ŀ 484
26.2 Ʈ Ȱȭϱ - pdflush_init() 485
26.3 pdflush 487
26.4 Ʈ Լ ϱ - pdflush_operation() 489
26.5  ֱ Ʈ, Ʈ ݹ Լ ȣdz? 490
26.5.1 ֱ Ʈ Լ - wb_kupdate() 490
26.5.2 Ʈ Լ - background_writeout() 493
26.6 ֱ Ʈ ʱȭϱ - page_writeback_init() 494

Chapter 27 Ŀ Լ ˾ƺ - rest_init() 496

Chapter 28 Լ Ŀ ϱ - kernel_thread() 499
28.1 kernel_thread() ˾ƺ 499
28.2 μ ϴ Ʈ - do_fork() 500
28.3 θ μ ϱ - copy_process() 504

Chapter 29 ½ũ 514
29.1 wake_up_new_task() ˾ƺ 514
29.2 ½ũ ť - task_rq_lock() 517
29.3 ½ũ 켱 ϱ - effective_prio() 518

Chapter 30 Ŀ غϱ - kernel_init() 522
30.1 μ ٸ CPU ֽŰ - sched_init_smp() 523
30.2 ý ʱȭ ϱ - do_basic_setup() 526
30.2.1 rcu_sched_grace_period() ϱ - rcu_init_sched() 527
30.2.2 events ũ ť ϱ - init_workqueues() 528
30.2.3 cpuset ý top_cpuset ʱȭϱ - cpuset_init_smp() 535
30.2.4 khelper ũ ť ϱ - usermodehelper_init() 536
30.2.5 ̽ ʱȭϱ - driver_init() 538
30.2.6 irq proc Ͻýۿ ϱ - init_irq_proc() 548
30.2.7 Ŀ 𸣴 ý ȣϱ - do_initcalls() 549
30.3 ʱȭ غϱ ? init_post() 554

Chapter 31 Ŀ 556
31.1 Ŀ - kthreadd() 556
31.2 ñ׳ ϱ - ignore_signals() 559
31.3 ̽ ϱ - set_user_nice() 562
31.4 ½ũ ų CPU ã - set_cpus_allowed_ptr() 567
31.5 Ʈ ϰ ִ ü ġ ã - list_entry() 569
31.6 Ŀ ϱ - create_kthread() 572

Chapter 32 find_task_by_pid_ns() ~ cpu_idle() 575
32.1 PID ½ũ ã - find_task_by_pid_ns() 576
32.2 BKL ϱ - unlock_kernel() 579
32.3 ٸ Ŭ idle ϱ - init_idle_bootup_task() 580
32.4 RCU Ŀ ȰȭǾ ˸ - rcu_scheduler_starting() 580
32.5 Ŀ Ȱȭϱ - preempt_enable_no_resched() 581
32.6 μ ٸ ϱ - schedule() 582
32.6.1 schedule() ¥ ˸ - _ _schedule() 582
32.7 - cpu_idle() 584

Appendix A , gas Ű 588
A.1 ARM ɾ ⺻ 588
A.1.1 б ɾ 588
A.1.2 ɾ 588
A.1.3 ɾ 588
A.1.4 ɾ 589
A.1.5 ɾ 589
A.1.6 ɾ 589
A.1.7 μ ɾ 590
A.1.8 Ÿ ɾ 591
A.2 Ǻ 591
A.3 gas þ 592

Appendix B Ŀ м API 594
B.1 Ʈ 594
B.2 Ʈ API 595

Appendix C ˾ƺ ext2 Ͻý 596
C.1 Ÿ : inode 596
C.2 i_mode ʵ带 ̷ Ʈ 597
C.3 ͸ ִ ʵ - i_block[] 598
C.4 ũ Ǵ 600
C.4.1 Ƽ 600
C.4.2 Block Group 601
C.4.3 Inode Table 603
C.4.4 ͸, , Inode Table, Data Block 604

Appendix D 608
D.1 608
D.2 609

Appendix E Ŀ ũƮ 612
E.1 ARM Ŀ ũƮ 613
E.2 Ŀ ũƮ 615

Appendix F ڵ Ʈ 623

Appendix G ׸ Ʈ 632

Appendix H ˾ƺô! Ʈ 639

ãƺ 642

ټ

  • 10
  • 8
  • 6
  • 4
  • 2

(ѱ 300̳)
侲
Ʈ
 ۼ ۼ õ
4
rUIOUh https:buyzudena.web.fc2.com 2021-01-27 0
6
WjJTqN https:beeg.x.fc2.com 2021-01-27 0