|
This Technical Note discusses known errors and omissions in Inside Macintosh: Processes.
[Oct 01 1994]
|
Topics
- Correction to Figure 1-1 October 1994
- Clarification of Installing Persistent VBL Tasks October 1994
- Clarification of
GetVBLQHdr October 1994
- Clarification of Interrupt Priorities During VBL Tasks October 1994
- Correction to Listing 8-1 October 1994
- Correction to Glossary Entry October 1994
Back to top Chapter 1 - Introduction to Processes and Tasks
Correction to Figure 1-1
Page 1-4, The Cooperative Multitasking Environment
Figure 1-1 shows the wrong application icon in the menu bar. The SurfWriter
icon should be in the menu bar labeling the application menu, not the Finder icon.
Back to top Chapter 4 - Vertical Retrace Manager
Clarification of Installing Persistent VBL Tasks
Page 4-20, Installing a Persistent VBL Task
The description of installing a persistent VBL task is partly incorrect.
The documentation states that "if you want to install a persistent system-based
VBL task, you need to load its VBL task record into the system partition." This
is incorrect, and it is not what is demonstrated in Listing 4-15. Listing 4-15
shows how to put the VBL task code (or enough of it to fool the Vertical
Retrace Manager) into the system partition.
However, Listing 4-15 needs a call to FlushInstructionCache added
immediately before the call to VInstall . In addition, it is preferable
to code the error-handling part of Listing 4-15 like this:
SysHeapPtr := NewPtrSys(kJMPSize);
IF SysHeapPtr = NIL THEN
BEGIN
InstallPersistentVBL := MemError;
Exit(InstallPersistentVBL );
END;
|
Clarification of GetVBLQHdr
Page 4-28
GetVBLQHdr returns a pointer to the head of the VBL queue. One of
the bits of the qFlags field of the VBL queue header indicates whether
a VBL task is currently executing. The correct bit is bit 6 of the first byte
of the qFlags field, or bit 14 of the entire two-byte field. Versions
of A/UX prior to 3.1 incorrectly used bit 6 of the entire two-byte field.
Back to top
Chapter 6 - Deferred Task Manager
Clarification of Interrupt Priorities During VBL Tasks
Pages 6-3, 6-5, About the Deferred Task Manager
The documentation states "If the current application is then interrupted by a
vertical retrace interrupt, the interrupt priority is set to 1 during the servicing of
the interrupt and restored to 0 upon completion." This is not strictly correct. T
he Vertical Retrace Manager actually restores the interrupt mask to 0 before
running VBL tasks. As a result, VBL tasks can be interrupted by future
level-1 interrupts, although a VBL task cannot interrupt
another VBL task.
On page 6-5, the documentation states "Suppose that your application installs
and activates a Time Manager task, which is triggered by level-2 interrupts."
Actually, Time Manager interrupts are level-1 interrupts.
Also on page 6-5, there is occasional mention of the status register being
restored to 0. In fact, only three bits of the status register (the processor
priority level) are restored to 0. All other bits are unchanged.
Back to top Chapter 8 - Shutdown Manager
Correction to Listing 8-1
Page 8-8, Sending a Shutdown or Restart Event
Listing 8-1 on page 8-8 contains several errors. The constant
kFinderSig should be defined to be 'MACS' . In addition, that
constant cannot be passed directly to the AECreateDesc function.
Instead, you must declare a variable of type OSType and assign
kFinderSig to it, as follows:
CONST
kFinderSig = 'MACS';
VAR
...
signature: OSType
BEGIN
signature := kFinderSig;
myErr := AECreateDesc(typeApplSignature, @signature, ...);
...
|
Back to top Glossary
Correction to Glossary Entry
Page GL-2
The entry interrupt handle should be interrupt handler.
Back to top References
Inside Macintosh: Processes
Back to top
Downloadables
|
Acrobat version of this Note (40K)
|
Download
|
Back to top
|