Subject: Snapshot Report - July 1st tar_files
To: None <current-users@NetBSD.ORG>
From: Alistair G. Crooks <agc@uts.amdahl.com>
List: current-users
Date: 07/05/1995 07:57:00
Thanks for all the feedback last week, folks. All were positive, so
I'll keep doing my best.

This week (July 1st tar_files):

1. options ISO in the kernel still won't compile.
(compilation fails in sys/netiso/tuba_usrreq.c)

2. before you make in /usr/src/share/termcap, copy termcap.src to termcap
(or to obj/termcap if you use the object directory hierarchy), otherwise
you won't get the new termcap file. You'll get warnings about duplicate
definitions during the cap_mkdb phase, but it'll work.

3. It seems Torsten Duwe has fixed the com.c problem:

>         I found the flaw in the state machine: nothing changes the state of
> the com from "waiting on last char(s)" to "done". If I understood the code
> right the transmitter empty interrupt should do this calling comstart(),
> which doesn't work in v1.60. Here is the fix:
> 
> --- src/sys/dev/isa/com.c       Wed Jun 28 09:12:32 1995
> +++ /home/inf4/duwe/com.c       Tue Jul  4 01:48:51 1995
> @@ -664,8 +664,7 @@
>         if ((tp->t_cflag & CRTSCTS) != 0 &&
>             (sc->sc_msr & MSR_CTS) == 0)
>                 goto out;
> -       if (tp->t_outq.c_cc == 0)
> -               goto out;
> +       if (tp->t_outq.c_cc) {
>         tp->t_state |= TS_BUSY;
>         if (sc->sc_hwflags & COM_HW_FIFO) {
>                 u_char buffer[16], *cp = buffer;
> @@ -675,6 +674,7 @@
>                 } while (--n);
>         } else
>                 outb(iobase + com_data, getc(&tp->t_outq));
> +       }
>         if (tp->t_outq.c_cc <= tp->t_lowat) {
>                 if (tp->t_state & TS_ASLEEP) {
>                         tp->t_state &= ~TS_ASLEEP;
> 
> (I haven't re-indented the newly-braced region for brevity's sake)
[I'm just trying this out now, but I've seen one report that it works - agc].
An indented diff for the above follows:

*** com.c.old   Wed Jul  5 15:51:52 1995
--- com.c       Wed Jul  5 15:53:26 1995
***************
*** 664,680 ****
        if ((tp->t_cflag & CRTSCTS) != 0 &&
            (sc->sc_msr & MSR_CTS) == 0)
                goto out;
!       if (tp->t_outq.c_cc == 0)
!               goto out;
!       tp->t_state |= TS_BUSY;
!       if (sc->sc_hwflags & COM_HW_FIFO) {
!               u_char buffer[16], *cp = buffer;
!               int n = q_to_b(&tp->t_outq, cp, sizeof buffer);
!               do {
!                       outb(iobase + com_data, *cp++);
!               } while (--n);
!       } else
!               outb(iobase + com_data, getc(&tp->t_outq));
        if (tp->t_outq.c_cc <= tp->t_lowat) {
                if (tp->t_state & TS_ASLEEP) {
                        tp->t_state &= ~TS_ASLEEP;
--- 664,680 ----
        if ((tp->t_cflag & CRTSCTS) != 0 &&
            (sc->sc_msr & MSR_CTS) == 0)
                goto out;
!       if (tp->t_outq.c_cc) {
!               tp->t_state |= TS_BUSY;
!               if (sc->sc_hwflags & COM_HW_FIFO) {
!                       u_char buffer[16], *cp = buffer;
!                       int n = q_to_b(&tp->t_outq, cp, sizeof buffer);
!                       do {
!                               outb(iobase + com_data, *cp++);
!                       } while (--n);
!               } else
!                       outb(iobase + com_data, getc(&tp->t_outq));
!       }
        if (tp->t_outq.c_cc <= tp->t_lowat) {
                if (tp->t_state & TS_ASLEEP) {
                        tp->t_state &= ~TS_ASLEEP;

4.  I tried installing some of the i386/1.0 packages, and found a few
funnies:

a) The pdksh package references a manual page in the +CONTENTS file
which isn't in the tar archive. (Hi, Simon!)

b) the gcc-2.6.3 package puts a g++ executable into the bin directory,
which seems unable to exec the cc1plus executable that it needs. Either
the g++ file needs to be deleted from the package, or cc1plus needs to
be placed in ../libexec


And notable changes in the 1st July tar_files:

> mk files
update lint rules, but keep linting disabled
> rpcgen
Always distinguish client and server worker routines (used
to be the case only when compiling in ANSI (`-C') mode).
> rpcgen
Conform to rpcgen generated names and prototypes.
The server-side worker routines now have "_svc" appended to avoid
conflict with client-side prototypes.
> sup
- Don't use system(3) to fork processes. It is a big security hole.
- Encode the filenames in the scan files using strvis(3), so filenames
  that contain newlines or other weird characters don't break the scanner.
> sys/compat/common
- Extracted all compat routines from the kern directory and moved here.
- Created compat_util.c and compat_util.h to be used by the compatibility
  modules, so they don't duplicate the same code.
- Added prototypes to the stackgap allocation routines.
> Build libkern in the kernel compilation directory, like libcompat.
> bsd.lib.mk
fix more possibly-empty 'rm's, here.  kill long-dead {profiled,...}/* cleans
> `arch`/include
define __BDEVSW_DUMP_OLD_TYPE for ports where it's true.
> `arch`/machdep
use new-style block device dump functions.  (most intelligence here now.)
> i386/isa/clock.c
check CMOS time against base time, for sanity.  if CMOS time invalid,
warn user and user base time.  if base time < 1985, warn the user.
if base time 5 or more years different than clock time, warn user,
and if it's base time that's greater, use it.  (The latter case is
handy if one has a machine in which the CMOS battery is dead... I do.)
> i386/locore.s
define and set PTDpaddr (pyhs addr of kernel PTD)
> src/share/termcap
Updated to latest termcap source
> sys/arch/sparc/dev
SMD disk driver, from Chuck Cranor. 
> sys/miscfs/union
Fix null VP references (pr 1124) - from John Kohl
> sys/compat/svr4
Fixes for Solaris-2.4/sparc dynamically linked binaries.
We can now run them, but:

1. setcontext() causes a panic so binaries that receive signals
   crash the machine [something is wrong with the register setup].
   sleep 10 ==
    Watchdog reset
    Data Access Exception
    Type  help  for more information
    ok

2. csh says "unknown software trap a7".
3. ls gives us a bus error.
4. ldd works :-)

But I solved the problem that had been bothering me for weeks :-)
> sys/arch/alpha/isa
ISA and PCI support for DEC AlphaStations
> gnu.usr.bin/ld
Add `-R' to record internal library search paths.
Usage note: `cc -Xlinker -R<path>'.

[Note that the Solaris-2.4/sparc binary emulation gets an awful lot better
at the beginning of this week. - agc]

For those of you interested in dosemu, jtk@kolvir.blrc.ma.us (John Kohl) says:

> I sup'ed a new source tree this evening, fixed the bug in vfs_conf.c
> (just add #include <sys/fcntl.h>) and rebuilt a kernel to verify that my
> dosemu still works.  It does.
> 
> I've put updated kernel/libarch/gdb/fdformat source replacements into
> ftp://sipb.mit.edu/pub/netbsd/dosemu/netbsd-src-current.950703.tar.gz
> with instructions alongside that as README.
> 
> I'm off-net for the rest of the week.  If you have problems, hold off
> until Saturday.

That's all folks,
Alistair
--
Alistair G. Crooks (agc@uts.amdahl.com)                	   +44 125 234 6377
Amdahl European HQ, Dogmersfield Park, Hartley Wintney, Hants RG27 8TE, UK.
[These are only my opinions, and certainly not those of Amdahl Corporation]