if(nr_threads >= max_threads) //上面是对用户进程的限制,这里是对内核进程的数量限制
45. goto bad_fork_cleanup_count;
46.
47. get_exec_domain(p->exec_domain); //p->exec_domain指向一个exec_domain结构,定义见下。
48.
49. if(p->binfmt && p->binfmt->module) //每个进程都属于某种可执行的印象格式如a.out或者elf,对这些格式的支持都是通过动态安装驱动模块来实现的,binfmt就是用来指向这些格式驱动
50. __MOD_INC_USE_COUNT(p->binfmt->module);
51.
52. p->did_exec = 0;
53. p->swappable = 0;
54. p->state = TASK_UNINTERRUPTIBLE; //为下面设置PID做准备,明显get_pid是一种独占行为,不能多个进程同时去get_pid,因此在这里可能需要将当前进程睡眠,所以设置这个