Lions' 本読み (46)

14 章を再確認。というかざっくり読み杉でちゃんと確認できてないのである意味きちんと読むのはこれが初めて状態。
とりあえず順番てきには以下な部分らしい。

2021 found1:
2022    spl0();
2023    rp->p_flag =& ~SLOAD;
2024    xswap(rp, 1, 0);
2025    goto loop;

ちなみに rp はコアに最も長く存在したプロセスを指している模様。
ざっくり確認したところ、以下が気になります。

4375    a = malloc(swapmap, (rp->p_size+7)/8);

swapmap て何でしょ。

0204 int  swapmap[SMAPSIZ]; /* スワップ割り当ての空間 */

これ、グローバル変数ですね。てかどっちかというと以下の方がポイント高いのかな。

4378    xccdec(rp->p_textp);
4379    rp->p_flag =| SLOCK;
4380    if(swap(a, rp->p_addr, os, 0))

てか、swapmap て何だ。とりあえずここがハードルな模様。あ、malloc もだ。2528 で定義されてるのか。曰く_指定されたマップからsize単位を割り当てる_とのこと。
でも swapmap が何なのかがアレ。あ、malloc の定義が以下らしい。

2528 malloc(mp, size)
2529 struct map *mp;
{

map 構造体て何だば。と思ったら直上に定義な記述あり。

2505  * coremap配列とswapmap配列の構造体。
2506  * ゼロでないカウントと
2507  * 多くの連続な単位のベースアドレスから
2508  * 構成される
2509  * (coremap単位は64バイトであり、
2510  * swapmap単位は512バイトである)。
2511  * アドレスは昇順であり、
2512  * リストは最初のゼロカウントで
2513  * 終了する。
2514  */
2515 struct map
2516 {
2517    char *m_size;
2518    char *m_addr;
2519 };

あ、ここで 5 章なのか。今日はもう限界ス。