[mod.unix] Unix Technical Digest V1 #20

Ron Heiby (The Moderator) <unix-request@cbosgd.UUCP> (03/14/85)

Unix Technical Digest       Thu, 14 Mar 85       Volume  1 : Issue  20

Today's Topics:
                     accessing libm.a via pascal
                Boot problems w/ new kernal and uda50
               ctype_.o in /lib/libc.a wrong in 4.2BSD?
                Easy 50 ips on TU80 (4.2bsd /etc/dump)
----------------------------------------------------------------------

Date: 12 Mar 85 03:19:20 GMT
From: gr@watcgl.UUCP (Gr Teaching Package)
Subject: accessing libm.a via pascal

Students in one of my courses are using Pascal under 
Berkeley 4.2.  They need to access several
functions in the math library, but there doesn't seem
to be an efficient, warning free technique.

It seems that ``pc'' knows about the ``libm.a'' functions 
because it gives a duplicate definition warning if 
one defines such a function as external as is normally done 
for user-defined, external procedures.  In spite of the warning, 
the math routine is linked correctly.

If the external definition is omitted, ``pc'' generates
an error message about the undefined function.

I know of 2 methods to get around the warning:
1) Call an intermediate C function, ``foo'' that 
	calls the appropriate math library routine.
2) Simulate the math routine in Pascal.  Unfortunately
	this won't work for a function like ``pow(x,y)''
	because its internal code sets a PSW flag (via an
	asm directive) to ignore underflow (generated when 
	0<x<1 and y is quite large).

Is there a clean, efficient solution to this
problem, or will we have to live with the
warning messages?  Why does ``pc'' check ``libm.a''
definitions when it seemingly won't let the user 
call its functions directly?

------------------------------

Date: 8 Mar 85 20:44:31 GMT
From: root@ncsu.UUCP (The Deity)
Subject: Boot problems w/ new kernal and uda50

	We have 3 brand new ra81 disc drives that were just installed
on our vax11/780 (4.2bsd) here at NCSU.  They were installed on uba0
and the new kernal compiles just fine, HOWEVER, when we attempt to boot
on it, we get the following messages:
-----------------------------------------------------------
>>>BOOT ANY

	CPU HALTED
	INIT SEQ DONE
	LOAD DONE, 00004C00 BYTES LOADED
Boot
: hp(0,0)vmunix.new
176460+62512+38416 start 0x11a4

	?INT-STK INVLD
	HALTED AT 8000CCCE

>>>
-----------------------------------------------------------
	This has caused us considerable problems, and we have been
unable to trace down the problem.  We have been told that the error
message is Interrupt-Stack Invalid.  The uda50 for the ra81's is on
the front end of uba0, and we also have a digital sound system
installed (if that makes any difference).  
	If you have ever seen or heard of anything like this please
write back quickly (and send a phone number), or call me at home 
(919) 872-0494 over the weekend (collect, if necessary).

	Any help would be appreciated.  As usual, thanks ahead of time.

	- jamie evans - decvax!mcnc!ncsu!jle - off: (919) 737-2336

------------------------------

Date: 11 Mar 85 16:37:32 GMT
From: dbr@cybvax0.UUCP (Douglas Robinson)
Subject: ctype_.o in /lib/libc.a wrong in 4.2BSD?

We have just noticed that the ascii 'SP' (or space, octal 040) is listed
as a punctuation character under 4.2BSD.  I checked with a V7 compatible
system and found it to be listed as only a 'isspace' character NOT 'ispunct'.

I strongly disagree to labelling 'SP' as a punctuation character, but
before patching ctype_.o I would like to get some opinions.  Please mail
to me.  I will summarize... Please - most importantly: will removing this
from the list of punctuation characters break anything under 4.2BSD???

Sorry if this has been discussed before... we don't have enough space to
archive discussion newsgroups.
-- 
Doug Robinson		Jobs don't kill programmers... programmers kill jobs!
Cybermation, Inc.	617/492-8810
377 Putnam Avenue
Cambridge, MA 02139 (USA)

...!{mit-eddie, harvard, mirror}!cybvax0!dbr

------------------------------

Date: 5 Feb 85 08:36:56 GMT
From: Don Speck <speck@cit-vax.ARPA>
Subject: Easy 50 ips on TU80 (4.2bsd /etc/dump)

    A TU80 will switch into 25 ips streaming mode iff it gets at least
15 back-to-back writes, and will then try to switch into 100 ips mode.

    Following is an easy patch to get 4.2bsd /etc/dump to stream a TU80
at 100 ips, every other second.  It streams the tape for a second, then
shakes the disk for a second, streams, shakes, ... giving an average
throughput of about 50 ips.  This was on a 750 with FPA, some raw I/O
efficiency patches (coming soon), and kernel profiling compiled in.
It will do no good on a 730 or a start/stop drive.  Your speed and
line numbers may vary.
						Don

diff /usr/src/etc/dump/dumptape.c dumptu80.c
22c22,24
<	tblock = (char (*)[TP_BSIZE])malloc(writesize);
---
> #define CLUSTER 15	/* # of back-to-back writes to get TU80 streaming */
>	ntrec *= CLUSTER;	/* -- BEWARE -- when changing dumptape.c */
>	tblock = (char (*)[TP_BSIZE])malloc(CLUSTER*writesize);
69,71c71,73
<
<	trecno = 0;
<	if (write(to, tblock[0], writesize) != writesize){
---
>	char *wp = tblock[0];
>	for (trecno=CLUSTER; --trecno>=0; wp+=writesize)
>	    if (write(to, wp, writesize) != writesize){
99,100c101,103
<	asize += writesize/density;
<	asize += 7;
---
>	trecno = 0;
>	asize += CLUSTER*writesize/density;
>	asize += CLUSTER*10;		/* TU80's usually stretch out IRG's */

------------------------------

End of Unix Technical Digest
******************************
-- 
Ronald W. Heiby / ihnp4!{wnuxa!heiby|wnuxb!netnews}
AT&T Information Systems, Inc.
Lisle, IL  (CU-D21)