[fa.info-vax] Delivering ASTS to a specific process

info-vax (12/22/82)

>From G.RONNIE@MIT-EECS@MIT-MC  Tue Dec 21 21:07:22 1982
Mail-From: ARPANET host SANDIA rcvd at 21-Dec-82 0458-PST
Mail-From: ARPANET site MIT-MC rcvd at 21-Dec-82 0559-MST
Sender: G.RONNIE@MIT-EECS@MIT-MC
To: info-vax@SANDIA
Cc: g.ronnie@MIT-EECS@MIT-MC
Reply-To: ronnie@ml
Remailed-Date: 21 Dec 1982 1051-PST
Remailed-From: the tty of Geoffrey S. Goodfellow  <Geoff5 at SRI-CSL>
Remailed-To: Info-VAX@SRI-CSL: ;

Does anyone have a procedure already written to deliver a specified
ast to a specified PID? $DCLAST only delivers it to your own PID.


						Thanks,
						Ronnie
-------

info-vax (12/22/82)

>From KYAP@DEC-MARLBORO  Wed Dec 22 02:39:48 1982
Mail-From: ARPANET host SANDIA rcvd at 21-Dec-82 1716-PST
Mail-From: ARPANET site DEC-MARLBORO rcvd at 21-Dec-82 1816-MST
To: ronnie@mit-eecs@MIT-MC
Cc: info-vax@SANDIA
Remailed-Date: 21 Dec 1982 1730-PST
Remailed-From: the tty of Geoffrey S. Goodfellow  <Geoff5 at SRI-CSL>
Remailed-To: Info-VAX@SRI-CSL: ;

Yes and no.  Program "P" distributed on one of the DECUS
Symposia tapes has routines to queue "special" Kernal mode ASTs to
arbitrary processes.  That routine was mostly plagerized (sp?)
out of the SDA program.  I think it was a Spring DECUS tape, probably
the Spring '81 tape (funny, you'd think I'd remember when I submitted it.
But then again I've really always been a TOPS-10 hacker).
	That was written under 2.5 but I'm guessing the "major"
system routine it needs hasn't changed much (I know the symbol for it still
exists), although you'd have to check the sources to be sure.
The routine was SCH$QAST, I think.  To queue other kinds of ASTs other
than the "special" Kernal type you can either:
	1.  re-arrange the flags in the AST control block you
	    hand to SCH$QAST so that the desired type of AST is
	    queued.  I seem to recall there  are problems here in
	    Kernal mode (i.e. a Kernal mode normal AST), and if
	    you're not in Kernal, you may not be able to de-allocate
	    the non-paged dynamic pool block you will have had to allocate to
	    queue the AST with.  You might be able to get the AST
	    queuer itself to delete it however, I don't remember the details.

	2.  (safer) Make the "special" Kernal AST queue the appropriate AST to
	    the victim process; you are then running in his context which
	    also tends to make a lot of other things a lot simpler.

	I'll bet this sounds either very confusing, very scatterbrained
(or both) or is probably not what you wanted.  Good luck, though.  I can
perhaps explain better if you care to elaborate on what else you might
like to know (if my memory holds out). -kby
   --------
   --------