[comp.sys.mac.programmer] doing real work at interrupt // Notification Manager

peirce@outpost.UUCP (Michael Peirce) (11/03/90)

In article <25483@dartvax.Dartmouth.EDU>, kurash@quimby.dartmouth.edu (Mark Valence) writes:
> 
> I think what you are looking for is the Notification
> Manager.  The routines _NMInstall and _NMRemove are
> both accessible during interrupt time, 

This is how it's _suppose_ to work.  Unfortunately, NMInstall calls
at interrupt level can cause some nice bombs with the current system
software.  

I was asking DTS another question about the Notification Manager and
in the reply they said something like: "and by the way, don't call
NMInstall from interrupt level - it causes crashes sometimes.  Sorry."

That's it, no idea when it might be fixed or that it really seems
to make the NM a lot less useful!  I HAD been getting some random
crashes when I used NMInstall at interrupt time, but I thought it was
just some lurking bug.  I guess it was a lurking bug, but not mine...

So what is a well meaning programmer to do without NMINstall at interrupt
time.  The only thing I can think off it to patch System Task and
have my interrupt code set flags to tell the patch to do a NMInstall...

{This reminds me of the first couple of revs for the Time Manager
that really didn't work either...)

sigh :-(

-- michael peirce



--  Michael Peirce         --   {apple,decwrl}!claris!outpost!peirce
--  Peirce Software        --   Suite 301, 719 Hibiscus Place
--  Macintosh Programming  --   San Jose, California 95117
--         and Consulting  --   (408) 244-6554

zellers@prisoner.Eng.Sun.COM (If they build it) (11/04/90)

In article <b.D2QT9S@outpost.UUCP> kurash@quimby (Mark Valence) writes:
>So what is a well meaning programmer to do without NMINstall at interrupt
>time.  The only thing I can think off it to patch System Task and
>have my interrupt code set flags to tell the patch to do a NMInstall...
I like to set flags which I read from a 'jGNEFilter' daisy chain - it's
a nice place to patch, since it's called at a very stable time.
--
--------------------------------------------------------------------------
Steve Zellers 					  zellers@prisoner.sun.com
"And that's why we have to have computers, because man, nobody's perfect."

kurash@carr.dartmouth.edu (Mark Valence) (11/06/90)

In article <2038@exodus.Eng.Sun.COM> zellers@prisoner.Eng.Sun.COM (If they build it) writes:
>In article <b.D2QT9S@outpost.UUCP> kurash@quimby (Mark Valence) writes:
>>So what is a well meaning programmer to do without NMINstall at interrupt
>>time.  The only thing I can think off it to patch System Task and
>>have my interrupt code set flags to tell the patch to do a NMInstall...

No, in fact I didn't write that.  It was written by Michael Pierce, who
pointed out that NMInstall is unstable.  I must say, that changes things.
I have always been hesitant about patching important traps (recall the
discussion concerning patching ExitToShell and similar traps 'globally'),
due to MultiFinder's intrusiveness.  I might first write a driver that
mimicked the Notification manager, install it at INIT time when my
interrupt code is installed, and service these 'notification requests' at
SystemTask (dNeedTime).

>I like to set flags which I read from a 'jGNEFilter' daisy chain - it's
>a nice place to patch, since it's called at a very stable time.
>--
>--------------------------------------------------------------------------
>Steve Zellers 					  zellers@prisoner.sun.com
>"And that's why we have to have computers, because man, nobody's perfect."

You said it, not me :)

Mark.

d88-jwa@dront.nada.kth.se (Jon W{tte) (11/11/90)

In article <2038@exodus.Eng.Sun.COM> zellers@prisoner.Eng.Sun.COM (If they build it) writes:
>I like to set flags which I read from a 'jGNEFilter' daisy chain - it's
>a nice place to patch, since it's called at a very stable time.

It's also a very, very discouraged way of doing things, since
it's supposed to go away any day now...

A patch to _OSEvent should be safer, I think.

Or _SystemTask, as the original author said, since it's almost
always called together with _OSEvent...

						h+
h+@nada.kth.se
"Moof!(tm)"