struct siginfo info; int error; struct task_struct *p;  
sys_tkill(int pid, int sig){	struct siginfo info;	int error;	struct task_struct *p;	/* This is only valid for single tasks */	if (pid <= 0)		return -EINVAL;	info.si_signo = sig;	info.si_errno = 0;	info.si_code = SI_TKILL;	info.si_pid = current->tgid;	info.si_uid = current->uid;	read_lock(&tasklist_lock);	p = find_task_by_pid(pid);	error = -ESRCH;	if (p) {		error = check_kill_permission(sig, &info, p);		/*		 * The null signal is a permissions and process existence		 * probe.  No signal is actually delivered.		 */		if (!error && sig && p->sighand) {			spin_lock_irq(&p->sighand->siglock);			handle_stop_signal(sig, p);			error = specific_send_sig_info(sig, &info, p);			spin_unlock_irq(&p->sighand->siglock);		}	}	read_unlock(&tasklist_lock);	return error;}
10457	/local/tlutelli/issta_data/temp/c/2005_temp/2005/10457/6dd69f1061bfdeca230509b173438e0731bff767/signal.c/clean/kernel/signal.c