????????????????????????????????????????????????????signal_wake_up()????????????signal_wake_up()(kernel/signal.c)????????£?

/*
 * Tell a process that it has a new active signal..
 *
 * NOTE! we rely on the previous spin_lock to
 * lock interrupts for us! We can only be called with
 * "siglock" held?? and the local interrupt must
 * have been disabled when that got acquired!
 *
 * No need to set need_resched since signal event passing
 * goes through ->blocked
 */
void signal_wake_up(struct task_struct *t?? int resume)
{
 unsigned int mask;

 set_tsk_thread_flag(t?? TIF_SIGPENDING);//?????????TIF_SIGPENDING???

 /*
  * For SIGKILL?? we want to wake it up in the stopped/traced case.
  * We don't check t->state here because there is a race with it
  * executing another processor and just now entering stopped state.
  * By using wake_up_state?? we ensure the process will wake up and
  * handle its death signal.
  */
 mask = TASK_INTERRUPTIBLE;
 if (resume)
  mask |= TASK_STOPPED | TASK_TRACED;
 if (!wake_up_state(t?? mask))
  kick_process(t);
}

????signal_wake_up()?????????????TIF_SIGPENDING?????????y?????????????????????????????wake_up_state()????????????????????????????CPU?????У?wake_up_state()??????0?????????kick_process()???CPU????????????????ж?????ж?????????????????????????????

????????y?????????????????????????????????do_notify_resume()????y????????