lkml.org 
[lkml]   [2003]   [Sep]   [8]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
Date
From
SubjectRe: send_sig_info() in __switch_to() Ok or not?
Andi Kleen writes:
> Mikael Pettersson <mikpe@csd.uu.se> writes:
>
> > I have a kernel extension (the x86 perfctr driver) that needs,
> > in a specific but unlikely case(*), to send a SIGILL to current
> > (next) in __switch_to(). Is this permitted or not?
> >
> > I suspect it might not be because send_sig_info() eventually does
> > wake_up_process_kick(), and there's this warning in __switch_to()
> > not to call printk() since it calls wake_up()...
>
> > If I can't call send_sig_info() in __switch_to(), is there
> > another way to post a SIGILL to current from __switch_to()?
>
> You can just do it manually. Fill in the signal in the signal
> mask of the process. The next time the process checks for signals it will
> kill itself. As it is already running or going to run it doesn't need
> a wake up.

Sorry about the delay in responding to this.
Anyway, I started doing it manually, but gave up since it would
mean copying/duplicating quite a bit of code from signal.c.
Instead I now do:

BUG_ON(current->state != TASK_RUNNING);
send_sig(SIG_ILL, current, 1);

I've checked sched.c and done runtime testing, and this does seem to
be true and work Ok. (Fingers crossed, knock on wood, etc.)

/Mikael
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/

\
 
 \ /
  Last update: 2005-03-22 13:48    [W:0.036 / U:0.280 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site