Skip to content

Latest commit

 

History

History
224 lines (190 loc) · 9.49 KB

File metadata and controls

224 lines (190 loc) · 9.49 KB
ARM10C : 114 주차
일시 : 2015.08.15 (114 주차 스터디 진행)
모임명 : NAVER_개발자커뮤니티지원_10차ARM-C
장소 : 토즈 타워점
장소지원 : NAVER 개발자 커뮤니티 지원 프로그램
참여인원 : 3명

============

114 주차 진도

  • start_kernel 1 ~/kernel/iamroot/linux-stable/init/main.c
  • cgroup_init_early 634 ~/kernel/iamroot/linux-stable/init/main.c
    • init_task 5239 RCU_INIT_POINTER(init_task.cgroups, &init_css_set);

main.c::start_kernel()

// ARM10C 20130824
// asmlinkage의 의미
// http://www.spinics.net/lists/arm-kernel/msg87677.html
asmlinkage void __init start_kernel(void)
{
	char * command_line;
	extern const struct kernel_param __start___param[], __stop___param[];
	// ATAG,DTB 정보로 사용

	/*
	 * Need to run as early as possible, to initialize the
	 * lockdep hash:
	 */
	lockdep_init();
	smp_setup_processor_id();
	debug_objects_early_init();

	/*
	 * Set up the the initial canary ASAP:
	 */
	boot_init_stack_canary();

	cgroup_init_early();

cgroup.c::cgroup_init_early()

  • call: start_kernel()->cgroup_init_early()
  • cgroup_init_early()
// ARM10C 20150808
int __init cgroup_init_early(void)
{
	struct cgroup_subsys *ss;
	int i;

	atomic_set(&init_css_set.refcount, 1);

	// atomic_set에서 한일:
	// init_css_set.refcount: 1

	INIT_LIST_HEAD(&init_css_set.cgrp_links);

	// INIT_LIST_HEAD에서 한일:
	// (&init_css_set.cgrp_links)->next: &init_css_set.cgrp_links
	// (&init_css_set.cgrp_links)->prev: &init_css_set.cgrp_links

	INIT_LIST_HEAD(&init_css_set.tasks);

	// INIT_LIST_HEAD에서 한일:
	// (&init_css_set.tasks)->next: &init_css_set.tasks
	// (&init_css_set.tasks)->prev: &init_css_set.tasks

	INIT_HLIST_NODE(&init_css_set.hlist);

	// INIT_HLIST_NODE에서 한일:
	// (&init_css_set.hlist)->next: NULL
	// (&init_css_set.hlist)->pprev: NULL

	css_set_count = 1;
	// css_set_count: 1

	init_cgroup_root(&cgroup_dummy_root);

	// init_cgroup_root에서 한일:
	// (&(&cgroup_dummy_root)->subsys_list)->next: &(&cgroup_dummy_root)->subsys_list
	// (&(&cgroup_dummy_root)->subsys_list)->prev: &(&cgroup_dummy_root)->subsys_list
	// (&(&cgroup_dummy_root)->root_list)->next: &(&cgroup_dummy_root)->root_list
	// (&(&cgroup_dummy_root)->root_list)->prev: &(&cgroup_dummy_root)->root_list
	// (&(&(&cgroup_dummy_root)->top_cgroup)->sibling)->next: &(&(&cgroup_dummy_root)->top_cgroup)->sibling
	// (&(&(&cgroup_dummy_root)->top_cgroup)->sibling)->prev: &(&(&cgroup_dummy_root)->top_cgroup)->sibling
	// (&(&(&cgroup_dummy_root)->top_cgroup)->children)->next: &(&(&cgroup_dummy_root)->top_cgroup)->children
	// (&(&(&cgroup_dummy_root)->top_cgroup)->children)->prev: &(&(&cgroup_dummy_root)->top_cgroup)->children
	// (&(&(&cgroup_dummy_root)->top_cgroup)->files)->next: &(&(&cgroup_dummy_root)->top_cgroup)->files
	// (&(&(&cgroup_dummy_root)->top_cgroup)->files)->prev: &(&(&cgroup_dummy_root)->top_cgroup)->files
	// (&(&(&cgroup_dummy_root)->top_cgroup)->cset_links)->next: &(&(&cgroup_dummy_root)->top_cgroup)->cset_links
	// (&(&(&cgroup_dummy_root)->top_cgroup)->cset_links)->prev: &(&(&cgroup_dummy_root)->top_cgroup)->cset_links
	// (&(&(&cgroup_dummy_root)->top_cgroup)->release_list)->next: &(&(&cgroup_dummy_root)->top_cgroup)->release_list
	// (&(&(&cgroup_dummy_root)->top_cgroup)->release_list)->prev: &(&(&cgroup_dummy_root)->top_cgroup)->release_list
	// (&(&(&cgroup_dummy_root)->top_cgroup)->pidlists)->next: &(&(&cgroup_dummy_root)->top_cgroup)->pidlists
	// (&(&(&cgroup_dummy_root)->top_cgroup)->pidlists)->prev: &(&(&cgroup_dummy_root)->top_cgroup)->pidlists
	// (&(&(&cgroup_dummy_root)->top_cgroup)->event_list)->next: &(&(&cgroup_dummy_root)->top_cgroup)->event_list
	// (&(&(&cgroup_dummy_root)->top_cgroup)->event_list)->prev: &(&(&cgroup_dummy_root)->top_cgroup)->event_list
	// (&(&(&cgroup_dummy_root)->top_cgroup)->pidlist_mutex)->count: 1
	// (&(&(&cgroup_dummy_root)->top_cgroup)->pidlist_mutex)->wait_lock)->rlock)->raw_lock: { { 0 } }
	// (&(&(&cgroup_dummy_root)->top_cgroup)->pidlist_mutex)->wait_lock)->rlock)->magic: 0xdead4ead
	// (&(&(&cgroup_dummy_root)->top_cgroup)->pidlist_mutex)->wait_lock)->rlock)->owner: 0xffffffff
	// (&(&(&cgroup_dummy_root)->top_cgroup)->pidlist_mutex)->wait_lock)->rlock)->owner_cpu: 0xffffffff
	// (&(&(&(&cgroup_dummy_root)->top_cgroup)->pidlist_mutex)->wait_list)->next: &(&(&(&cgroup_dummy_root)->top_cgroup)->pidlist_mutex)->wait_list
	// (&(&(&(&cgroup_dummy_root)->top_cgroup)->pidlist_mutex)->wait_list)->prev: &(&(&(&cgroup_dummy_root)->top_cgroup)->pidlist_mutex)->wait_list
	// (&(&(&cgroup_dummy_root)->top_cgroup)->pidlist_mutex)->onwer: NULL
	// (&(&(&cgroup_dummy_root)->top_cgroup)->pidlist_mutex)->magic: &(&(&cgroup_dummy_root)->top_cgroup)->pidlist_mutex
	// (&(&(&cgroup_dummy_root)->top_cgroup)->event_list_lock)->raw_lock: { { 0 } }
	// (&(&(&cgroup_dummy_root)->top_cgroup)->event_list_lock)->magic: 0xdead4ead
	// (&(&(&cgroup_dummy_root)->top_cgroup)->event_list_lock)->owner: 0xffffffff
	// (&(&(&cgroup_dummy_root)->top_cgroup)->event_list_lock)->owner_cpu: 0xffffffff
	// (&(&(&(&cgroup_dummy_root)->top_cgroup)->xattrs)->head)->next: &(&(&(&cgroup_dummy_root)->top_cgroup)->xattrs)->head
	// (&(&(&(&cgroup_dummy_root)->top_cgroup)->xattrs)->head)->prev: &(&(&(&cgroup_dummy_root)->top_cgroup)->xattrs)->head
	// (&(&(&(&cgroup_dummy_root)->top_cgroup)->xattrs)->lock)->raw_lock: { { 0 } }
	// (&(&(&(&cgroup_dummy_root)->top_cgroup)->xattrs)->lock)->magic: 0xdead4ead
	// (&(&(&(&cgroup_dummy_root)->top_cgroup)->xattrs)->lock)->owner: 0xffffffff
	// (&(&(&(&cgroup_dummy_root)->top_cgroup)->xattrs)->lock)->owner_cpu: 0xffffffff
	//
	// (&(&cgroup_dummy_root)->top_cgroup)->dummy_css.cgroup: &(&cgroup_dummy_root)->top_cgroup
	// (&(&cgroup_dummy_root)->top_cgroup)->root: &cgroup_dummy_root
	// (&(&cgroup_dummy_root)->top_cgroup)->name: (struct cgroup_name *)(&root_cgroup_name)
	// (&cgroup_dummy_root)->number_of_cgroups: 1
	//
	// (&cgroup_dummy_root)->cgroup_idr의 맵버값을 0으로 초기화 수행
	// (&(&(&cgroup_dummy_root)->cgroup_idr)->lock)->raw_lock: { { 0 } }
	// (&(&(&cgroup_dummy_root)->cgroup_idr)->lock)->magic: 0xdead4ead
	// (&(&(&cgroup_dummy_root)->cgroup_idr)->lock)->owner: 0xffffffff
	// (&(&(&cgroup_dummy_root)->cgroup_idr)->lock)->owner_cpu: 0xffffffff

	cgroup_root_count = 1;
	// cgroup_root_count: 1

	RCU_INIT_POINTER(init_task.cgroups, &init_css_set);

	// RCU_INIT_POINTER에서 한일:
	// (&(&cgroup_dummy_root)->top_cgroup)->name: (struct cgroup_name *)(&root_cgroup_name)

// 2015/08/08 종료
// 2015/08/15 시작
    init_cgrp_cset_link.cset = &init_css_set;
	// init_cgrp_cset_link.cset: &init_css_set

	// cgroup_dummy_top: &cgroup_dummy_root.top_cgroup
	init_cgrp_cset_link.cgrp = cgroup_dummy_top;
	// init_cgrp_cset_link.cgrp: &cgroup_dummy_root.top_cgroup

	list_add(&init_cgrp_cset_link.cset_link, &cgroup_dummy_top->cset_links);

	// list_add에서 한일:
	// list의 HEAD인 &cgroup_dummy_top->cset_links에 &init_cgrp_cset_link.cset_link 추가
	//
	// (&cgroup_dummy_top->cset_links)->prev: &init_cgrp_cset_link.cset_link
	// (&init_cgrp_cset_link.cset_link)->next: &cgroup_dummy_top->cset_links
	// (&init_cgrp_cset_link.cset_link)->prev: &cgroup_dummy_top->cset_links
	// (&cgroup_dummy_top->cset_links)->next: &init_cgrp_cset_link.cset_link

	list_add(&init_cgrp_cset_link.cgrp_link, &init_css_set.cgrp_links);

	// list_add에서 한일:
	// list의 HEAD인 &init_css_set.cgrp_links에 &init_cgrp_cset_link.cgrp_link 추가
	//
	// (&init_css_set.cgrp_links)->prev: &init_cgrp_cset_link.cgrp_link
	// (&init_cgrp_cset_link.cgrp_link)->next: &init_css_set.cgrp_links
	// (&init_cgrp_cset_link.cgrp_link)->prev: &init_css_set.cgrp_links
	// (&init_css_set.cgrp_links)->next: &init_cgrp_cset_link.cgrp_link

// 2015/08/15 종료

log

  • 1st log
0943280..851984e  master     -> origin/master
Updating 0943280..851984e
Fast-forward
arch/arm/include/asm/atomic.h    |   3 +
arch/arm/include/asm/processor.h |   1 +
fs/file.c                        |   1 +
fs/fs_struct.c                   |   1 +
include/asm-generic/param.h      |   1 +
include/linux/bitmap.h           |   2 +
include/linux/cgroup.h           |   5 +
include/linux/compiler.h         |   2 +
include/linux/cpumask.h          |  16 ++-
include/linux/ftrace.h           |   7 +-
include/linux/idr.h              |   2 +
include/linux/init_task.h        | 304 +++++++++++++++++++++++++++++++++++++--
include/linux/irqflags.h         |   3 +-
include/linux/list.h             |  82 +++++++++++
include/linux/lockdep.h          |   4 +-
include/linux/mutex-debug.h      |   2 +
include/linux/pid.h              |   4 +
include/linux/plist.h            |  13 ++
include/linux/rcupdate.h         |   7 +
include/linux/sched.h            |   2 +
include/linux/sched/rt.h         |   4 +
include/linux/spinlock.h         |   6 +
include/linux/spinlock_types.h   |  20 +++
include/linux/threads.h          |   1 +
include/linux/types.h            |   2 +
include/linux/xattr.h            |  15 ++
include/uapi/linux/sched.h       |   1 +
init/init_task.c                 | 112 +++++++++++++++
init/main.c                      |   1 +
kernel/cgroup.c                  | 263 +++++++++++++++++++++++++++++++++
kernel/locking/mutex.c           |   2 +
kernel/nsproxy.c                 |   1 +
lib/idr.c                        |  14 ++
mm/init-mm.c                     |   1 +
34 files changed, 891 insertions(+), 14 deletions(-)
  • 2nd log
851984e..a8f6f9b  master     -> origin/master
Updating 851984e..a8f6f9b
Fast-forward
kernel/cgroup.c | 2 ++
1 file changed, 2 insertions(+)