home *** CD-ROM | disk | FTP | other *** search
/ NeXTSTEP 3.2 (Developer) / NS_dev_3.2.iso / NextDeveloper / Headers / driverkit / generalFuncs.h < prev    next >
Text File  |  1993-08-21  |  3KB  |  121 lines

  1. /*     Copyright (c) 1991 NeXT Computer, Inc.  All rights reserved. 
  2.  *
  3.  * generalFuncs.h - General purpose driverkit functions.
  4.  *
  5.  * HISTORY
  6.  * 18-Apr-91    Doug Mitchell at NeXT
  7.  *      Created. 
  8.  */
  9.  
  10. #import <mach/mach_types.h>
  11. #import <driverkit/return.h>
  12. #import <kernserv/clock_timer.h>
  13. #import <driverkit/driverTypes.h>
  14.  
  15. /*
  16.  * These are opaque to the user.
  17.  */
  18. typedef void  *IOThread;
  19. typedef void (*IOThreadFunc)(void *arg);
  20.  
  21. /*
  22.  * Memory allocation functions. Both may block.
  23.  */
  24. void *IOMalloc(int size);
  25. void IOFree(void *p, int size);
  26.  
  27. /*
  28.  * Memory copy
  29.  */
  30. void IOCopyMemory(void *from, void *to, unsigned int numBytes, 
  31.     unsigned int bytesPerTransfer);
  32.  
  33. /*
  34.  * Thread and task functions.
  35.  */
  36. /*
  37.  * Start a new thread starting execution at fcn with argument arg.
  38.  */
  39. IOThread IOForkThread(IOThreadFunc fcn, void *arg);
  40.  
  41. /*
  42.  * Alter the scheduler priority of a thread started with IOForkThread().
  43.  */
  44. IOReturn IOSetThreadPriority(IOThread thread, int priority);
  45.  
  46. IOReturn IOSetThreadPolicy(IOThread thread, int policy);
  47.  
  48. /*
  49.  * Suspend a thread started with IOForkThread().
  50.  */
  51. void IOSuspendThread(IOThread thread);
  52.  
  53. /*
  54.  * Resume a thread started by IOForkThread().
  55.  */
  56. void IOResumeThread(IOThread thread);
  57.  
  58. /*
  59.  * Terminate exceution of current thread. Does not return.
  60.  */
  61. volatile void IOExitThread();
  62.  
  63. /*
  64.  * Sleep for indicated number of milliseconds.
  65.  */
  66. void IOSleep(unsigned milliseconds);
  67.  
  68. /*
  69.  * Spin for indicated number of microseconds.
  70.  */
  71. void IODelay(unsigned microseconds);
  72.  
  73. /*
  74.  * Call function fcn with argument arg in specified number of seconds.
  75.  * WARNING: The kernel version of this function does the callback in
  76.  *         the kernel task's context, not the IOTask context.
  77.  */
  78. void IOScheduleFunc(IOThreadFunc fcn, void *arg, int seconds);
  79.  
  80. /*
  81.  * Cancel callout requested in IOScheduleFunc().
  82.  */
  83. void IOUnscheduleFunc(IOThreadFunc fcn, void *arg);
  84.  
  85. /*
  86.  * Obtain current time in ns.
  87.  */
  88. void IOGetTimestamp(ns_time_t *nsp);
  89.  
  90. /*
  91.  * Log a printf-style string to console.
  92.  */
  93. void IOLog(const char *format, ...)
  94. __attribute__((format(printf, 1, 2)));
  95.  
  96. /*
  97.  * Panic (if in the kernel) or dump core (if user space).
  98.  * FIXME - this should be a volatile, but panic() isn't...
  99.  */
  100. void IOPanic(const char *reason);
  101.  
  102. /*
  103.  * Convert a integer constant (typically a #define or enum) to a string
  104.  * via an array of IONamedValue.
  105.  */
  106. const char *IOFindNameForValue(int value, 
  107.     const IONamedValue *namedValueArray);
  108.  
  109. /*
  110.  * Convert a string to an int via an array of IONamedValue. Returns
  111.  * IO_R_SUCCESS of string found, else returns IO_R_INVALIDARG.
  112.  */
  113. IOReturn IOFindValueForName(const char *string, 
  114.     const IONamedValue *regValueArray,
  115.     int *value);                /* RETURNED */
  116.  
  117. /*
  118.  * One-time only init for this module.
  119.  */
  120. void IOInitGeneralFuncs();
  121.