Mac OS 9
Retrace.h
Go to the documentation of this file.
1 
19 #ifndef __RETRACE__
20 #define __RETRACE__
21 
22 #ifndef __MACTYPES__
23 #include <MacTypes.h>
24 #endif
25 
26 #ifndef __OSUTILS__
27 #include <OSUtils.h>
28 #endif
29 
30 #if PRAGMA_ONCE
31 #pragma once
32 #endif
33 
34 #ifdef __cplusplus
35 extern "C"
36 {
37 #endif
38 
39 #if PRAGMA_IMPORT
40 #pragma import on
41 #endif
42 
43 #if PRAGMA_STRUCT_ALIGN
44 #pragma options align = mac68k
45 #elif PRAGMA_STRUCT_PACKPUSH
46 #pragma pack(push, 2)
47 #elif PRAGMA_STRUCT_PACK
48 #pragma pack(2)
49 #endif
50 
51  typedef struct VBLTask VBLTask;
52  typedef VBLTask *VBLTaskPtr;
53  typedef CALLBACK_API_REGISTER68K(void, VBLProcPtr, (VBLTaskPtr vblTaskPtr));
54  typedef REGISTER_UPP_TYPE(VBLProcPtr) VBLUPP;
55  struct VBLTask
56  {
57  QElemPtr qLink;
58  short qType;
59  VBLUPP vblAddr;
60  short vblCount;
61  short vblPhase;
62  };
63 
64 #if CALL_NOT_IN_CARBON
73  VBLUPP
74  NewVBLUPP(VBLProcPtr userRoutine);
75 #if !OPAQUE_UPP_TYPES
76  enum
77  {
78  uppVBLProcInfo = 0x00009802
79  }; /* register no_return_value Func(4_bytes:A0) */
80 #ifdef __cplusplus
81  inline VBLUPP NewVBLUPP(VBLProcPtr userRoutine)
82  {
83  return (VBLUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppVBLProcInfo,
84  GetCurrentArchitecture());
85  }
86 #else
87 #define NewVBLUPP(userRoutine) \
88  (VBLUPP) NewRoutineDescriptor((ProcPtr)(userRoutine), uppVBLProcInfo, \
89  GetCurrentArchitecture())
90 #endif
91 #endif
92 
101  void
102  DisposeVBLUPP(VBLUPP userUPP);
103 #if !OPAQUE_UPP_TYPES
104 #ifdef __cplusplus
105  inline void DisposeVBLUPP(VBLUPP userUPP)
106  {
107  DisposeRoutineDescriptor((UniversalProcPtr)userUPP);
108  }
109 #else
110 #define DisposeVBLUPP(userUPP) DisposeRoutineDescriptor(userUPP)
111 #endif
112 #endif
113 
122 #if TARGET_OS_MAC && TARGET_CPU_68K && !TARGET_RT_MAC_CFM
123 #pragma parameter InvokeVBLUPP(__A0, __A1)
124 #endif
125  void
126  InvokeVBLUPP(VBLTaskPtr vblTaskPtr, VBLUPP userUPP);
127 #if !OPAQUE_UPP_TYPES && \
128  (!TARGET_OS_MAC || !TARGET_CPU_68K || TARGET_RT_MAC_CFM)
129 #ifdef __cplusplus
130  inline void InvokeVBLUPP(VBLTaskPtr vblTaskPtr, VBLUPP userUPP)
131  {
132  CALL_ONE_PARAMETER_UPP(userUPP, uppVBLProcInfo, vblTaskPtr);
133  }
134 #else
135 #define InvokeVBLUPP(vblTaskPtr, userUPP) \
136  CALL_ONE_PARAMETER_UPP((userUPP), uppVBLProcInfo, (vblTaskPtr))
137 #endif
138 #endif
139 
140 #endif /* CALL_NOT_IN_CARBON */
141 
142 #if CALL_NOT_IN_CARBON || OLDROUTINENAMES
143 /* support for pre-Carbon UPP routines: New...Proc and Call...Proc */
144 #define NewVBLProc(userRoutine) NewVBLUPP(userRoutine)
145 #define CallVBLProc(userRoutine, vblTaskPtr) \
146  InvokeVBLUPP(vblTaskPtr, userRoutine)
147 #endif /* CALL_NOT_IN_CARBON */
148 
149 #if CALL_NOT_IN_CARBON
150 
168  while (qep != 0)
169  {
170  printf("Task at %lx has %d ticks to go\n", qep, qep->vblCount);
171  qep = qep->qLink;
172  }
173  </ pre>
174  * \copyright THINK Reference © 1991 - 1992 Symantec Corporation
175  * \non_carbon_cfm in InterfaceLib 7.1 and
176  later
177  * \carbon_lib not available * \mac_os_x not available *
178  /
179  QHdrPtr
180  GetVBLQHdr(void);
181 
215 #if TARGET_OS_MAC && TARGET_CPU_68K && !TARGET_RT_MAC_CFM
216 #pragma parameter __D0 SlotVInstall(__A0, __D0)
217 #endif
218  OSErr
219  SlotVInstall(QElemPtr vblBlockPtr, short theSlot);
220 
252 #if TARGET_OS_MAC && TARGET_CPU_68K && !TARGET_RT_MAC_CFM
253 #pragma parameter __D0 SlotVRemove(__A0, __D0)
254 #endif
255  OSErr
256  SlotVRemove(QElemPtr vblBlockPtr, short theSlot);
257 
277 #if TARGET_OS_MAC && TARGET_CPU_68K && !TARGET_RT_MAC_CFM
278 #pragma parameter __D0 AttachVBL(__D0)
279 #endif
280  OSErr
281  AttachVBL(short theSlot);
282 
310 #if TARGET_OS_MAC && TARGET_CPU_68K && !TARGET_RT_MAC_CFM
311 #pragma parameter __D0 DoVBLTask(__D0)
312 #endif
313  OSErr
314  DoVBLTask(short theSlot);
315 
365 #if TARGET_OS_MAC && TARGET_CPU_68K && !TARGET_RT_MAC_CFM
366 #pragma parameter __D0 VInstall(__A0)
367 #endif
368  OSErr
369  VInstall(QElemPtr vblTaskPtr);
370 
392 #if TARGET_OS_MAC && TARGET_CPU_68K && !TARGET_RT_MAC_CFM
393 #pragma parameter __D0 VRemove(__A0)
394 #endif
395  OSErr
396  VRemove(QElemPtr vblTaskPtr);
397 
398 #endif /* CALL_NOT_IN_CARBON */
399 
400 #if PRAGMA_STRUCT_ALIGN
401 #pragma options align = reset
402 #elif PRAGMA_STRUCT_PACKPUSH
403 #pragma pack(pop)
404 #elif PRAGMA_STRUCT_PACK
405 #pragma pack()
406 #endif
407 
408 #ifdef PRAGMA_IMPORT_OFF
409 #pragma import off
410 #elif PRAGMA_IMPORT
411 #pragma import reset
412 #endif
413 
414 #ifdef __cplusplus
415 }
416 #endif
417 
418 #endif /* __RETRACE__ */
419 * /*/*/ * /*/*/ * /
printf("First vcb is at = %lx\n", qhp->qHead)
Obtain pointer to the volume control block queue header.
Basic Macintosh data types.
void DisposeRoutineDescriptor(UniversalProcPtr theUPP)
UniversalProcPtr NewRoutineDescriptor(ProcPtr theProc, ProcInfoType theProcInfo, ISAType theISA)
OS Utilities Interfaces.
VBLUPP NewVBLUPP(VBLProcPtr userRoutine)
void DisposeVBLUPP(VBLUPP userUPP)
OSErr SlotVInstall(QElemPtr vblBlockPtr, short theSlot)
OSErr VInstall(QElemPtr vblTaskPtr)
OSErr VRemove(QElemPtr vblTaskPtr)
OSErr DoVBLTask(short theSlot)
OSErr AttachVBL(short theSlot)
void InvokeVBLUPP(VBLTaskPtr vblTaskPtr, VBLUPP userUPP)
OSErr SlotVRemove(QElemPtr vblBlockPtr, short theSlot)
typedef CALLBACK_API_REGISTER68K(void, SIInterruptProcPtr,(SPBPtr inParamPtr, Ptr dataBuffer, short peakAmplitude, long sampleSize))
typedef REGISTER_UPP_TYPE(HighHookProcPtr) HighHookUPP
Definition: OSUtils.h:131
Definition: OSUtils.h:154
Definition: Retrace.h:56