mnt_init()/linux2.6 このページを編集する際は、編集に関する方針に従ってください。

概要

実装

static void __init init_mount_tree(void) {

	struct vfsmount *mnt;
	struct namespace *namespace;
	struct task_struct *g, *p;
	mnt = do_kern_mount("rootfs", 0, "rootfs", NULL);
	if (IS_ERR(mnt))
		panic("Can't create rootfs");
	namespace = kmalloc(sizeof(*namespace), GFP_KERNEL);
	if (!namespace)
		panic("Can't allocate initial namespace");
	atomic_set(&namespace->count, 1);
	INIT_LIST_HEAD(&namespace->list);
	init_rwsem(&namespace->sem);
       list_add(&mnt->mnt_list, &namespace->list);
  • 名前空間のマウント済みリストに追加する
       namespace->root = mnt;
	
       init_task.namespace = namespace;
  • initタスクの名前空間を設定する
       read_lock(&tasklist_lock);
       for_each_task(p) {
                get_namespace(namespace);
                p->namespace = namespace;
  • 全てのタスクの名前空間にnamespaceを設定する
       }
       read_unlock(&tasklist_lock);

       set_fs_pwd(current->fs, namespace->root, namespace->root->mnt_root);
  • 現在のファイルシステムの作業ディレクトリをmnt_rootに変更する
       set_fs_root(current->fs, namespace->root, namespace->root->mnt_root);
  • 現在のファイルシステムのルートディレクトリをmnt_rootに変更する

}

呼出元


履歴

  • 作者:るくす?
  • 日付:2015/4/26
  • 対象:2.6.15
    更新日更新者更新内容

コメント



トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2015-04-26 (日) 14:39:53 (939d)