0
zs_map_objectを呼び出すとき、戻り値はCPU単位のオブジェクトですか?割り込みコンテキストでマッピングを許可できないのはなぜですか?zsmallocへのアクセスが原子コンテキストで行われる理由
zs_map_objectを呼び出すとき、戻り値はCPU単位のオブジェクトですか?割り込みコンテキストでマッピングを許可できないのはなぜですか?zsmallocへのアクセスが原子コンテキストで行われる理由
コードを確認するのは簡単です。
一度に1つのマッピングしかできないようです。
今度は、見てみましょう:あなたが行く
area = &get_cpu_var(zs_map_area);
area->vm_mm = mm;
if (off + class->size <= PAGE_SIZE) {
/* this object is contained entirely within a page */
area->vm_addr = kmap_atomic(page);
ret = area->vm_addr + off;
goto out;
}
/* this object spans two pages */
pages[0] = page;
pages[1] = get_next_page(page);
そして、そこ -後にマッピングが設定取得を開始割り込み火災とどうなるかを想像し、例えば面積 - > vm_mm = mmライン後。どのような作業が行われたとしても、ハンドラから実行されているコードによって上書きされますが、ハンドラが復帰した後に回復するものは何もありません。
私は理由も見当たりません。あなたはlinux-mmメーリングリストで質問しましたか?私は最初に、そしてCc Minchan Kimを具体的に尋ねるでしょう。 –