sleeplock.c void initsleeplock(struct sleeplock *lk, char *name)
トップページ
jupiteroak.hatenablog.com
sleeplock.c
https://github.com/mit-pdos/xv6-public/blob/master/sleeplock.c#L13
void initsleeplock(struct sleeplock *lk, char *name) { initlock(&lk->lk, "sleep lock"); lk->name = name; lk->locked = 0; lk->pid = 0; }
initsleeplock関数は、排他制御の対象となる共有資源に関連しているスリープロックを初期化します。
引数 struct sleeplock *lk
初期化の対象となるスリープロック(sleeplock構造体)を指定するアドレスです。
処理の内容
- sleeplock構造体に関連しているロック(通常のロック)を初期化する
- スリープロックによる排他制御の対象となる共有資源の名前を指定する
- スリープロックの状態を初期化する
- スリープロックを保持しているプロセスへの参照を初期化する
sleeplock構造体に関連しているロック(通常のロック)を初期化する
initlock(&lk->lk, "sleep lock");
initlock関数を呼び出して、 sleeplock構造体に関連しているロック(通常のロック)を初期化します。