Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
298 commits
Select commit Hold shift + click to select a range
6035f36
Update and rename GPF_KERNELなどメモリーalloc.txt to GPF_KERNEL_GFP_DMA_GFP…
seokgh Oct 10, 2020
0c4f105
Create readl_writel等.txt
seokgh Oct 11, 2020
33e1b3b
Update and rename Kernel_Debug_FS to Kernel_DebugFS.txt
seokgh Oct 11, 2020
91e2291
Create WARN_ON_BUG_ON_dump_stack_panic().txt
seokgh Oct 15, 2020
7920319
Create kernel_macros.txt
seokgh Oct 16, 2020
55577af
Update README.md
seokgh Oct 16, 2020
5b480de
Update kernel_macros.txt
seokgh Oct 16, 2020
050e92c
Update kernel_macros.txt
seokgh Oct 16, 2020
e99ae05
Update kernel_macros.txt
seokgh Oct 16, 2020
a5470b5
Update kernel_macros.txt
seokgh Oct 16, 2020
0b21b6e
Update kernel_macros.txt
seokgh Oct 16, 2020
876638e
Update kernel_macros.txt
seokgh Oct 16, 2020
8f1ed0a
Update kernel_macros.txt
seokgh Oct 16, 2020
ccc2a1b
Update kernel_macros.txt
seokgh Oct 16, 2020
4a3ddad
Update kernel_macros.txt
seokgh Oct 16, 2020
5f47c34
Update kernel_macros.txt
seokgh Oct 16, 2020
a65cfbb
Update kernel_macros.txt
seokgh Oct 16, 2020
62230b1
Update kernel_macros.txt
seokgh Oct 16, 2020
1a67dbd
Update kernel_macros.txt
seokgh Oct 16, 2020
19e5eae
Update kernel_macros.txt
seokgh Oct 16, 2020
c0086c4
Delete Freescales_imx6配置IOMUX
seokgh Oct 20, 2020
093c68c
Delete IOMUX_Controller_(IOMUXC)_O多路复用控制器.txt
seokgh Oct 20, 2020
8628c6a
Delete imx6设备树pinctrl解析
seokgh Oct 20, 2020
d3adb68
Delete imx_SoC的IOMUX配置方法.txt
seokgh Oct 20, 2020
78ac814
Delete dts+pinctrl+gpio.txt
seokgh Oct 20, 2020
741dc19
Add files via upload
seokgh Oct 20, 2020
b298c45
Add files via upload
seokgh Oct 20, 2020
e3e9ab2
Update 2_gpio_subsystem.txt
seokgh Oct 21, 2020
dcceec5
Create readme.txt
seokgh Oct 22, 2020
fc53d21
Rename ftracer/readme.txt to ftrace/readme.txt
seokgh Oct 22, 2020
585cacb
Add files via upload
seokgh Oct 22, 2020
6f40bed
Delete readme.txt
seokgh Oct 22, 2020
59a8077
Add files via upload
seokgh Oct 24, 2020
12e7a2c
Update 1.arm割り込み管理.txt
seokgh Oct 24, 2020
2d89b7f
Update 1.arm割り込み管理.txt
seokgh Oct 24, 2020
3e40a1a
Rename 1.arm割り込み管理.txt to 1.arm_and_linux割り込み管理.txt
seokgh Oct 24, 2020
69385d3
Rename Linux割り込み管理 to arm_gic_and_linux割り込み管理.txt
seokgh Oct 24, 2020
711f808
Update arm_gic_and_linux割り込み管理.txt
seokgh Oct 24, 2020
07ee953
Update 1.arm_and_linux割り込み管理.txt
seokgh Oct 24, 2020
c3065ca
Add files via upload
seokgh Oct 25, 2020
f02b84e
Add files via upload
seokgh Nov 2, 2020
1e560f6
Delete 남상규-임베디드 시스템 엔지니어를 위한 리눅스 커널 분석
seokgh Nov 8, 2020
01f3a8c
Delete read
seokgh Nov 8, 2020
91cbee1
Delete Linux时间子系统之五:低分辨率定时器的原理和实现 - DroidPhone的专栏 - 博客频道 - CSDN.pdf
seokgh Nov 8, 2020
67b41e9
Delete Linux时间子系统之四:定时器的引擎:clock_event_device - DroidPhone的专栏 - 博客频道 …
seokgh Nov 8, 2020
d02221f
Delete Linux时间子系统之六:高精度定时器(HRTIMER)的原理和实现 - DroidPhone的专栏 - 博客频道 - CS…
seokgh Nov 8, 2020
5cb7ede
Delete linux内核调度算法(1)
seokgh Nov 8, 2020
919bd4f
Delete linux内核调度算法(2)--CPU时间片如何分配
seokgh Nov 8, 2020
d5dbe78
Delete linux内核调度算法(3)--多核系统的负载均衡
seokgh Nov 8, 2020
802397e
Delete Linux内核调试技术——进程D状态死锁检测-List_linux-亚虎娱乐博客 - 亚虎娱乐.pdf
seokgh Nov 8, 2020
2084cdd
Delete Linux进程调度器的设计--Linux进程的管理与调度(十七) - 嵌入式Linux中文站.pdf
seokgh Nov 8, 2020
4eda9b4
Delete Linux电源管理Run-time PM 详解
seokgh Nov 8, 2020
6385c8a
Delete linux文件系统初始化过程(1)---概述.pdf
seokgh Nov 8, 2020
0d55c45
Delete linux文件系统初始化过程(2)---挂载rootfs文件系统.pdf
seokgh Nov 8, 2020
d88cec4
Add files via upload
seokgh Nov 10, 2020
36d93d6
Update linked_list.txt
seokgh Nov 10, 2020
4a9c550
Update linked_list.txt
seokgh Nov 11, 2020
4514fdc
Update linked_list.txt
seokgh Nov 11, 2020
de3999c
Add files via upload
seokgh Nov 12, 2020
4a14b27
Delete 1.arm_and_linux割り込み管理.txt
seokgh Nov 12, 2020
a673aaa
Update 1.arm_v4_v8_割り込み管理.txt
seokgh Nov 12, 2020
f96a865
Update 1.arm_v4_v8_割り込み管理.txt
seokgh Nov 12, 2020
0588c1f
Update linked_list.txt
seokgh Nov 12, 2020
a175e7a
Update and rename Linux内核中链表的实现与应用 to Linux内核中linked list的实现与应用.txt
seokgh Nov 13, 2020
325d6c3
Update Linux内核中linked list的实现与应用.txt
seokgh Nov 13, 2020
d95b83c
Create dump dtb from sysfs.txt
seokgh Nov 20, 2020
53f838f
Create device_tree_overlay.txt
seokgh Nov 20, 2020
f983dc6
Update device_tree_overlay.txt
seokgh Nov 20, 2020
5e01715
Add files via upload
seokgh Nov 20, 2020
55f334e
Delete devicetree-specification-v0.3(2020).pdf
seokgh Nov 20, 2020
d0757e1
Add files via upload
seokgh Nov 20, 2020
b95b501
Update device_tree_overlay.txt
seokgh Nov 21, 2020
6cba2f6
Rename linked_list.txt to linked_list復習.txt
seokgh Nov 24, 2020
b1b73ed
Create ftrace_sample.sh
seokgh Nov 24, 2020
f4ea0f3
Update ftrace_sample.sh
seokgh Nov 24, 2020
359272a
Update ftrace_sample.sh
seokgh Nov 24, 2020
2b9dee6
Update ftrace_sample.sh
seokgh Nov 24, 2020
1551d7b
Rename ftrace_sample.sh to ftrace_ex.sh
seokgh Nov 24, 2020
a9a751e
Create func_tracer_v1.sh
seokgh Nov 24, 2020
7ac7c46
Add files via upload
seokgh Nov 24, 2020
7878e9f
Update ftrace.txt
seokgh Nov 24, 2020
c2623a2
Delete func_tracer_v1.sh
seokgh Nov 24, 2020
da497ea
Add files via upload
seokgh Nov 26, 2020
6536f7b
Update global_vars.txt
seokgh Nov 26, 2020
150fb48
Create readme.txt
seokgh Nov 27, 2020
af67dc0
Add files via upload
seokgh Nov 27, 2020
8664e15
Delete readme.txt
seokgh Nov 27, 2020
068fe6a
Add files via upload
seokgh Nov 27, 2020
9cee083
Add files via upload
seokgh Nov 27, 2020
16ce212
Create readme.txt
seokgh Nov 29, 2020
2099a92
Update and rename readme.txt to available_filter_functions.txt
seokgh Nov 29, 2020
e33b2aa
Add files via upload
seokgh Nov 29, 2020
ec55a13
Update available_filter_functions.txt
seokgh Nov 29, 2020
89c4d90
Add files via upload
seokgh Nov 29, 2020
3edeb36
Update get_ftrace_log.sh
seokgh Nov 29, 2020
594b48d
Update irq_time_trace.sh
seokgh Nov 29, 2020
0b5fe60
Delete irq_time_ftraceing_log.c
seokgh Nov 29, 2020
070bc65
Add files via upload
seokgh Nov 29, 2020
ca34443
Update global_vars.txt
seokgh Nov 29, 2020
a1173dc
Create user_stack_and_kernel_stack.txt
seokgh Nov 29, 2020
474765a
Update user_stack_and_kernel_stack.txt
seokgh Nov 29, 2020
e5b458e
Update user_stack_and_kernel_stack.txt
seokgh Nov 29, 2020
58d52d4
Update user_stack_and_kernel_stack.txt
seokgh Nov 29, 2020
3b07b96
Update user_stack_and_kernel_stack.txt
seokgh Nov 29, 2020
0a69093
Update user_stack_and_kernel_stack.txt
seokgh Nov 29, 2020
4bb0ee7
Create synchronization.txt
seokgh Dec 1, 2020
2a6f2aa
Add files via upload
seokgh Dec 1, 2020
bbc523f
Delete synchronization.txt
seokgh Dec 1, 2020
be15d24
Delete readme.txt
seokgh Dec 1, 2020
6474590
Add files via upload
seokgh Dec 1, 2020
358498c
Create rangesプロパティー.txt
seokgh Dec 4, 2020
59b0098
Update rangesプロパティー.txt
seokgh Dec 4, 2020
2a65c9a
Update rangesプロパティー.txt
seokgh Dec 4, 2020
ec3a76b
Add files via upload
seokgh Dec 4, 2020
3c8d00e
Create Makefile
seokgh Dec 7, 2020
7e109ad
Add files via upload
seokgh Dec 7, 2020
1c62540
Update wait_queue_test.c
seokgh Dec 7, 2020
513918f
Update wait_queue_test.c
seokgh Dec 7, 2020
c6443c6
Update wait_queue_test.c
seokgh Dec 7, 2020
1f8a0a3
Create ioctl_unlocked_ioctl_compat_ioctl.txt
seokgh Dec 8, 2020
fd451b9
Update 1_pinctrl_subsystem.txt
seokgh Dec 8, 2020
038030b
Update 1_pinctrl_subsystem.txt
seokgh Dec 8, 2020
d620eae
Update 1_pinctrl_subsystem.txt
seokgh Dec 8, 2020
4690ddf
Update 1_pinctrl_subsystem.txt
seokgh Dec 8, 2020
dfeb19b
Update 1_pinctrl_subsystem.txt
seokgh Dec 8, 2020
378bb91
Update 1_pinctrl_subsystem.txt
seokgh Dec 8, 2020
2ead2db
Update 1_pinctrl_subsystem.txt
seokgh Dec 8, 2020
5a16005
Update 2.irq_domain.txt
seokgh Dec 9, 2020
2232050
Update 2.irq_domain.txt
seokgh Dec 9, 2020
d37ff46
Delete irq_desc[]
seokgh Dec 9, 2020
93bca3c
Delete linux_kernel_map.png
seokgh Dec 9, 2020
231cf1d
Update readl_writel等.txt
seokgh Dec 9, 2020
6d9bcf2
Update readl_writel等.txt
seokgh Dec 9, 2020
13345cc
Create dts_node_&_pinctrl_func.txt
seokgh Dec 10, 2020
03aab33
Update dts_node_&_pinctrl_func.txt
seokgh Dec 10, 2020
6563a00
Update dts_node_&_pinctrl_func.txt
seokgh Dec 10, 2020
d92d7a5
Update dts_node_&_pinctrl_func.txt
seokgh Dec 10, 2020
c902714
Rename dts_node_&_pinctrl_func.txt to gpio_node_&_pinctrl_drv.txt
seokgh Dec 10, 2020
40f2f31
Update 1_pinctrl_subsystem.txt
seokgh Dec 10, 2020
8043291
Update 1_pinctrl_subsystem.txt
seokgh Dec 10, 2020
7efbb25
Update 1_pinctrl_subsystem.txt
seokgh Dec 10, 2020
7c79844
Update 1_pinctrl_subsystem.txt
seokgh Dec 10, 2020
4ff7f82
Update 1_pinctrl_subsystem.txt
seokgh Dec 10, 2020
885eaf7
Add files via upload
seokgh Dec 11, 2020
fb2ccd5
Update pinctrl子系统与GPIO子系统.txt
seokgh Dec 11, 2020
7132555
Add files via upload
seokgh Dec 11, 2020
3f999c3
Update device_tree_overlay.txt
seokgh Dec 13, 2020
de5884a
Update 1_pinctrl_subsystem.txt
seokgh Dec 13, 2020
3854651
Delete Linux内核全局变量总结
seokgh Dec 13, 2020
ec85378
Create pinctrl_gpio_range.txt
seokgh Dec 15, 2020
d462ece
Create kbuild_supports_saving_output_files_in_a_separate_directory.txt
seokgh Dec 16, 2020
4ac97ff
Update kbuild_supports_saving_output_files_in_a_separate_directory.txt
seokgh Dec 16, 2020
ea64dec
Update device_tree_overlay.txt
seokgh Dec 17, 2020
bcbe635
Create debugfs_&_pinctrl_subsystem.txt
seokgh Dec 17, 2020
8859406
Rename debugfs_&_pinctrl_subsystem.txt to debugfs_&_pinctrl_subsystem…
seokgh Dec 17, 2020
58c7902
Update device_tree_overlay.txt
seokgh Dec 18, 2020
c8d0f2c
Update device_tree_overlay.txt
seokgh Dec 18, 2020
cb1a346
Update and rename device_tree_overlay.txt to dts_overlay_overrides.txt
seokgh Dec 18, 2020
e290165
Update dts_overlay_overrides.txt
seokgh Dec 18, 2020
e9b0198
Update dts_overlay_overrides.txt
seokgh Dec 18, 2020
0a002d8
Update dts_overlay_overrides.txt
seokgh Dec 18, 2020
c644b50
Add files via upload
seokgh Dec 18, 2020
3265f1b
Update 2_gpio_subsystem.txt
seokgh Dec 22, 2020
4455622
Update 2_gpio_subsystem.txt
seokgh Dec 22, 2020
2a12a5d
Update 2_gpio_subsystem.txt
seokgh Dec 22, 2020
38dc6e9
Update 2_gpio_subsystem.txt
seokgh Dec 22, 2020
cfa5653
Update global_vars.txt
seokgh Dec 25, 2020
368bf18
Add files via upload
seokgh Dec 25, 2020
f89e748
Delete gpiolib_framework.txt
seokgh Dec 25, 2020
b42050b
Add files via upload
seokgh Dec 25, 2020
db9791c
Update ioctl_unlocked_ioctl_compat_ioctl.txt
seokgh Dec 29, 2020
1150257
Update global_vars.txt
seokgh Dec 31, 2020
474e468
Update global_vars.txt
seokgh Jan 5, 2021
09789fe
Create vivi.c
seokgh Jan 9, 2021
cc284fc
Update and rename vivi.c to vivi_v3.4.c
seokgh Jan 9, 2021
4818ab7
Create vivi_v2.6.31
seokgh Jan 9, 2021
aae212e
Rename v4l2分析.c to v4l2分析.txt
seokgh Jan 9, 2021
49ea741
Update dts_overlay_overrides.txt
seokgh Jan 13, 2021
243de98
Create i2c-mux-gpio_driver.txt
seokgh Jan 27, 2021
d9121b6
Delete 1364347685_5840.jpg
seokgh Jan 27, 2021
ff474c8
Create gpio_devicetree.txt
seokgh Jan 31, 2021
91519c6
Update gpio_devicetree.txt
seokgh Jan 31, 2021
3edbf45
Create gpio-mux.txt
seokgh Feb 1, 2021
40be7be
Create of.h
seokgh Feb 1, 2021
f5903bf
Delete wait_queue_test.c
seokgh Feb 1, 2021
672bde4
Delete Makefile
seokgh Feb 1, 2021
3c729f0
Create fs_types(arm64_linux_board).txt
seokgh Feb 5, 2021
2b13790
Rename fs_types(arm64_linux_board).txt to fs_types_and_mount_point(ar…
seokgh Feb 5, 2021
14ae91f
Update fs_types_and_mount_point(arm64_linux_board).txt
seokgh Feb 5, 2021
d560a26
Update fs_types_and_mount_point(arm64_linux_board).txt
seokgh Feb 5, 2021
f0a5ab2
Create Kernel_Memory_Layout_on_ARM_Linux.txt
seokgh Feb 10, 2021
225fb6e
Create Memory_Layout_on_AArch64_Linux.txt
seokgh Feb 10, 2021
7c302ba
Rename Memory_Layout_on_AArch64_Linux.txt to Kernel_Memory_Layout_on_…
seokgh Feb 10, 2021
4389d14
Create procfs_buddyinfo.txt
seokgh Feb 11, 2021
2ae568b
Rename procfs_buddyinfo.txt to procfs_buddyinfo_meminfo.txt
seokgh Feb 11, 2021
7e0dc2a
Update procfs_buddyinfo_meminfo.txt
seokgh Feb 11, 2021
e8068b9
Update procfs_buddyinfo_meminfo.txt
seokgh Feb 11, 2021
a58f67f
Update procfs_buddyinfo_meminfo.txt
seokgh Feb 11, 2021
06fd138
Create Buddyアルゴリズム.txt
seokgh Feb 11, 2021
3bbb37a
Update procfs_buddyinfo_meminfo.txt
seokgh Feb 11, 2021
b322f82
Update procfs_buddyinfo_meminfo.txt
seokgh Feb 11, 2021
154f329
Update procfs_buddyinfo_meminfo.txt
seokgh Feb 11, 2021
be2eb4c
Create readme
seokgh Feb 18, 2021
0c6322a
Add files via upload
seokgh Feb 18, 2021
2754821
Update mmu_cache_sdram.txt
seokgh Feb 18, 2021
60a6f15
Update mmu_cache_sdram.txt
seokgh Feb 18, 2021
b50509e
Delete mmu_cache_sdram
seokgh Feb 18, 2021
d9a478e
Delete readme
seokgh Feb 18, 2021
c725a81
Rename mmu_cache_sdram.txt to mmu_tlb_ttw_cache_sdram.txt
seokgh Feb 18, 2021
dbc5122
Create readme.txt
seokgh Feb 23, 2021
1a43461
Add files via upload
seokgh Feb 23, 2021
20f5885
Delete readme.txt
seokgh Feb 23, 2021
40ac7ec
Delete V4L2文档翻译1
seokgh Feb 23, 2021
64d7fad
Delete V4L2文档翻译10
seokgh Feb 23, 2021
632e39f
Delete V4L2文档翻译11
seokgh Feb 23, 2021
1c50b2f
Delete V4L2文档翻译12
seokgh Feb 23, 2021
fdbd29e
Delete V4L2文档翻译13
seokgh Feb 23, 2021
460229b
Delete V4L2文档翻译2
seokgh Feb 23, 2021
b8c9bd0
Delete V4L2文档翻译3
seokgh Feb 23, 2021
74a0215
Delete V4L2文档翻译4
seokgh Feb 23, 2021
fd5216d
Delete V4L2文档翻译5
seokgh Feb 23, 2021
772059a
Delete V4L2文档翻译6
seokgh Feb 23, 2021
cf2aa3b
Delete V4L2文档翻译7
seokgh Feb 23, 2021
fc44ef0
Delete V4L2文档翻译8
seokgh Feb 23, 2021
0809250
Delete V4L2文档翻译9
seokgh Feb 23, 2021
a7d237d
Delete v4l2_buf在用户空间和内核空间的关系.png
seokgh Feb 23, 2021
d55e306
Delete v4l2-framework.png
seokgh Feb 23, 2021
22d191c
Update Kernel_Memory_Layout_on_ARM_Linux.txt
seokgh Mar 2, 2021
f10567d
Update Kernel_Memory_Layout_on_ARM_Linux.txt
seokgh Mar 3, 2021
76cdf2a
Create pmap_and_procfs_pid_maps.txt
seokgh Mar 3, 2021
73aaa8d
Update pmap_and_procfs_pid_maps.txt
seokgh Mar 3, 2021
dd6e4e8
Create readme.txt
seokgh Mar 5, 2021
f06bd1f
Add files via upload
seokgh Mar 5, 2021
6b67112
Delete readme.txt
seokgh Mar 5, 2021
89c0b7b
Delete v4l2.xlsx
seokgh Mar 5, 2021
d8eb414
Create performance_tools.txt
seokgh Mar 9, 2021
9e53925
Add files via upload
seokgh Mar 9, 2021
c645a2f
Delete 嵌入式LINUX环境下视频采集知识(V4L2)-joryers-ChinaUnix博客.pdf
seokgh May 24, 2022
217db04
Add files via upload
seokgh May 30, 2022
081f40c
Add files via upload
seokgh May 30, 2022
cd47125
Update irq handler, softirq, tasklet
seokgh Jun 10, 2022
6c785e8
Update and rename 启动流程.c to 启动流程_ARMv4.txt
seokgh Jun 10, 2022
2e79db2
Update 启动流程_ARMv4.txt
seokgh Jun 10, 2022
22986bc
Delete character_device_driver
seokgh Jun 10, 2022
1a0de0f
Delete DTO构文png
seokgh Jun 10, 2022
ba8baef
Create process_page_table_VS_kernel_page_table.txt
seokgh Aug 30, 2023
6dabcf3
Delete ALSA/ALSA框架之三:PCM设备的创建
seokgh Oct 6, 2023
ba66bb3
Update and rename gpio_devicetree.txt to gpio_devicetree_및_드라이버에서_사용법…
seokgh Feb 20, 2024
7619f99
Update gpio_devicetree_및_드라이버에서_사용법.txt
seokgh Feb 20, 2024
db9c71e
Update gpio_devicetree_및_드라이버에서_사용법.txt
seokgh Feb 20, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Binary file removed 1364347685_5840.jpg
Binary file not shown.
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
由来自 0xlab 的 Kan-Ru Chen 撰写
该报告涵盖了 Android 启动时间测量、分析、以及提出的一些优化方法、基于休眠的优化技术以及一些潜在的 Andriod 用户空间优化技术。
Binary file not shown.
2 changes: 2 additions & 0 deletions Fast_Boot/ETRI(Korea)/嵌入式 Linux 的快速启动
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
来自韩国 ETRI 的 HoJoon Park 于 2008 年 7 月 在 CELF 3rd Korean Technical Jamboree 做的报告:
解释了用于减少不同阶段启动时间的不同技术
2 changes: 2 additions & 0 deletions Fast_Boot/Free_Electrons/README.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
由 Free Electrons 提供
一则关于启动时间优化技术的演讲稿 – Atmel SAMA5 硬件上的实际实验情况
Binary file added Fast_Boot/Free_Electrons/boot-time-agenda.pdf
Binary file not shown.
Binary file added Fast_Boot/Free_Electrons/boot-time-labs.pdf
Binary file not shown.
Binary file added Fast_Boot/Free_Electrons/boot-time-labs.tar.xz
Binary file not shown.
Binary file added Fast_Boot/Free_Electrons/boot-time-slides.pdf
Binary file not shown.
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
Christopher_Hallinan于2008年在MontaVista视讯会议上做了一个关于如何减少启动时间的报告
File renamed without changes.
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
Andrew Murray 于 2010 年 10 月 28 日 在 ELC Europe 上做的报告:
这个包含一个 1 秒钟启动的针对 SH7724 的 QT Linux 冷启案例研究,也有用户空间函数重排的信息


类似的,关于 1 秒钟启动 OMAP3530EVM 的案例研究:
https://www.slideshare.net/andrewmurraympc/t-iswift-boot
1 change: 1 addition & 0 deletions Fast_Boot/Samsung/README.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
三星的关于数码照相机的可行性(Proof-Of-Acceptability)研究
Binary file not shown.
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
Tim Bird 于 2008 年 11 月 7 日 在 ELC Europe 报告,展示了他当时收集的一些减少启动时间的技巧
6 changes: 6 additions & 0 deletions Fast_Boot/TI/TI_Linux_Android启动时间优化过程
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
TI嵌入式处理器的维基Page也提供了一些信息,描述了Linux/Android启动时间的优化过程:

Linux启动时间优化:
processors.wiki.ti.com/index.php/Optimize_Linux_Boot_Time
Andriod启动时间优化:
processors.wiki.ti.com/index.php/Android_Boot_Time_Optimization
Binary file not shown.
80 changes: 80 additions & 0 deletions GPF_KERNEL_GFP_DMA_GFP_ATOMIC_などメモリーalloc.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,80 @@
物理メモリは、ページ単位(4KBのPage Frame単位)で管理しているが、
カーネル内のデータ構造は、4KBにぴったり嵌らない。

Linux で[ページ単位ではない]単位で、メモリを確保/開放できるには、次の方法がある:
1. kmalloc(), kfree()系
2. スラブ アロケータ(slab allocator)


kmalloc(size_t size, gfp_t flags) 系のapiの引数flagsには、三つの意味がある:
動作修飾子: kernelが、必要なmemoryを、どう配るのか
ZONE修飾子: kernelが、必要なmemoryを、どこから配るのか
TYPE: 何だっけ?

--------------------------------------------------------------------------------
1.kmalloc()の親戚list:
--------------------------------------------------------------------------------
kmalloc(size_t size, gfp_t flags)
//申請したメモリは、物理メモリマッピング領域にあり、物理メモリ上で連続している(なので、仮想メモリも連続している)。
//また、本当の物理メモリアドレスと、固定のoffsetを持つので、変換関係がシンプルである。
//それで、allocする仮想メモリのには、サイズ制限がある: 128KBまで
kfree()

vmalloc() //sleep可能なので、割り込みハンドラーにて、使っては行けない。仮想メモリは連続しているが、物理メモリ上は連続しない。サイズ制限なし。
            //big memory alloc可なので、insmodコマンドで、.ko driverをロードするする時など、ここを使う。
vfree() //sleep可能なので、割り込みハンドラーにて、使っては行けない。

get_zeroed_page() //page単位? 未検証
__get_free_page() //page単位? 未検証
__get_free_pages() //page単位? 未検証

devm_kzalloc() //devが無くなると、そのdevのResourceとして、allocしたメモリも自動でfreeされる
...

--------------------------------------
引数のflag:
--------------------------------------
include/linux/gfp.h にて定義。

#define GFP_ATOMIC (__GFP_HIGH|__GFP_ATOMIC|__GFP_KSWAPD_RECLAIM)
#define GFP_KERNEL (__GFP_RECLAIM | __GFP_IO | __GFP_FS)
#define GFP_KERNEL_ACCOUNT (GFP_KERNEL | __GFP_ACCOUNT)
#define GFP_NOWAIT (__GFP_KSWAPD_RECLAIM)
#define GFP_NOIO (__GFP_RECLAIM)
#define GFP_NOFS (__GFP_RECLAIM | __GFP_IO)
#define GFP_USER (__GFP_RECLAIM | __GFP_IO | __GFP_FS | __GFP_HARDWALL)
#define GFP_DMA __GFP_DMA
#define GFP_DMA32 __GFP_DMA32
#define GFP_HIGHUSER (GFP_USER | __GFP_HIGHMEM)
#define GFP_HIGHUSER_MOVABLE (GFP_HIGHUSER | __GFP_MOVABLE)
#define GFP_TRANSHUGE_LIGHT ((GFP_HIGHUSER_MOVABLE | __GFP_COMP | \
__GFP_NOMEMALLOC | __GFP_NOWARN) & ~__GFP_RECLAIM)
#define GFP_TRANSHUGE (GFP_TRANSHUGE_LIGHT | __GFP_DIRECT_RECLAIM)

/* Convert GFP flags to their corresponding migrate type */
#define GFP_MOVABLE_MASK (__GFP_RECLAIMABLE|__GFP_MOVABLE)
#define GFP_MOVABLE_SHIFT 3

意味:
GFP_ATOMIC   高優先度。スリープ不可。割込みハンドラや下半分(bottom half)で使う。
GFP_NOIO スリープ可、入出力不可。
GFP_NOFS スリープ化、入出力可、ファイル操作不可。ファイルシステムの実装で使う(他のファイルシステムの操作を開始しない)。
GFP_KERNEL カーネルにて、一番よく使うallocの方法。メモリが無い時、スリープ可。
GFP_USER ユーザ空間用のメモリの通常の方法。スリープ可。
GFP_HIGHUSER HIGHMEMゾーンからの割当て。スリープ可。
GFP_DMA DMAゾーンからの割当て。連続した物理メモリalloc。デバイス・ドライバ等が使う。


GPF_KERNELを例として見ると、
#define GFP_KERNEL  (__GFP_WAIT | __GFP_IO | __GFP_FS)
  __GFP_WAIT: メモリpageが足りない時に、sleep可;
  __GFP_IO: DISK IO許可;
  __GFP_FS: FS IO許可;


--------------------------------------------------------------------------------
2.スラブ アロケータ(slab allocator)
--------------------------------------------------------------------------------
slab...


30 changes: 14 additions & 16 deletions Kernel_Debug_FS → Kernel_DebugFS.txt
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
linux内核 DebugFS
linux内核DebugFS

一、简介

Expand All @@ -17,8 +17,7 @@ mount -t debugfs none /sys/kernel/debug
要使用debugfs,首先我们要设置一下配置选项CONFIG_DEBUG_FS,可以在config文件中设置CONFIG_DEBUG_FS=y,也可以通过menuconfig来设置

Kernelhacking --->

[*]Debug Filesystem
[*]Debug Filesystem

并且驱动中使用debugfs需要包含头文件<linux/debugfs.h>,为了在用户态下使用debugfs,必须把它mount到一个目录下

Expand Down Expand Up @@ -49,7 +48,7 @@ debugfs
|--mydebug
|--subdir
c
[cpp] view plain copy


static int c_open(struct inode *inode, struct file *filp)
{
Expand Down Expand Up @@ -102,10 +101,13 @@ debugfs

3)voiddebugfs_remove(structdentry *dentry);
4)voiddebugfs_remove_recursive(structdentry *dentry);

在module_exit中,我们要释放创建的数据
debugfs_remove_recursive(my_debugfs_root);
这个函数可以帮我们逐步移除每个分配的dentry,如果你想要一个个手动移除,也可以直接调用debugfs_remove



2、创建单值文件
1)structdentry *debugfs_create_u8(constchar*name, mode_t mode,structdentry *parent, u8 *value);
debugfs_create_u8("a", 0644, my_debugfs_root, &a);
Expand All @@ -118,7 +120,8 @@ debugfs
2)structdentry *debugfs_create_u16(constchar*name, mode_t mode,structdentry *parent, u16 *value);
3)structdentry *debugfs_create_u32(constchar*name, mode_t mode,structdentry *parent, u32 *value);
4)structdentry *debugfs_create_u64(constchar*name, mode_t mode,structdentry *parent, u64 *value);
其中,后缀为x8、x16、x32的这三个函数是指debugfs中的数据用十六进制表示。
其中,后缀为x8、x16、x32的这三个函数是指debugfs中的数据用十六进制表示。

5)structdentry *debugfs_create_x8(constchar*name, mode_t mode,structdentry *parent, u8 *value);
6)structdentry *debugfs_create_x16(constchar*name, mode_t mode,structdentry *parent, u16 *value);
7)structdentry *debugfs_create_x32(constchar*name, mode_t mode,structdentry *parent, u32 *value);
Expand Down Expand Up @@ -148,18 +151,13 @@ debugfs
structdentry *debugfs_rename(structdentry *old_dir,structdentry *old_dentry,structdentry *new_dir,constchar*new_name);
structdentry *debugfs_create_symlink(constchar*name,structdentry *parent,constchar*target);

以上部分转自:http://www.cnblogs.com/wwang/archive/2011/01/17/1937609.html


三、实例
这个实例虽然简单,但是融合了如何在debugfs目录下创建文件,并给出了文件的操作方法;
也说明了如何创建变量文件,并且用户空间读写这个变量文件相当于是在读写内核空间的这个文件对应的变量
[cpp] view plain copy

// dbgfs.c
/*
* (C) 05-07-2012 Yang Honggang (Joseph), Dslab <eagle.rtlinux@gmail.com>
*/
#include <linux/debugfs.h>
#include <linux/module.h>
#include <linux/mm.h>
Expand Down Expand Up @@ -210,7 +208,7 @@ structdentry *debugfs_create_symlink(constchar*name,structdentry *parent,constch
if (!parent)
return -1;

//在debugfs目录下创建变量名tracing_on,对应内核中的变量tr_on
//在debugfs目录下创建变量名tracing_on,对应内核中的变量tr_on
/* Create a output switch in dbgfs_demon */
sw = debugfs_create_bool("tracing_on", S_IRWXU,parent, &tr_on);
if (!sw)
Expand All @@ -225,8 +223,8 @@ structdentry *debugfs_create_symlink(constchar*name,structdentry *parent,constch
if (!pg)
goto p_out;

//在debugfs目录下创建文件名data,对应的文件操作为fops里面的read和write方法,
//通过read函数中从用户空间传来的buf进行相应的处理。
//在debugfs目录下创建文件名data,对应的文件操作为fops里面的read和write方法,
//通过read函数中从用户空间传来的buf进行相应的处理。
inf = debugfs_create_file("data", S_IRUSR,parent, &mds, &fops);
if (!inf)
goto sw_out;
Expand Down Expand Up @@ -261,10 +259,10 @@ structdentry *debugfs_create_symlink(constchar*name,structdentry *parent,constch
MODULE_LICENSE("GPL");
MODULE_AUTHOR("Yang Honggang (Joseph) <eagle.rtlinux@gmail.com>");

模块会在/sys/kernel/debugfs根目录下创建
此module会在/sys/kernel/debugfs根目录下创建
dbgfs_demon/
|--data
|--tracing_on
|--data
|--tracing_on
函数的操作逻辑是,如果tracing_on的值为Y,那么可以从文件data中读出有用的调试信息,
如果为N,那么读data操作将不会返回任何数据。

1 change: 0 additions & 1 deletion Linux_Kernel_Time_Subsystem/read

This file was deleted.

Binary file not shown.
34 changes: 34 additions & 0 deletions Linux_Performance_Tools/performance_tools.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
-----------------------------------------------------------------------------------------------
user space
-----------------------------------------------------------------------------------------------
ltrace: system libraries
strace: system call interface



-----------------------------------------------------------------------------------------------
kernel space
-----------------------------------------------------------------------------------------------
ftrace:
stap
ktap
ebpf
dtrace:
lttng

pidstat:

socket:
ss:
netstat:


block device:
iostat:
iotop:
blktrace:

...



Binary file added Linux_process_standard_segment_layout.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Original file line number Diff line number Diff line change
Expand Up @@ -4,36 +4,32 @@
//参考资料:Linux操作系统原理与应用(第2版) 陈莉君、康华 编著
/////////////////////////////////////////////



链表(循环双向链表)是Linux内核中最简单、最常用的一种数据结构。
循环双向链表是Linux内核中最简单、最常用的一种数据结构。

1、链表的定义
struct list_head {
struct list_head *next, *prev;
}
这个不含数据域的链表,可以嵌入到任何数据结构中,例如可按如下方式定义含有数据域的链表
//这个不含数据域的链表,可以嵌入到任何数据结构中,例如如下定义含有数据域的链表
struct my_list {
void * mydata;
struct list_head list;
} ;

2、链表的声明和初始化宏
struct list_head 只定义了链表结点,并没有专门定义链表头.那么一个链表结点是如何建立起来的?
内核代码 list.h 中定义了两个宏
#defind LIST_HEAD_INIT(name) { &(name), &(name) } //仅初始化
struct list_head 只定义了链表结点, 并没有专门定义链表头. 那么一个链表结点是如何建立起来的?
内核代码 list.h 中定义了两个宏:
#defind LIST_HEAD_INIT(name) { &(name), &(name) } //仅初始化
#defind LIST_HEAD(name) struct list_head name = LIST_HEAD_INIT(name) //声明并初始化

如果要声明并初始化链表头mylist_head,则直接调用:LIST_HEAD(mylist_head),之后,
mylist_head的next、prev指针都初始化为指向自己。这样,就有了一个带头结点的空链表。
如果要声明并初始化链表头mylist_head,则直接调用:LIST_HEAD(mylist_head),之后, mylist_head的next、prev指针都初始化为指向自己。这样,就有了一个带头结点的空链表。

判断链表是否为空的函数:
static inline int list_empty(const struct list_head * head) {
static inline int list_empty(const struct list_head * head) { //返回1表示链表为空,0表示不空
return head->next == head;
} //返回1表示链表为空,0表示不空
}

3、在链表中增加一个结点
(内核代码中,函数名前加两个下划线表示内部函数)
static inline void __list_add(struct list_head *new, struct list_head *prev, struct list_head *next)
{
next -> prev = new ;
Expand All @@ -42,8 +38,7 @@ mylist_head的next、prev指针都初始化为指向自己。这样,就有了
prev -> next = new ;
}

list.h 中增加结点的两个函数为:
(链表是循环的,可以将任何结点传递给head,调用这个内部函数以分别在链表头和尾增加结点)
list.h 中增加结点的两个函数为: (链表是循环的,可以将任何结点传递给head,调用这个内部函数以分别在链表头和尾增加结点)
static inline void list_add(struct list_head *new, struct llist_head *head)
{
__list_add(new, head, head -> next) ;
Expand All @@ -53,20 +48,20 @@ mylist_head的next、prev指针都初始化为指向自己。这样,就有了
__list_add(new, head -> prev, head) ;
}
附:给head传递第一个结点,可以用来实现一个队列,传递最后一个结点,可以实现一个栈。
static 加在函数前,表示这个函数是静态函数,其实际上是对作用域的限制,指该函数作用域仅局限
于本文件。所以说,static 具有信息隐蔽的作用。而函数前加 inline 关键字的函数,叫内联函数,表
示编译程序在调用这个函数时,立即将该函数展开。


4、 遍历链表
list.h 中定义了如下遍历链表的宏:
#define list_for_each(pos, head) for(pos = (head)-> next ; pos != (head) ; pos = pos -> next)
这种遍历仅仅是找到一个个结点的当前位置,那如何通过pos获得起始结点的地址,从而可以引用结
点的域?list.h 中定义了 list_entry 宏:
这种遍历仅仅是找到一个个结点的当前位置,那如何通过pos获得起始结点的地址,从而可以引用结点的域?

list.h 中定义了 list_entry 宏:
#define list_entry( ptr, type, member ) \
( (type *) ( (char *) (ptr) - (unsigned long) ( &( (type *)0 ) -> member ) ) )
分析:(unsigned long) ( &( (type *)0 ) -> member ) 把 0 地址转化为 type 结构的指针,然后获取该
结构中 member 域的指针,也就是获得了 member 在type 结构中的偏移量。其中 (char *) (ptr) 求
出的是 ptr 的绝对地址,二者相减,于是得到 type 类型结构体的起始地址,即起始结点的地址。

分析:(unsigned long) ( &( (type *)0 ) -> member ) 把 0 地址转化为 type 结构的指针,然后获取该
结构中 member 域的指针,也就是获得了 member 在type 结构中的偏移量。其中 (char *) (ptr) 求
出的是 ptr 的绝对地址,二者相减,于是得到 type 类型结构体的起始地址,即起始结点的地址。

5、链表的应用
一个用以创建、增加、删除和遍历一个双向链表的Linux内核模块
Expand All @@ -86,31 +81,24 @@ struct numlist numhead;

static int __init doublelist_init(void)
{
//初始化头结点
struct numlist * listnode; //每次申请链表结点时所用的指针
struct numlist * listnode; //每次申请链表结点时所用的指针
struct list_head * pos;
struct numlist * p;
int i;

printk("doublelist is starting...\n");
INIT_LIST_HEAD(&numhead.list);
/*
* static inline void INIT_LIST_HEAD(struct list_head *list)
* {
* list->next = list;
* list->prev = list;
* }
*/
INIT_LIST_HEAD(&numhead.list); //初始化头结点

//建立N个结点,依次加入到链表当中
for (i=0; i<N; i++) {
listnode = (struct numlist *)kmalloc(sizeof(struct numlist), GFP_KERNEL);
//void *kmalloc(size_t size, int flages)
//分配内存,size 要分配内存大小,flags 内存类型
listnode->num = i+1;
list_add_tail(&listnode->list, &numhead.list);
printk("Node %d has added to the doublelist...\n", i+1);
if (listnode != NULL) {
listnode->num = i+1;
list_add_tail(&listnode->list, &numhead.list);
printk("Node %d has added to the doublelist...\n", i+1);
}
}

//遍历链表
i = 1;
list_for_each(pos, &numhead.list) {
Expand All @@ -131,10 +119,10 @@ static void __exit doublelist_exit(void)
i = 1;
list_for_each_safe(pos, n, &numhead.list) {
//为了安全删除结点而进行的遍历
list_del(pos); //从链表中删除当前结点
list_del(pos); //从链表中删除当前结点
p = list_entry(pos, struct numlist, list);
//得到当前数据结点的首地址,即指针
kfree(p); //释放该数据结点所占空间
kfree(p); //释放该数据结点所占空间
printk("Node %d has removed from the doublelist...\n", i++);
}
printk("doublelist is exiting...\n");
Expand All @@ -143,7 +131,5 @@ static void __exit doublelist_exit(void)
module_init(doublelist_init);
module_exit(doublelist_exit);
MODULE_LICENCE("GPL");
MODULE_AUTHOR("shigh1005@gmail.com");



Loading