2009年8月20日木曜日

cgroup_init_early

今日も前回のつづきです。

======

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

======

今回はcgroup_init_earlyを見ていきましょう。
実体はkernel/cgroup.cにあります。

======
int __init cgroup_init_early(void)
{
int i;
kref_init(&init_css_set.ref);
kref_get(&init_css_set.ref);
INIT_LIST_HEAD(&init_css_set.cg_links);
INIT_LIST_HEAD(&init_css_set.tasks)
INIT_HLIST_NODE(&init_css_set.hlist);
css_set_count = 1;
init_cgroup_root(&rootnode);
list_add(&rootnode.root_list, &roots);
root_count = 1;
init_task.cgroups = &init_css_set;

init_css_set_link.cg = &init_css_set;
list_add(&init_css_set_link.cgrp_link_list,
&rootnode.top_cgroup.css_sets);
list_add(&init_css_set_link.cg_link_list,
&init_css_set.cg_links);

for (i = 0; i < i =" 0;" ss =" subsys[i];">early_init)
cgroup_init_subsys(ss);
}
return 0;
}

=====

cgroupというのはControl Groupの略でカーネル2.6.25で追加されたリソース管理の仕組みです。以下の記事に詳しい解説があります。

Linux Kernel Watch
http://www.atmarkit.co.jp/flinux/rensai/watch2008/watch05a.html

ここではcgroupを管理するためのツリーを初期化しています。

0 件のコメント:

コメントを投稿