我试图了解linux内核中的init进程,这是第一个进程,并使用INIT_TASK宏进行静态初始化.
161 #define INIT_TASK(tsk) \
162 { \
163 .state = 0, \
164 .stack = &init_thread_info, \
165 .usage = ATOMIC_INIT(2), \
166 .flags = PF_KTHREAD, \
167 .prio = MAX_PRIO-20, \
168 .static_prio = MAX_PRIO-20, \
169 .normal_prio = MAX_PRIO-20, \
170 .policy = SCHED_NORMAL, \
171 .cpus_allowed = CPU_MASK_ALL, \
172 .nr_cpus_allowed= NR_CPUS, \
173 .mm = NULL, \
174 .active_mm = &init_mm, \
175 .se = { \
176 .group_node = LIST_HEAD_INIT(tsk.se.group_node), \
177 }, \ …Run Code Online (Sandbox Code Playgroud) 为什么我们可以在软件中断的情况下睡觉,而在硬件中断的情况下是不允许的?例如,系统调用可以睡眠,而ISR无法睡眠.