Team Fortress 2 Source Code as on 22/4/2020
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

1386 lines
32 KiB

  1. /*
  2. File: DriverServices.h
  3. Contains: Driver Services Interfaces.
  4. Version: QuickTime 7.3
  5. Copyright: (c) 2007 (c) 1985-2001 by Apple Computer, Inc., all rights reserved
  6. Bugs?: For bug reports, consult the following page on
  7. the World Wide Web:
  8. http://developer.apple.com/bugreporter/
  9. */
  10. #ifndef __DRIVERSERVICES__
  11. #define __DRIVERSERVICES__
  12. #ifndef __CONDITIONALMACROS__
  13. #include <ConditionalMacros.h>
  14. #endif
  15. #ifndef __MACTYPES__
  16. #include <MacTypes.h>
  17. #endif
  18. #ifndef __MACERRORS__
  19. #include <MacErrors.h>
  20. #endif
  21. #ifndef __MACHINEEXCEPTIONS__
  22. #include <MachineExceptions.h>
  23. #endif
  24. #ifndef __DEVICES__
  25. #include <Devices.h>
  26. #endif
  27. #ifndef __DRIVERSYNCHRONIZATION__
  28. #include <DriverSynchronization.h>
  29. #endif
  30. #ifndef __NAMEREGISTRY__
  31. #include <NameRegistry.h>
  32. #endif
  33. #if PRAGMA_ONCE
  34. #pragma once
  35. #endif
  36. #ifdef __cplusplus
  37. extern "C" {
  38. #endif
  39. #if PRAGMA_IMPORT
  40. #pragma import on
  41. #endif
  42. #if PRAGMA_STRUCT_ALIGN
  43. #pragma options align=power
  44. #elif PRAGMA_STRUCT_PACKPUSH
  45. #pragma pack(push, 2)
  46. #elif PRAGMA_STRUCT_PACK
  47. #pragma pack(2)
  48. #endif
  49. /******************************************************************
  50. *
  51. * Previously in Kernel.h
  52. *
  53. ******************************************************************/
  54. /* Kernel basics*/
  55. typedef struct OpaqueIOPreparationID* IOPreparationID;
  56. typedef struct OpaqueSoftwareInterruptID* SoftwareInterruptID;
  57. typedef struct OpaqueTaskID* TaskID;
  58. typedef struct OpaqueTimerID* TimerID;
  59. /* Tasking*/
  60. typedef UInt32 ExecutionLevel;
  61. enum {
  62. kTaskLevel = 0,
  63. kSoftwareInterruptLevel = 1,
  64. kAcceptFunctionLevel = 2,
  65. kKernelLevel = 3,
  66. kSIHAcceptFunctionLevel = 4,
  67. kSecondaryInterruptLevel = 5,
  68. kHardwareInterruptLevel = 6,
  69. kMPTaskLevel = 7
  70. };
  71. typedef CALLBACK_API_C( void , SoftwareInterruptHandler )(void *p1, void *p2);
  72. typedef CALLBACK_API_C( OSStatus , SecondaryInterruptHandler2 )(void *p1, void *p2);
  73. #define kCurrentAddressSpaceID ((AddressSpaceID) -1)
  74. /* Memory System basics*/
  75. struct LogicalAddressRange {
  76. LogicalAddress address;
  77. ByteCount count;
  78. };
  79. typedef struct LogicalAddressRange LogicalAddressRange;
  80. typedef LogicalAddressRange * LogicalAddressRangePtr;
  81. struct PhysicalAddressRange {
  82. PhysicalAddress address;
  83. ByteCount count;
  84. };
  85. typedef struct PhysicalAddressRange PhysicalAddressRange;
  86. typedef PhysicalAddressRange * PhysicalAddressRangePtr;
  87. /* For PrepareMemoryForIO and CheckpointIO*/
  88. typedef OptionBits IOPreparationOptions;
  89. enum {
  90. kIOMultipleRanges = 0x00000001,
  91. kIOLogicalRanges = 0x00000002,
  92. kIOMinimalLogicalMapping = 0x00000004,
  93. kIOShareMappingTables = 0x00000008,
  94. kIOIsInput = 0x00000010,
  95. kIOIsOutput = 0x00000020,
  96. kIOCoherentDataPath = 0x00000040,
  97. kIOTransferIsLogical = 0x00000080,
  98. kIOClientIsUserMode = 0x00000080
  99. };
  100. typedef OptionBits IOPreparationState;
  101. enum {
  102. kIOStateDone = 0x00000001
  103. };
  104. enum {
  105. kInvalidPageAddress = (-1)
  106. };
  107. struct AddressRange {
  108. void * base;
  109. ByteCount length;
  110. };
  111. typedef struct AddressRange AddressRange;
  112. /* C's treatment of arrays and array pointers is atypical*/
  113. typedef LogicalAddress * LogicalMappingTablePtr;
  114. typedef PhysicalAddress * PhysicalMappingTablePtr;
  115. typedef AddressRange * AddressRangeTablePtr;
  116. struct MultipleAddressRange {
  117. ItemCount entryCount;
  118. AddressRangeTablePtr rangeTable;
  119. };
  120. typedef struct MultipleAddressRange MultipleAddressRange;
  121. /*
  122. Separate C definition so that union has a name. A future version of the interfacer
  123. tool will allow a name (that gets thrown out in Pascal and Asm).
  124. */
  125. struct IOPreparationTable {
  126. IOPreparationOptions options;
  127. IOPreparationState state;
  128. IOPreparationID preparationID;
  129. AddressSpaceID addressSpace;
  130. ByteCount granularity;
  131. ByteCount firstPrepared;
  132. ByteCount lengthPrepared;
  133. ItemCount mappingEntryCount;
  134. LogicalMappingTablePtr logicalMapping;
  135. PhysicalMappingTablePtr physicalMapping;
  136. union {
  137. AddressRange range;
  138. MultipleAddressRange multipleRanges;
  139. } rangeInfo;
  140. };
  141. typedef struct IOPreparationTable IOPreparationTable;
  142. typedef OptionBits IOCheckpointOptions;
  143. enum {
  144. kNextIOIsInput = 0x00000001,
  145. kNextIOIsOutput = 0x00000002,
  146. kMoreIOTransfers = 0x00000004
  147. };
  148. /* For SetProcessorCacheMode*/
  149. typedef UInt32 ProcessorCacheMode;
  150. enum {
  151. kProcessorCacheModeDefault = 0,
  152. kProcessorCacheModeInhibited = 1,
  153. kProcessorCacheModeWriteThrough = 2,
  154. kProcessorCacheModeCopyBack = 3
  155. };
  156. /*
  157. For GetPageInformation
  158. (Note: if kPageInformationVersion fails, try 0 -- old versions of DSL defined kPageInformationVersion as 0)
  159. */
  160. enum {
  161. kPageInformationVersion = 1
  162. };
  163. typedef UInt32 PageStateInformation;
  164. enum {
  165. kPageIsProtected = 0x00000001,
  166. kPageIsProtectedPrivileged = 0x00000002,
  167. kPageIsModified = 0x00000004,
  168. kPageIsReferenced = 0x00000008,
  169. kPageIsLockedResident = 0x00000010, /* held and locked resident*/
  170. kPageIsInMemory = 0x00000020,
  171. kPageIsShared = 0x00000040,
  172. kPageIsWriteThroughCached = 0x00000080,
  173. kPageIsCopyBackCached = 0x00000100,
  174. kPageIsHeldResident = 0x00000200, /* held resident - use kPageIsLockedResident to check for locked state*/
  175. kPageIsLocked = kPageIsLockedResident, /* Deprecated*/
  176. kPageIsResident = kPageIsInMemory /* Deprecated*/
  177. };
  178. struct PageInformation {
  179. AreaID area;
  180. ItemCount count;
  181. PageStateInformation information[1];
  182. };
  183. typedef struct PageInformation PageInformation;
  184. typedef PageInformation * PageInformationPtr;
  185. /* Tasks */
  186. #if CALL_NOT_IN_CARBON
  187. /*
  188. * CurrentExecutionLevel()
  189. *
  190. * Availability:
  191. * Non-Carbon CFM: in DriverServicesLib 1.0 and later
  192. * CarbonLib: not available
  193. * Mac OS X: not available
  194. */
  195. EXTERN_API_C( ExecutionLevel )
  196. CurrentExecutionLevel(void);
  197. /*
  198. * CurrentTaskID()
  199. *
  200. * Availability:
  201. * Non-Carbon CFM: in DriverServicesLib 1.0 and later
  202. * CarbonLib: not available
  203. * Mac OS X: not available
  204. */
  205. EXTERN_API_C( TaskID )
  206. CurrentTaskID(void);
  207. /*
  208. * DelayFor()
  209. *
  210. * Availability:
  211. * Non-Carbon CFM: in DriverServicesLib 1.0 and later
  212. * CarbonLib: not available
  213. * Mac OS X: not available
  214. */
  215. EXTERN_API_C( OSStatus )
  216. DelayFor(Duration delayDuration);
  217. /*
  218. * InPrivilegedMode()
  219. *
  220. * Availability:
  221. * Non-Carbon CFM: in DriverServicesLib 1.0 and later
  222. * CarbonLib: not available
  223. * Mac OS X: not available
  224. */
  225. EXTERN_API_C( Boolean )
  226. InPrivilegedMode(void);
  227. /* Software Interrupts */
  228. /*
  229. * CreateSoftwareInterrupt()
  230. *
  231. * Availability:
  232. * Non-Carbon CFM: in DriverServicesLib 1.0 and later
  233. * CarbonLib: not available
  234. * Mac OS X: not available
  235. */
  236. EXTERN_API_C( OSStatus )
  237. CreateSoftwareInterrupt(
  238. SoftwareInterruptHandler handler,
  239. TaskID task,
  240. void * p1,
  241. Boolean persistent,
  242. SoftwareInterruptID * theSoftwareInterrupt);
  243. /*
  244. * SendSoftwareInterrupt()
  245. *
  246. * Availability:
  247. * Non-Carbon CFM: in DriverServicesLib 1.0 and later
  248. * CarbonLib: not available
  249. * Mac OS X: not available
  250. */
  251. EXTERN_API_C( OSStatus )
  252. SendSoftwareInterrupt(
  253. SoftwareInterruptID theSoftwareInterrupt,
  254. void * p2);
  255. /*
  256. * DeleteSoftwareInterrupt()
  257. *
  258. * Availability:
  259. * Non-Carbon CFM: in DriverServicesLib 1.0 and later
  260. * CarbonLib: not available
  261. * Mac OS X: not available
  262. */
  263. EXTERN_API_C( OSStatus )
  264. DeleteSoftwareInterrupt(SoftwareInterruptID theSoftwareInterrupt);
  265. #endif /* CALL_NOT_IN_CARBON */
  266. #if TARGET_OS_MAC
  267. /* Secondary Interrupts */
  268. #if CALL_NOT_IN_CARBON
  269. /*
  270. * CallSecondaryInterruptHandler2()
  271. *
  272. * Availability:
  273. * Non-Carbon CFM: in DriverServicesLib 1.0 and later
  274. * CarbonLib: not available
  275. * Mac OS X: not available
  276. */
  277. EXTERN_API_C( OSStatus )
  278. CallSecondaryInterruptHandler2(
  279. SecondaryInterruptHandler2 theHandler,
  280. ExceptionHandler exceptionHandler,
  281. void * p1,
  282. void * p2);
  283. /*
  284. * QueueSecondaryInterruptHandler()
  285. *
  286. * Availability:
  287. * Non-Carbon CFM: in DriverServicesLib 1.0 and later
  288. * CarbonLib: not available
  289. * Mac OS X: not available
  290. */
  291. EXTERN_API_C( OSStatus )
  292. QueueSecondaryInterruptHandler(
  293. SecondaryInterruptHandler2 theHandler,
  294. ExceptionHandler exceptionHandler,
  295. void * p1,
  296. void * p2);
  297. #endif /* CALL_NOT_IN_CARBON */
  298. #endif /* TARGET_OS_MAC */
  299. /* Timers */
  300. #if CALL_NOT_IN_CARBON
  301. /*
  302. * SetInterruptTimer()
  303. *
  304. * Availability:
  305. * Non-Carbon CFM: in DriverServicesLib 1.0 and later
  306. * CarbonLib: not available
  307. * Mac OS X: not available
  308. */
  309. EXTERN_API_C( OSStatus )
  310. SetInterruptTimer(
  311. const AbsoluteTime * expirationTime,
  312. SecondaryInterruptHandler2 handler,
  313. void * p1,
  314. TimerID * theTimer);
  315. /*
  316. * SetPersistentTimer()
  317. *
  318. * Availability:
  319. * Non-Carbon CFM: in DriverServicesLib 1.0 and later
  320. * CarbonLib: not available
  321. * Mac OS X: not available
  322. */
  323. EXTERN_API_C( OSStatus )
  324. SetPersistentTimer(
  325. Duration frequency,
  326. SecondaryInterruptHandler2 theHandler,
  327. void * p1,
  328. TimerID * theTimer);
  329. /*
  330. * CancelTimer()
  331. *
  332. * Availability:
  333. * Non-Carbon CFM: in DriverServicesLib 1.0 and later
  334. * CarbonLib: not available
  335. * Mac OS X: not available
  336. */
  337. EXTERN_API_C( OSStatus )
  338. CancelTimer(
  339. TimerID theTimer,
  340. AbsoluteTime * timeRemaining);
  341. /* I/O related Operations */
  342. /*
  343. * PrepareMemoryForIO()
  344. *
  345. * Availability:
  346. * Non-Carbon CFM: in DriverServicesLib 1.0 and later
  347. * CarbonLib: not available
  348. * Mac OS X: not available
  349. */
  350. EXTERN_API_C( OSStatus )
  351. PrepareMemoryForIO(IOPreparationTable * theIOPreparationTable);
  352. /*
  353. * CheckpointIO()
  354. *
  355. * Availability:
  356. * Non-Carbon CFM: in DriverServicesLib 1.0 and later
  357. * CarbonLib: not available
  358. * Mac OS X: not available
  359. */
  360. EXTERN_API_C( OSStatus )
  361. CheckpointIO(
  362. IOPreparationID theIOPreparation,
  363. IOCheckpointOptions options);
  364. /* Memory Operations */
  365. /*
  366. * GetPageInformation()
  367. *
  368. * Availability:
  369. * Non-Carbon CFM: in DriverServicesLib 1.0 and later
  370. * CarbonLib: not available
  371. * Mac OS X: not available
  372. */
  373. EXTERN_API_C( OSStatus )
  374. GetPageInformation(
  375. AddressSpaceID addressSpace,
  376. ConstLogicalAddress base,
  377. ByteCount length,
  378. PBVersion version,
  379. PageInformation * thePageInfo);
  380. /* Processor Cache Related */
  381. /*
  382. * SetProcessorCacheMode()
  383. *
  384. * Availability:
  385. * Non-Carbon CFM: in DriverServicesLib 1.0 and later
  386. * CarbonLib: not available
  387. * Mac OS X: not available
  388. */
  389. EXTERN_API_C( OSStatus )
  390. SetProcessorCacheMode(
  391. AddressSpaceID addressSpace,
  392. ConstLogicalAddress base,
  393. ByteCount length,
  394. ProcessorCacheMode cacheMode);
  395. /******************************************************************
  396. *
  397. * Was in DriverSupport.h or DriverServices.h
  398. *
  399. ******************************************************************/
  400. #define kAAPLDeviceLogicalAddress "AAPL,address"
  401. #endif /* CALL_NOT_IN_CARBON */
  402. typedef LogicalAddress * DeviceLogicalAddressPtr;
  403. enum {
  404. durationMicrosecond = -1L, /* Microseconds are negative*/
  405. durationMillisecond = 1L, /* Milliseconds are positive*/
  406. durationSecond = 1000L, /* 1000 * durationMillisecond*/
  407. durationMinute = 60000L, /* 60 * durationSecond,*/
  408. durationHour = 3600000L, /* 60 * durationMinute,*/
  409. durationDay = 86400000L, /* 24 * durationHour,*/
  410. durationNoWait = 0L, /* don't block*/
  411. durationForever = 0x7FFFFFFF /* no time limit*/
  412. };
  413. enum {
  414. k8BitAccess = 0, /* access as 8 bit*/
  415. k16BitAccess = 1, /* access as 16 bit*/
  416. k32BitAccess = 2 /* access as 32 bit*/
  417. };
  418. typedef UnsignedWide Nanoseconds;
  419. #if CALL_NOT_IN_CARBON
  420. /*
  421. * IOCommandIsComplete()
  422. *
  423. * Availability:
  424. * Non-Carbon CFM: in DriverServicesLib 1.0 and later
  425. * CarbonLib: not available
  426. * Mac OS X: not available
  427. */
  428. EXTERN_API_C( OSErr )
  429. IOCommandIsComplete(
  430. IOCommandID theID,
  431. OSErr theResult);
  432. /*
  433. * GetIOCommandInfo()
  434. *
  435. * Availability:
  436. * Non-Carbon CFM: in DriverServicesLib 1.0 and later
  437. * CarbonLib: not available
  438. * Mac OS X: not available
  439. */
  440. EXTERN_API_C( OSErr )
  441. GetIOCommandInfo(
  442. IOCommandID theID,
  443. IOCommandContents * theContents,
  444. IOCommandCode * theCommand,
  445. IOCommandKind * theKind);
  446. /*
  447. * UpdateDeviceActivity()
  448. *
  449. * Availability:
  450. * Non-Carbon CFM: in DriverServicesLib 1.0 and later
  451. * CarbonLib: not available
  452. * Mac OS X: not available
  453. */
  454. EXTERN_API_C( void )
  455. UpdateDeviceActivity(RegEntryID * deviceEntry);
  456. /*
  457. * BlockCopy()
  458. *
  459. * Availability:
  460. * Non-Carbon CFM: in DriverServicesLib 1.0 and later
  461. * CarbonLib: not available
  462. * Mac OS X: not available
  463. */
  464. EXTERN_API_C( void )
  465. BlockCopy(
  466. const void * srcPtr,
  467. void * destPtr,
  468. Size byteCount);
  469. /*
  470. * PoolAllocateResident()
  471. *
  472. * Availability:
  473. * Non-Carbon CFM: in DriverServicesLib 1.0 and later
  474. * CarbonLib: not available
  475. * Mac OS X: not available
  476. */
  477. EXTERN_API_C( LogicalAddress )
  478. PoolAllocateResident(
  479. ByteCount byteSize,
  480. Boolean clear);
  481. /*
  482. * PoolDeallocate()
  483. *
  484. * Availability:
  485. * Non-Carbon CFM: in DriverServicesLib 1.0 and later
  486. * CarbonLib: not available
  487. * Mac OS X: not available
  488. */
  489. EXTERN_API_C( OSStatus )
  490. PoolDeallocate(LogicalAddress address);
  491. /*
  492. * GetLogicalPageSize()
  493. *
  494. * Availability:
  495. * Non-Carbon CFM: in DriverServicesLib 1.0 and later
  496. * CarbonLib: not available
  497. * Mac OS X: not available
  498. */
  499. EXTERN_API_C( ByteCount )
  500. GetLogicalPageSize(void);
  501. /*
  502. * GetDataCacheLineSize()
  503. *
  504. * Availability:
  505. * Non-Carbon CFM: in DriverServicesLib 1.0 and later
  506. * CarbonLib: not available
  507. * Mac OS X: not available
  508. */
  509. EXTERN_API_C( ByteCount )
  510. GetDataCacheLineSize(void);
  511. /*
  512. * FlushProcessorCache()
  513. *
  514. * Availability:
  515. * Non-Carbon CFM: in DriverServicesLib 1.0 and later
  516. * CarbonLib: not available
  517. * Mac OS X: not available
  518. */
  519. EXTERN_API_C( OSStatus )
  520. FlushProcessorCache(
  521. AddressSpaceID spaceID,
  522. LogicalAddress base,
  523. ByteCount length);
  524. /*
  525. * MemAllocatePhysicallyContiguous()
  526. *
  527. * Availability:
  528. * Non-Carbon CFM: in DriverServicesLib 1.0 and later
  529. * CarbonLib: not available
  530. * Mac OS X: not available
  531. */
  532. EXTERN_API_C( LogicalAddress )
  533. MemAllocatePhysicallyContiguous(
  534. ByteCount byteSize,
  535. Boolean clear);
  536. /*
  537. * MemDeallocatePhysicallyContiguous()
  538. *
  539. * Availability:
  540. * Non-Carbon CFM: in DriverServicesLib 1.0 and later
  541. * CarbonLib: not available
  542. * Mac OS X: not available
  543. */
  544. EXTERN_API_C( OSStatus )
  545. MemDeallocatePhysicallyContiguous(LogicalAddress address);
  546. #endif /* CALL_NOT_IN_CARBON */
  547. /*
  548. * UpTime()
  549. *
  550. * Availability:
  551. * Non-Carbon CFM: in InterfaceLib 8.6 and later
  552. * CarbonLib: in CarbonLib 1.0.2 and later
  553. * Mac OS X: in version 10.0 and later
  554. */
  555. EXTERN_API_C( AbsoluteTime )
  556. UpTime(void);
  557. #if CALL_NOT_IN_CARBON
  558. /*
  559. * GetTimeBaseInfo()
  560. *
  561. * Availability:
  562. * Non-Carbon CFM: in InterfaceLib 8.6 and later
  563. * CarbonLib: not available
  564. * Mac OS X: not available
  565. */
  566. EXTERN_API_C( void )
  567. GetTimeBaseInfo(
  568. UInt32 * minAbsoluteTimeDelta,
  569. UInt32 * theAbsoluteTimeToNanosecondNumerator,
  570. UInt32 * theAbsoluteTimeToNanosecondDenominator,
  571. UInt32 * theProcessorToAbsoluteTimeNumerator,
  572. UInt32 * theProcessorToAbsoluteTimeDenominator);
  573. #endif /* CALL_NOT_IN_CARBON */
  574. /*
  575. * AbsoluteToNanoseconds()
  576. *
  577. * Availability:
  578. * Non-Carbon CFM: in InterfaceLib 8.6 and later
  579. * CarbonLib: in CarbonLib 1.0.2 and later
  580. * Mac OS X: in version 10.0 and later
  581. */
  582. EXTERN_API_C( Nanoseconds )
  583. AbsoluteToNanoseconds(AbsoluteTime absoluteTime);
  584. /*
  585. * AbsoluteToDuration()
  586. *
  587. * Availability:
  588. * Non-Carbon CFM: in InterfaceLib 8.6 and later
  589. * CarbonLib: in CarbonLib 1.0.2 and later
  590. * Mac OS X: in version 10.0 and later
  591. */
  592. EXTERN_API_C( Duration )
  593. AbsoluteToDuration(AbsoluteTime absoluteTime);
  594. /*
  595. * NanosecondsToAbsolute()
  596. *
  597. * Availability:
  598. * Non-Carbon CFM: in InterfaceLib 8.6 and later
  599. * CarbonLib: in CarbonLib 1.0.2 and later
  600. * Mac OS X: in version 10.0 and later
  601. */
  602. EXTERN_API_C( AbsoluteTime )
  603. NanosecondsToAbsolute(Nanoseconds nanoseconds);
  604. /*
  605. * DurationToAbsolute()
  606. *
  607. * Availability:
  608. * Non-Carbon CFM: in InterfaceLib 8.6 and later
  609. * CarbonLib: in CarbonLib 1.0.2 and later
  610. * Mac OS X: in version 10.0 and later
  611. */
  612. EXTERN_API_C( AbsoluteTime )
  613. DurationToAbsolute(Duration duration);
  614. /*
  615. * AddAbsoluteToAbsolute()
  616. *
  617. * Availability:
  618. * Non-Carbon CFM: in InterfaceLib 8.6 and later
  619. * CarbonLib: in CarbonLib 1.0.2 and later
  620. * Mac OS X: in version 10.0 and later
  621. */
  622. EXTERN_API_C( AbsoluteTime )
  623. AddAbsoluteToAbsolute(
  624. AbsoluteTime absoluteTime1,
  625. AbsoluteTime absoluteTime2);
  626. /*
  627. * SubAbsoluteFromAbsolute()
  628. *
  629. * Availability:
  630. * Non-Carbon CFM: in InterfaceLib 8.6 and later
  631. * CarbonLib: in CarbonLib 1.0.2 and later
  632. * Mac OS X: in version 10.0 and later
  633. */
  634. EXTERN_API_C( AbsoluteTime )
  635. SubAbsoluteFromAbsolute(
  636. AbsoluteTime leftAbsoluteTime,
  637. AbsoluteTime rightAbsoluteTime);
  638. /*
  639. * AddNanosecondsToAbsolute()
  640. *
  641. * Availability:
  642. * Non-Carbon CFM: in InterfaceLib 8.6 and later
  643. * CarbonLib: in CarbonLib 1.0.2 and later
  644. * Mac OS X: in version 10.0 and later
  645. */
  646. EXTERN_API_C( AbsoluteTime )
  647. AddNanosecondsToAbsolute(
  648. Nanoseconds nanoseconds,
  649. AbsoluteTime absoluteTime);
  650. /*
  651. * AddDurationToAbsolute()
  652. *
  653. * Availability:
  654. * Non-Carbon CFM: in InterfaceLib 8.6 and later
  655. * CarbonLib: in CarbonLib 1.0.2 and later
  656. * Mac OS X: in version 10.0 and later
  657. */
  658. EXTERN_API_C( AbsoluteTime )
  659. AddDurationToAbsolute(
  660. Duration duration,
  661. AbsoluteTime absoluteTime);
  662. /*
  663. * SubNanosecondsFromAbsolute()
  664. *
  665. * Availability:
  666. * Non-Carbon CFM: in InterfaceLib 8.6 and later
  667. * CarbonLib: in CarbonLib 1.0.2 and later
  668. * Mac OS X: in version 10.0 and later
  669. */
  670. EXTERN_API_C( AbsoluteTime )
  671. SubNanosecondsFromAbsolute(
  672. Nanoseconds nanoseconds,
  673. AbsoluteTime absoluteTime);
  674. /*
  675. * SubDurationFromAbsolute()
  676. *
  677. * Availability:
  678. * Non-Carbon CFM: in InterfaceLib 8.6 and later
  679. * CarbonLib: in CarbonLib 1.0.2 and later
  680. * Mac OS X: in version 10.0 and later
  681. */
  682. EXTERN_API_C( AbsoluteTime )
  683. SubDurationFromAbsolute(
  684. Duration duration,
  685. AbsoluteTime absoluteTime);
  686. /*
  687. * AbsoluteDeltaToNanoseconds()
  688. *
  689. * Availability:
  690. * Non-Carbon CFM: in InterfaceLib 8.6 and later
  691. * CarbonLib: in CarbonLib 1.0.2 and later
  692. * Mac OS X: in version 10.0 and later
  693. */
  694. EXTERN_API_C( Nanoseconds )
  695. AbsoluteDeltaToNanoseconds(
  696. AbsoluteTime leftAbsoluteTime,
  697. AbsoluteTime rightAbsoluteTime);
  698. /*
  699. * AbsoluteDeltaToDuration()
  700. *
  701. * Availability:
  702. * Non-Carbon CFM: in InterfaceLib 8.6 and later
  703. * CarbonLib: in CarbonLib 1.0.2 and later
  704. * Mac OS X: in version 10.0 and later
  705. */
  706. EXTERN_API_C( Duration )
  707. AbsoluteDeltaToDuration(
  708. AbsoluteTime leftAbsoluteTime,
  709. AbsoluteTime rightAbsoluteTime);
  710. /*
  711. * DurationToNanoseconds()
  712. *
  713. * Availability:
  714. * Non-Carbon CFM: in InterfaceLib 8.6 and later
  715. * CarbonLib: in CarbonLib 1.0.2 and later
  716. * Mac OS X: in version 10.0 and later
  717. */
  718. EXTERN_API_C( Nanoseconds )
  719. DurationToNanoseconds(Duration theDuration);
  720. /*
  721. * NanosecondsToDuration()
  722. *
  723. * Availability:
  724. * Non-Carbon CFM: in InterfaceLib 8.6 and later
  725. * CarbonLib: in CarbonLib 1.0.2 and later
  726. * Mac OS X: in version 10.0 and later
  727. */
  728. EXTERN_API_C( Duration )
  729. NanosecondsToDuration(Nanoseconds theNanoseconds);
  730. #if CALL_NOT_IN_CARBON
  731. /*
  732. * PBQueueInit()
  733. *
  734. * Availability:
  735. * Non-Carbon CFM: in DriverServicesLib 1.0 and later
  736. * CarbonLib: not available
  737. * Mac OS X: not available
  738. */
  739. EXTERN_API_C( OSErr )
  740. PBQueueInit(QHdrPtr qHeader);
  741. /*
  742. * PBQueueCreate()
  743. *
  744. * Availability:
  745. * Non-Carbon CFM: in DriverServicesLib 1.0 and later
  746. * CarbonLib: not available
  747. * Mac OS X: not available
  748. */
  749. EXTERN_API_C( OSErr )
  750. PBQueueCreate(QHdrPtr * qHeader);
  751. /*
  752. * PBQueueDelete()
  753. *
  754. * Availability:
  755. * Non-Carbon CFM: in DriverServicesLib 1.0 and later
  756. * CarbonLib: not available
  757. * Mac OS X: not available
  758. */
  759. EXTERN_API_C( OSErr )
  760. PBQueueDelete(QHdrPtr qHeader);
  761. /*
  762. * PBEnqueue()
  763. *
  764. * Availability:
  765. * Non-Carbon CFM: in DriverServicesLib 1.0 and later
  766. * CarbonLib: not available
  767. * Mac OS X: not available
  768. */
  769. EXTERN_API_C( void )
  770. PBEnqueue(
  771. QElemPtr qElement,
  772. QHdrPtr qHeader);
  773. /*
  774. * PBEnqueueLast()
  775. *
  776. * Availability:
  777. * Non-Carbon CFM: in DriverServicesLib 1.0 and later
  778. * CarbonLib: not available
  779. * Mac OS X: not available
  780. */
  781. EXTERN_API_C( OSErr )
  782. PBEnqueueLast(
  783. QElemPtr qElement,
  784. QHdrPtr qHeader);
  785. /*
  786. * PBDequeue()
  787. *
  788. * Availability:
  789. * Non-Carbon CFM: in DriverServicesLib 1.0 and later
  790. * CarbonLib: not available
  791. * Mac OS X: not available
  792. */
  793. EXTERN_API_C( OSErr )
  794. PBDequeue(
  795. QElemPtr qElement,
  796. QHdrPtr qHeader);
  797. /*
  798. * PBDequeueFirst()
  799. *
  800. * Availability:
  801. * Non-Carbon CFM: in DriverServicesLib 1.0 and later
  802. * CarbonLib: not available
  803. * Mac OS X: not available
  804. */
  805. EXTERN_API_C( OSErr )
  806. PBDequeueFirst(
  807. QHdrPtr qHeader,
  808. QElemPtr * theFirstqElem);
  809. /*
  810. * PBDequeueLast()
  811. *
  812. * Availability:
  813. * Non-Carbon CFM: in DriverServicesLib 1.0 and later
  814. * CarbonLib: not available
  815. * Mac OS X: not available
  816. */
  817. EXTERN_API_C( OSErr )
  818. PBDequeueLast(
  819. QHdrPtr qHeader,
  820. QElemPtr * theLastqElem);
  821. /*
  822. * CStrCopy()
  823. *
  824. * Availability:
  825. * Non-Carbon CFM: in DriverServicesLib 1.0 and later
  826. * CarbonLib: not available
  827. * Mac OS X: not available
  828. */
  829. EXTERN_API_C( char * )
  830. CStrCopy(
  831. char * dst,
  832. const char * src);
  833. /*
  834. * PStrCopy()
  835. *
  836. * Availability:
  837. * Non-Carbon CFM: in DriverServicesLib 1.0 and later
  838. * CarbonLib: not available
  839. * Mac OS X: not available
  840. */
  841. EXTERN_API_C( StringPtr )
  842. PStrCopy(
  843. StringPtr dst,
  844. ConstStr255Param src);
  845. /*
  846. * CStrNCopy()
  847. *
  848. * Availability:
  849. * Non-Carbon CFM: in DriverServicesLib 1.0 and later
  850. * CarbonLib: not available
  851. * Mac OS X: not available
  852. */
  853. EXTERN_API_C( char * )
  854. CStrNCopy(
  855. char * dst,
  856. const char * src,
  857. UInt32 max);
  858. /*
  859. * PStrNCopy()
  860. *
  861. * Availability:
  862. * Non-Carbon CFM: in DriverServicesLib 1.0 and later
  863. * CarbonLib: not available
  864. * Mac OS X: not available
  865. */
  866. EXTERN_API_C( StringPtr )
  867. PStrNCopy(
  868. StringPtr dst,
  869. ConstStr255Param src,
  870. UInt32 max);
  871. /*
  872. * CStrCat()
  873. *
  874. * Availability:
  875. * Non-Carbon CFM: in DriverServicesLib 1.0 and later
  876. * CarbonLib: not available
  877. * Mac OS X: not available
  878. */
  879. EXTERN_API_C( char * )
  880. CStrCat(
  881. char * dst,
  882. const char * src);
  883. /*
  884. * PStrCat()
  885. *
  886. * Availability:
  887. * Non-Carbon CFM: in DriverServicesLib 1.0 and later
  888. * CarbonLib: not available
  889. * Mac OS X: not available
  890. */
  891. EXTERN_API_C( StringPtr )
  892. PStrCat(
  893. StringPtr dst,
  894. ConstStr255Param src);
  895. /*
  896. * CStrNCat()
  897. *
  898. * Availability:
  899. * Non-Carbon CFM: in DriverServicesLib 1.0 and later
  900. * CarbonLib: not available
  901. * Mac OS X: not available
  902. */
  903. EXTERN_API_C( char * )
  904. CStrNCat(
  905. char * dst,
  906. const char * src,
  907. UInt32 max);
  908. /*
  909. * PStrNCat()
  910. *
  911. * Availability:
  912. * Non-Carbon CFM: in DriverServicesLib 1.0 and later
  913. * CarbonLib: not available
  914. * Mac OS X: not available
  915. */
  916. EXTERN_API_C( StringPtr )
  917. PStrNCat(
  918. StringPtr dst,
  919. ConstStr255Param src,
  920. UInt32 max);
  921. /*
  922. * PStrToCStr()
  923. *
  924. * Availability:
  925. * Non-Carbon CFM: in DriverServicesLib 1.0 and later
  926. * CarbonLib: not available
  927. * Mac OS X: not available
  928. */
  929. EXTERN_API_C( void )
  930. PStrToCStr(
  931. char * dst,
  932. ConstStr255Param src);
  933. /*
  934. * CStrToPStr()
  935. *
  936. * Availability:
  937. * Non-Carbon CFM: in DriverServicesLib 1.0 and later
  938. * CarbonLib: not available
  939. * Mac OS X: not available
  940. */
  941. EXTERN_API_C( void )
  942. CStrToPStr(
  943. Str255 dst,
  944. const char * src);
  945. /*
  946. * CStrCmp()
  947. *
  948. * Availability:
  949. * Non-Carbon CFM: in DriverServicesLib 1.0 and later
  950. * CarbonLib: not available
  951. * Mac OS X: not available
  952. */
  953. EXTERN_API_C( SInt16 )
  954. CStrCmp(
  955. const char * s1,
  956. const char * s2);
  957. /*
  958. * PStrCmp()
  959. *
  960. * Availability:
  961. * Non-Carbon CFM: in DriverServicesLib 1.0 and later
  962. * CarbonLib: not available
  963. * Mac OS X: not available
  964. */
  965. EXTERN_API_C( SInt16 )
  966. PStrCmp(
  967. ConstStr255Param str1,
  968. ConstStr255Param str2);
  969. /*
  970. * CStrNCmp()
  971. *
  972. * Availability:
  973. * Non-Carbon CFM: in DriverServicesLib 1.0 and later
  974. * CarbonLib: not available
  975. * Mac OS X: not available
  976. */
  977. EXTERN_API_C( SInt16 )
  978. CStrNCmp(
  979. const char * s1,
  980. const char * s2,
  981. UInt32 max);
  982. /*
  983. * PStrNCmp()
  984. *
  985. * Availability:
  986. * Non-Carbon CFM: in DriverServicesLib 1.0 and later
  987. * CarbonLib: not available
  988. * Mac OS X: not available
  989. */
  990. EXTERN_API_C( SInt16 )
  991. PStrNCmp(
  992. ConstStr255Param str1,
  993. ConstStr255Param str2,
  994. UInt32 max);
  995. /*
  996. * CStrLen()
  997. *
  998. * Availability:
  999. * Non-Carbon CFM: in DriverServicesLib 1.0 and later
  1000. * CarbonLib: not available
  1001. * Mac OS X: not available
  1002. */
  1003. EXTERN_API_C( UInt32 )
  1004. CStrLen(const char * src);
  1005. /*
  1006. * PStrLen()
  1007. *
  1008. * Availability:
  1009. * Non-Carbon CFM: in DriverServicesLib 1.0 and later
  1010. * CarbonLib: not available
  1011. * Mac OS X: not available
  1012. */
  1013. EXTERN_API_C( UInt32 )
  1014. PStrLen(ConstStr255Param src);
  1015. /*
  1016. * DeviceProbe()
  1017. *
  1018. * Availability:
  1019. * Non-Carbon CFM: in DriverServicesLib 1.0 and later
  1020. * CarbonLib: not available
  1021. * Mac OS X: not available
  1022. */
  1023. EXTERN_API_C( OSStatus )
  1024. DeviceProbe(
  1025. void * theSrc,
  1026. void * theDest,
  1027. UInt32 AccessType);
  1028. /*
  1029. * DelayForHardware()
  1030. *
  1031. * Availability:
  1032. * Non-Carbon CFM: in DriverServicesLib 1.0 and later
  1033. * CarbonLib: not available
  1034. * Mac OS X: not available
  1035. */
  1036. EXTERN_API_C( OSStatus )
  1037. DelayForHardware(AbsoluteTime absoluteTime);
  1038. /******************************************************************
  1039. *
  1040. * Was in Interrupts.h
  1041. *
  1042. ******************************************************************/
  1043. /* Interrupt types */
  1044. #endif /* CALL_NOT_IN_CARBON */
  1045. typedef struct OpaqueInterruptSetID* InterruptSetID;
  1046. typedef long InterruptMemberNumber;
  1047. struct InterruptSetMember {
  1048. InterruptSetID setID;
  1049. InterruptMemberNumber member;
  1050. };
  1051. typedef struct InterruptSetMember InterruptSetMember;
  1052. enum {
  1053. kISTChipInterruptSource = 0,
  1054. kISTOutputDMAInterruptSource = 1,
  1055. kISTInputDMAInterruptSource = 2,
  1056. kISTPropertyMemberCount = 3
  1057. };
  1058. typedef InterruptSetMember ISTProperty[3];
  1059. #define kISTPropertyName "driver-ist"
  1060. typedef long InterruptReturnValue;
  1061. enum {
  1062. kFirstMemberNumber = 1,
  1063. kIsrIsComplete = 0,
  1064. kIsrIsNotComplete = -1,
  1065. kMemberNumberParent = -2
  1066. };
  1067. typedef Boolean InterruptSourceState;
  1068. enum {
  1069. kSourceWasEnabled = true,
  1070. kSourceWasDisabled = false
  1071. };
  1072. typedef CALLBACK_API_C( InterruptMemberNumber , InterruptHandler )(InterruptSetMember ISTmember, void *refCon, UInt32 theIntCount);
  1073. typedef CALLBACK_API_C( void , InterruptEnabler )(InterruptSetMember ISTmember, void *refCon);
  1074. typedef CALLBACK_API_C( InterruptSourceState , InterruptDisabler )(InterruptSetMember ISTmember, void *refCon);
  1075. enum {
  1076. kReturnToParentWhenComplete = 0x00000001,
  1077. kReturnToParentWhenNotComplete = 0x00000002
  1078. };
  1079. typedef OptionBits InterruptSetOptions;
  1080. /* Interrupt Services */
  1081. #if CALL_NOT_IN_CARBON
  1082. /*
  1083. * CreateInterruptSet()
  1084. *
  1085. * Availability:
  1086. * Non-Carbon CFM: in DriverServicesLib 1.0 and later
  1087. * CarbonLib: not available
  1088. * Mac OS X: not available
  1089. */
  1090. EXTERN_API_C( OSStatus )
  1091. CreateInterruptSet(
  1092. InterruptSetID parentSet,
  1093. InterruptMemberNumber parentMember,
  1094. InterruptMemberNumber setSize,
  1095. InterruptSetID * setID,
  1096. InterruptSetOptions options);
  1097. /*
  1098. * InstallInterruptFunctions()
  1099. *
  1100. * Availability:
  1101. * Non-Carbon CFM: in DriverServicesLib 1.0 and later
  1102. * CarbonLib: not available
  1103. * Mac OS X: not available
  1104. */
  1105. EXTERN_API_C( OSStatus )
  1106. InstallInterruptFunctions(
  1107. InterruptSetID setID,
  1108. InterruptMemberNumber member,
  1109. void * refCon,
  1110. InterruptHandler handlerFunction,
  1111. InterruptEnabler enableFunction,
  1112. InterruptDisabler disableFunction);
  1113. /*
  1114. * GetInterruptFunctions()
  1115. *
  1116. * Availability:
  1117. * Non-Carbon CFM: in DriverServicesLib 1.0 and later
  1118. * CarbonLib: not available
  1119. * Mac OS X: not available
  1120. */
  1121. EXTERN_API_C( OSStatus )
  1122. GetInterruptFunctions(
  1123. InterruptSetID setID,
  1124. InterruptMemberNumber member,
  1125. void ** refCon,
  1126. InterruptHandler * handlerFunction,
  1127. InterruptEnabler * enableFunction,
  1128. InterruptDisabler * disableFunction);
  1129. /*
  1130. * ChangeInterruptSetOptions()
  1131. *
  1132. * Availability:
  1133. * Non-Carbon CFM: in DriverServicesLib 1.0 and later
  1134. * CarbonLib: not available
  1135. * Mac OS X: not available
  1136. */
  1137. EXTERN_API_C( OSStatus )
  1138. ChangeInterruptSetOptions(
  1139. InterruptSetID setID,
  1140. InterruptSetOptions options);
  1141. /*
  1142. * GetInterruptSetOptions()
  1143. *
  1144. * Availability:
  1145. * Non-Carbon CFM: in DriverServicesLib 1.0 and later
  1146. * CarbonLib: not available
  1147. * Mac OS X: not available
  1148. */
  1149. EXTERN_API_C( OSStatus )
  1150. GetInterruptSetOptions(
  1151. InterruptSetID setID,
  1152. InterruptSetOptions * options);
  1153. #endif /* CALL_NOT_IN_CARBON */
  1154. #if PRAGMA_STRUCT_ALIGN
  1155. #pragma options align=reset
  1156. #elif PRAGMA_STRUCT_PACKPUSH
  1157. #pragma pack(pop)
  1158. #elif PRAGMA_STRUCT_PACK
  1159. #pragma pack()
  1160. #endif
  1161. #ifdef PRAGMA_IMPORT_OFF
  1162. #pragma import off
  1163. #elif PRAGMA_IMPORT
  1164. #pragma import reset
  1165. #endif
  1166. #ifdef __cplusplus
  1167. }
  1168. #endif
  1169. #endif /* __DRIVERSERVICES__ */