Return to BSD News archive
Received: by minnie.vk1xwt.ampr.org with NNTP
id AA198 ; Fri, 29 Jan 93 11:00:38 EST
Path: sserve!manuel.anu.edu.au!munnari.oz.au!spool.mu.edu!yale.edu!ira.uka.de!math.fu-berlin.de!news.netmbx.de!Germany.EU.net!mcsun!fuug!kiae!newsserv
From: "Andrew A. Chernov, Black Mage" <ache@astral.msk.su>
Newsgroups: comp.unix.bsd
Subject: [386bsd] New patchkit select (beware) & codrvr conflict (with fix)
Date: Wed, 27 Jan 93 16:47:51 +0300
Distribution: world
Organization: Ha-oh-lahm Yetzirah
Message-ID: <mI7AfPhe70@astral.msk.su>
Sender: news-service@newcom.kiae.su
Reply-To: ache@astral.msk.su
Lines: 121
>From postmaster Wed Jan 27 16:44:47 1993
Select patch from new patchkit (waiting on pid instead of *proc)
introduce bug in codrvr keyboard poll, here is a fix:
*** co_hdr.h.sel Sun Nov 22 18:35:19 1992
--- co_hdr.h Wed Jan 27 16:21:51 1993
***************
*** 122,128 ****
int cs_timo; /* timeouts since interrupt (unused) */
u_long cs_wedgecnt; /* times restarted (unused)*/
u_long cs_ovfl; /* buffer overflows */
! struct proc *cs_selp; /* Process waiting for select call */
int cs_pgid; /* Process group for ASYNC I/O */
/*XXX*/ struct tty *cs_constty; /* used to restore constty if */
/* anyone dares to steal CONSOLE during raw open */
--- 122,128 ----
int cs_timo; /* timeouts since interrupt (unused) */
u_long cs_wedgecnt; /* times restarted (unused)*/
u_long cs_ovfl; /* buffer overflows */
! pid_t cs_rsel; /* Process waiting for select call */
int cs_pgid; /* Process group for ASYNC I/O */
/*XXX*/ struct tty *cs_constty; /* used to restore constty if */
/* anyone dares to steal CONSOLE during raw open */
*** co_kbd.c.sel Wed Jan 27 15:23:03 1993
--- co_kbd.c Wed Jan 27 16:31:57 1993
***************
*** 138,144 ****
initrb(&co_buf);
/* signal opening process only */
! consoftc.cs_selp = 0;
consoftc.cs_pgid = p->p_pid;
return 0;
--- 138,144 ----
initrb(&co_buf);
/* signal opening process only */
! consoftc.cs_rsel = 0;
consoftc.cs_pgid = p->p_pid;
return 0;
***************
*** 156,162 ****
if (minor(dev)==0x80) return 0;
consoftc.cs_flags &= ~(CO_OPENRAW|CO_ASYNC);
! consoftc.cs_selp = 0;
consoftc.cs_pgid = 0;
/* do we need to restore console?
--- 156,162 ----
if (minor(dev)==0x80) return 0;
consoftc.cs_flags &= ~(CO_OPENRAW|CO_ASYNC);
! consoftc.cs_rsel = 0;
consoftc.cs_pgid = 0;
/* do we need to restore console?
***************
*** 277,285 ****
if (!(consoftc.cs_flags & CO_OPENRAW))
return;
! if (consoftc.cs_selp) {
! selwakeup(consoftc.cs_selp,0);
! consoftc.cs_selp = 0;
}
if (consoftc.cs_flags & CO_ASYNC) {
if (consoftc.cs_pgid < 0)
--- 277,285 ----
if (!(consoftc.cs_flags & CO_OPENRAW))
return;
! if (consoftc.cs_rsel) {
! selwakeup(consoftc.cs_rsel,0);
! consoftc.cs_rsel = 0;
}
if (consoftc.cs_flags & CO_ASYNC) {
if (consoftc.cs_pgid < 0)
***************
*** 306,312 ****
splx(s);
return 1;
}
! consoftc.cs_selp = p;
}
splx(s);
return 0;
--- 306,312 ----
splx(s);
return 1;
}
! consoftc.cs_rsel = p->p_pid;
}
splx(s);
return 0;
***************
*** 1182,1188 ****
consoftc.cs_flags |= CO_OPENRAW;
ofl = 0;
}
! consoftc.cs_selp = 0;
break;
case KBDRESET8042:
doreset();
--- 1182,1188 ----
consoftc.cs_flags |= CO_OPENRAW;
ofl = 0;
}
! consoftc.cs_rsel = 0;
break;
case KBDRESET8042:
doreset();
--
In-This-Life: Andrew A. Chernov | "Hay mas dicha, mas contento
Internet: ache@astral.msk.su | "Que adorar una hermosura
FIDOnet: 2:5020/23.34 | "Brujuleada entre los lejos
Organization: The RELCOM Corp. | "De lo imposible?!" (Calderon)