Talk:Asynchronous System Trap

Latest comment: 6 years ago by Jeh in topic Unclear description

Unclear description edit

Can somebody who is familiar with OpenVMS please expand on this part:

  • There are no "signal codes" assigned to ASTs: instead of assigning a handler to a signal code and raising that code, the AST is specified directly by its address. This allows any number of ASTs to be pending at once (subject to process quotas).

In this form is not very clear what it is,how the program uses it and how other programs/the user/the kernel/etc can "invoke"(I don't know the correct terminology or even if it is the correct model)an AST.I've tried to google it,but the official documentation is not very clear on this aspect.Maybe put a example snippet of program A setting a AST and program B "invoking" that AST Pasqui23(talk-please understand,my native language is not english) 11:52, 4 March 2014 (UTC)Reply

They actually aren't a cross-process mechanism. Various APIs, in particular $QIO. $QIO allows an optional argument that is the address of an AST function within the process's address space. When the IO completes the OS queues the AST to the thread, and the AST is executed in the thread's context, sort of like a thread within a thread. The $QIO call (and other calls that allow declaration of ASTs) also allows an "ast parameter" argument that is passed through to the corresponding instance of the AST. This can be a simple numeric status or a pointer to a data structure, etc. Jeh (talk) 02:07, 15 October 2017 (UTC)Reply