🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: comp.sys.amiga.tech
Article #9690

Re: Need help with exception handling

#9690
From: Matt Dillon
Date: Sun, 04 Sep 1988 10:14
34 lines
1729 bytes
	This is an easy one!  The problem is that C.LIB is NOT REENTRANT.

	While the Amiga may be a multitasking machine, this does not mean 
that linked-in libraries for a given task are reentrant... the run-time
libraries certainly are (in most cases), but most of the routines in the 
link libraries are not.

	Specifically, STDIO is not reentrant.  Of the run-time libraries,
the DOS.LIBRARY is not reentrant for a SPECIFIC PROCESS... i.e. many 
different processes can call it simultaniously, but a given process cannot
be in the middle of a DOS command, interrupt itself, and send another
DOS command in the interrupt handler.

	So, your problem is two fold:  (1) STDIO is not reentrant and you
are interrupting a printf() with the printf() in the exception handler, and
(2) DOS is not reentrant on a per-process basis and STDIO calls DOS. 

					-Matt

:        while (!aborted) {
:		printf("%d\n",++i);  <----------- Adding this brings the guru	
:	}

:hdlr() {
:/* Note that even AmigaDOS stuff can be done from here */
:        printf("Exception %lx   Control-",cursigs);
:        if (cursigs & SIGBREAKF_CTRL_C) {printf("C\n"); aborted=1;}
:        if (cursigs & SIGBREAKF_CTRL_D) printf("D\n");
:        if (cursigs & SIGBREAKF_CTRL_E) printf("E\n");
:        if (cursigs & SIGBREAKF_CTRL_F) printf("F\n");
:}

	
Technical Details
Message-ID: <8809041014.AA26988@cory.Berkeley.EDU>
Path: arc1-ca.pugleaf.net!utzoo!utgpu!water!watmath!clyde!att!osu-cis!tut.cis.ohio-state.edu!rutgers!ucsd!ucbvax!CORY.BERKELEY.EDU!dillon

Show Full Headers
Complete Article Headers
Path: arc1-ca.pugleaf.net!utzoo!utgpu!water!watmath!clyde!att!osu-cis!tut.cis.ohio-state.edu!rutgers!ucsd!ucbvax!CORY.BERKELEY.EDU!dillon
From: dillon@CORY.BERKELEY.EDU (Matt Dillon)
Newsgroups: comp.sys.amiga.tech
Subject: Re: Need help with exception handling
Message-ID: <8809041014.AA26988@cory.Berkeley.EDU>
Date: 4 Sep 88 10:14:32 GMT
Sender: daemon@ucbvax.BERKELEY.EDU
Lines: 34