svn commit: r199418 - head/sys/dev/syscons
Jung-uk Kim
jkim at FreeBSD.org
Tue Nov 17 20:01:04 UTC 2009
On Tuesday 17 November 2009 02:50 pm, Kostik Belousov wrote:
> On Tue, Nov 17, 2009 at 02:34:54PM -0500, Jung-uk Kim wrote:
> > On Tuesday 17 November 2009 02:24 pm, Konstantin Belousov wrote:
> > > Author: kib
> > > Date: Tue Nov 17 19:24:26 2009
> > > New Revision: 199418
> > > URL: http://svn.freebsd.org/changeset/base/199418
> > >
> > > Log:
> > > Fix pgsignal() call after signature change in r199355.
> > >
> > > Reported and tested by: bf1783 googlemail com
> > > MFC after: 1 month
> > >
> > > Modified:
> > > head/sys/dev/syscons/scvidctl.c
> > >
> > > Modified: head/sys/dev/syscons/scvidctl.c
> > > ===============================================================
> > >==== =========== --- head/sys/dev/syscons/scvidctl.c Tue Nov 17
> > > 18:57:44 2009 (r199417) +++ head/sys/dev/syscons/scvidctl.c Tue
> > > Nov 17 19:24:26 2009 (r199418) @@ -321,6 +321,7 @@
> > > sc_set_pixel_mode(scr_stat *scp, struct return ENODEV;
> > > #else
> > > video_info_t info;
> > > + ksiginfo_t ksi;
> > > u_char *font;
> > > int prev_ysize;
> > > int error;
> > > @@ -458,8 +459,11 @@ sc_set_pixel_mode(scr_stat *scp, struct
> > > tp->t_winsize.ws_col = scp->xsize;
> > > tp->t_winsize.ws_row = scp->ysize;
> > > if (tp->t_pgrp != NULL) {
> > > + ksiginfo_init(&ksi);
> > > + ksi.ksi_signo = SIGWINCH;
> > > + ksi.ksi_code = SI_KERNEL;
> > > PGRP_LOCK(tp->t_pgrp);
> > > - pgsignal(tp->t_pgrp, SIGWINCH, 1);
> > > + pgsignal(tp->t_pgrp, SIGWINCH, 1, &ksi);
> > > PGRP_UNLOCK(tp->t_pgrp);
> > > }
> > > }
> >
> > Probably you wanted this:
> >
> > --- sys/dev/syscons/scvidctl.c
> > +++ sys/dev/syscons/scvidctl.c
> > @@ -321,7 +321,6 @@ sc_set_pixel_mode(scr_stat *scp, struct tty
> > *tp, i return ENODEV;
> > #else
> > video_info_t info;
> > - ksiginfo_t ksi;
> > u_char *font;
> > int prev_ysize;
> > int error;
> > @@ -458,14 +457,8 @@ sc_set_pixel_mode(scr_stat *scp, struct tty
> > *tp, i
> >
> > || tp->t_winsize.ws_row != scp->ysize) {
> >
> > tp->t_winsize.ws_col = scp->xsize;
> > tp->t_winsize.ws_row = scp->ysize;
> > - if (tp->t_pgrp != NULL) {
> > - ksiginfo_init(&ksi);
> > - ksi.ksi_signo = SIGWINCH;
> > - ksi.ksi_code = SI_KERNEL;
> > - PGRP_LOCK(tp->t_pgrp);
> > - pgsignal(tp->t_pgrp, SIGWINCH, 1, &ksi);
> > - PGRP_UNLOCK(tp->t_pgrp);
> > - }
> > +
> > + tty_signal_pgrp(tp, SIGWINCH);
> > }
> >
> > return 0;
> > -----------------------------------------------------------------
> >-
> >
> > In fact, it seems it was missed in r181905.
> >
> > Jung-uk Kim
>
> I do not think so, at least it needs further considerations.
> First, call to tty_signal_pgrp() requires locked tty.
> Second, tty_signal_pgrp() restores i/o processing on the terminal,
> tp->t_flags &= ~TF_STOPPED;
> that is not quite obviously right thing to do on SIGWINCH.
If so, r181905 is wrong, too:
http://svn.freebsd.org/viewvc/base/head/sys/dev/syscons/scvidctl.c?r1=181905&r2=181904&pathrev=181905
Jung-uk Kim
More information about the svn-src-all
mailing list