SGI KDBを使ったカーネルデバッグスレat LINUX
SGI KDBを使ったカーネルデバッグスレ - 暇つぶし2ch102:オリジナルスレの1
01/05/31 12:01
>>98
ソースを見てみてデバッグしてみた。101が正しいな。
fork.cのdo_fork関数に以下のようなコードがある。
  retval = -EAGAIN;
  if (atomic_read(&p->user->processes) >= p->rlim[RLIMIT_NPROC].rlim_cur)
    goto bad_fork_free;
  atomic_inc(&p->user->__count);
  atomic_inc(&p->user->processes);
でp->userはsched.hを見るとuser_structだから、user_structの定義を見ると
これもsched.hにある。
struct user_struct {
  atomic_t __count;   /* reference count */
  atomic_t processes;  /* How many processes does this user have? */
  atomic_t files;    /* How many open files does this user have? */
  /* Hash table maintenance information */
  struct user_struct *next, **pprev;
  uid_t uid;
};
これらよりコメントを見れば分かるけどprocessesはこのユーザコンテキスト
上でいくつのプロセスが走っているかを示している。それを
p->rlim[RLIMIT_NPROC].rlim_cur と比較してそれ以上になったら
fork処理を失敗させている。rlim_curはfork_initでイニシャライズ
されていてmax_threads/2になっている。



次ページ
続きを表示
1を表示
最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch