new signal stuff
authorBill Joy <bill@ucbvax.Berkeley.EDU>
Sun, 25 May 1980 10:45:44 +0000 (02:45 -0800)
committerBill Joy <bill@ucbvax.Berkeley.EDU>
Sun, 25 May 1980 10:45:44 +0000 (02:45 -0800)
SCCS-vsn: sys/kern/kern_synch.c 3.10
SCCS-vsn: sys/vax/vax/trap.c 3.4
SCCS-vsn: sys/kern/tty.c 3.6

usr/src/sys/kern/kern_synch.c
usr/src/sys/kern/tty.c
usr/src/sys/vax/vax/trap.c

index 2b1ea13..9666791 100644 (file)
@@ -1,4 +1,4 @@
-/*     kern_synch.c    3.    %H%     */
+/*     kern_synch.c    3.10    %H%     */
 
 #include "../h/param.h"
 #include "../h/systm.h"
 
 #include "../h/param.h"
 #include "../h/systm.h"
@@ -31,7 +31,7 @@ sleep(chan, pri)
 caddr_t chan;
 {
        register struct proc *rp, **hp;
 caddr_t chan;
 {
        register struct proc *rp, **hp;
-       register s, h;
+       register s;
 
        rp = u.u_procp;
        s = spl6();
 
        rp = u.u_procp;
        s = spl6();
@@ -63,6 +63,7 @@ caddr_t chan;
                if(ISSIG(rp))
                        goto psig;
        } else {
                if(ISSIG(rp))
                        goto psig;
        } else {
+               rp->p_stat = SSLEEP;
                (void) spl0();
                swtch();
        }
                (void) spl0();
                swtch();
        }
@@ -163,7 +164,7 @@ restart:
        for (q = h; p = *q; ) {
                if (p->p_rlink || p->p_stat != SSLEEP && p->p_stat != SSTOP)
                        panic("wakeup");
        for (q = h; p = *q; ) {
                if (p->p_rlink || p->p_stat != SSLEEP && p->p_stat != SSTOP)
                        panic("wakeup");
-               if (p->p_wchan==chan && p->p_stat!=SZOMB) {
+               if (p->p_wchan==chan) {
                        p->p_wchan = 0;
                        *q = p->p_link;
                        p->p_slptime = 0;
                        p->p_wchan = 0;
                        *q = p->p_link;
                        p->p_slptime = 0;
@@ -214,7 +215,6 @@ rqinit()
 setrun(p)
 register struct proc *p;
 {
 setrun(p)
 register struct proc *p;
 {
-       register caddr_t w;
        register s;
 
        s = spl6();
        register s;
 
        s = spl6();
@@ -227,12 +227,12 @@ register struct proc *p;
        default:
                panic("setrun");
 
        default:
                panic("setrun");
 
+       case SSTOP:
        case SSLEEP:
                unsleep(p);             /* e.g. when sending signals */
                break;
 
        case SIDL:
        case SSLEEP:
                unsleep(p);             /* e.g. when sending signals */
                break;
 
        case SIDL:
-       case SSTOP:
                break;
        }
        p->p_stat = SRUN;
                break;
        }
        p->p_stat = SRUN;
index c4a121e..6412d7a 100644 (file)
@@ -1,4 +1,4 @@
-/*     tty.c   3.5     %H%     */
+/*     tty.c   3.6     %H%     */
 
 /*
  * general TTY subroutines
 
 /*
  * general TTY subroutines
@@ -83,7 +83,8 @@ register struct tty *tp;
        if(pp->p_pgrp == 0) {
                u.u_ttyp = tp;
                u.u_ttyd = dev;
        if(pp->p_pgrp == 0) {
                u.u_ttyp = tp;
                u.u_ttyd = dev;
-               tp->t_pgrp = pp->p_pid;
+               if (tp->t_pgrp == 0)
+                       tp->t_pgrp = pp->p_pid;
                pp->p_pgrp = tp->t_pgrp;
        }
        tp->t_state &= ~WOPEN;
                pp->p_pgrp = tp->t_pgrp;
        }
        tp->t_state &= ~WOPEN;
@@ -107,8 +108,8 @@ register struct tty *tp;
        tp->t_erase = CERASE;
        tp->t_kill = CKILL;
 /* begin local */
        tp->t_erase = CERASE;
        tp->t_kill = CKILL;
 /* begin local */
-       tlun.t_suspc = 0377;
-       tlun.t_dstopc = 0377;
+       tlun.t_suspc = CTRL(z);
+       tlun.t_dsuspc = CTRL(y);
        tlun.t_rprntc = CTRL(r);
        tlun.t_flushc = CTRL(o);
        tlun.t_werasc = CTRL(w);
        tlun.t_rprntc = CTRL(r);
        tlun.t_flushc = CTRL(o);
        tlun.t_werasc = CTRL(w);
@@ -458,7 +459,7 @@ register struct tty *tp;
                ;
        tp->t_delct = 0;
        tp->t_rocount = 0;              /* local */
                ;
        tp->t_delct = 0;
        tp->t_rocount = 0;              /* local */
-       tp->t_lstate = 0;       /* reset */
+       tp->t_lstate = 0;
        splx(s);
 }
 
        splx(s);
 }
 
index 58018bf..7f0b37a 100644 (file)
@@ -1,4 +1,4 @@
-/*     trap.c  3.3     %H%     */
+/*     trap.c  3.4     %H%     */
 
 
 #include "../h/param.h"
 
 
 #include "../h/param.h"
@@ -147,7 +147,7 @@ unsigned code;
        u.u_ar0 = locr0;
        params = (caddr_t)locr0[AP] + NBPW;
        u.u_error = 0;
        u.u_ar0 = locr0;
        params = (caddr_t)locr0[AP] + NBPW;
        u.u_error = 0;
-       opc = u.u_ar0[PC] - 2;
+       opc = pc - 2;
        if (code > 63)
                opc -= 2;
        callp = &sysent[code&0177];
        if (code > 63)
                opc -= 2;
        callp = &sysent[code&0177];