????sys_tkill????????????pecific_send_sig_info()?????????????????????pecific_send_sig_info()(kernel/signal.c)????壺

static int
specific_send_sig_info(int sig?? struct siginfo *info?? struct task_struct *t)
{
 int ret = 0;

 if (!irqs_disabled())
  BUG();
 assert_spin_locked(&t->sighand->siglock);

 if (((unsigned long)info > 2) && (info->si_code == SI_TIMER))
  /*
   * Set up a return to indicate that we dropped the signal.
   */
  ret = info->si_sys_private;
 /*????????*/
 /* Short-circuit ignored signals.  */
 if (sig_ignored(t?? sig))
  goto out;

 /* Support queueing exactly one non-rt signal?? so that we
    can get more detailed information about the cause of
    the signal. */
 if (LEGACY_QUEUE(&t->pending?? sig))
  goto out;

 ret = send_signal(sig?? info?? t?? &t->pending);//??????????
 if (!ret && !sigismember(&t->blocked?? sig))
  signal_wake_up(t?? sig == SIGKILL);
out:
 return ret;
}

???????????sig_ignored??????????????????鷢????????????????????????????????????????λ?????鵱????????????????????????????????????????????????????κδ??????????send_signal?????????????????send_signal()??????????????sys_tkill?????????????????send_signal()??????????????????

?????????????send_signal()?????????t->pending?????????Private Signal Queue?????????????????????????signal_wake_up()????????????????????????y????????????????л?????????????????????