siginfoh.inc 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167
  1. const
  2. __SI_MAX_SIZE = 128;
  3. __SI_PAD_SIZE = (__SI_MAX_SIZE div sizeof (Integer)) - 3;
  4. type
  5. Psigval = ^sigval;
  6. sigval = record
  7. case longint of
  8. 0 : ( sival_int : longint );
  9. 1 : ( sival_ptr : pointer );
  10. end;
  11. sigval_t = sigval;
  12. Psigval_t = ^sigval_t;
  13. // Borland compatibility types moved here, needed for siginfo
  14. _si_sigchld = record
  15. si_pid: __pid_t;
  16. si_uid: __uid_t;
  17. si_status: Integer;
  18. si_utime: __clock_t;
  19. si_stime: __clock_t;
  20. end;
  21. _si_kill = record
  22. si_pid: __pid_t;
  23. si_uid: __uid_t;
  24. end;
  25. _si_pad = packed array[0..__SI_PAD_SIZE-1] of Integer;
  26. _si_sigfault = record
  27. si_addr: Pointer;
  28. end;
  29. _si_sigpoll = record
  30. si_band: Longint;
  31. si_fd: Integer;
  32. end;
  33. _si_timer = record
  34. _timer1: Cardinal;
  35. _timer2: Cardinal;
  36. end;
  37. _si_rt = record
  38. si_pid: __pid_t;
  39. si_uid: __uid_t;
  40. si_sigval: sigval_t;
  41. end;
  42. type
  43. Psiginfo = ^siginfo;
  44. siginfo = record
  45. si_signo : longint;
  46. si_errno : longint;
  47. si_code : longint;
  48. Case integer of
  49. 0: (_pad: _si_pad);
  50. 1: (_kill: _si_kill);
  51. 2: (_timer: _si_timer);
  52. 3: (_rt: _si_rt);
  53. 4: (_sigchld: _si_sigchld);
  54. 5: (_sigfault: _si_sigfault);
  55. 6: (_sigpoll: _si_sigpoll);
  56. end;
  57. siginfo_t = siginfo;
  58. Psiginfo_t = ^siginfo_t;
  59. Tsiginfo_t = siginfo_t;
  60. Const
  61. SI_ASYNCNL = -(6);
  62. SI_SIGIO = (-(6))+1;
  63. SI_ASYNCIO = (-(6))+2;
  64. SI_MESGQ = (-(6))+3;
  65. SI_TIMER = (-(6))+4;
  66. SI_QUEUE = (-(6))+5;
  67. SI_USER = (-(6))+6;
  68. SI_KERNEL = $80;
  69. ILL_ILLOPC = 1;
  70. ILL_ILLOPN = 2;
  71. ILL_ILLADR = 3;
  72. ILL_ILLTRP = 4;
  73. ILL_PRVOPC = 5;
  74. ILL_PRVREG = 6;
  75. ILL_COPROC = 7;
  76. ILL_BADSTK = 8;
  77. FPE_INTDIV = 1;
  78. FPE_INTOVF = 2;
  79. FPE_FLTDIV = 3;
  80. FPE_FLTOVF = 4;
  81. FPE_FLTUND = 5;
  82. FPE_FLTRES = 6;
  83. FPE_FLTINV = 7;
  84. FPE_FLTSUB = 8;
  85. SEGV_MAPERR = 1;
  86. SEGV_ACCERR = 2;
  87. BUS_ADRALN = 1;
  88. BUS_ADRERR = 2;
  89. BUS_OBJERR = 3;
  90. TRAP_BRKPT = 1;
  91. TRAP_TRACE = 2;
  92. CLD_EXITED = 1;
  93. CLD_KILLED = 2;
  94. CLD_DUMPED = 3;
  95. CLD_TRAPPED = 4;
  96. CLD_STOPPED = 5;
  97. CLD_CONTINUED = 6;
  98. POLL_IN = 1;
  99. POLL_OUT = 2;
  100. POLL_MSG = 3;
  101. POLL_ERR = 4;
  102. POLL_PRI = 5;
  103. POLL_HUP = 6;
  104. __SIGEV_MAX_SIZE = 64;
  105. __SIGEV_PAD_SIZE = (__SIGEV_MAX_SIZE div SizeOf(Integer)) - 3;
  106. type
  107. // Glue structures.
  108. _se_pad = packed array[0..__SIGEV_PAD_SIZE-1] of Integer;
  109. TSignalEventStartProc = procedure(Param: sigval_t); cdecl;
  110. _se_sigev_thread = {packed} record
  111. _function: TSignalEventStartProc; { Function to start. }
  112. _attribute: Pointer; { Really pthread_attr_t. }
  113. end;
  114. Psigevent = ^sigevent;
  115. sigevent = record
  116. sigev_value : sigval_t;
  117. sigev_signo : longint;
  118. sigev_notify : longint;
  119. _sigev_un : record
  120. case longint of
  121. 0 : ( _pad : array[0..(__SIGEV_PAD_SIZE)-1] of longint );
  122. 1 : ( _sigev_thread :_se_sigev_thread;);
  123. end;
  124. end;
  125. sigevent_t = sigevent;
  126. Psigevent_t = ^sigevent_t;
  127. Const
  128. SIGEV_SIGNAL = 0;
  129. SIGEV_NONE = 1;
  130. SIGEV_THREAD = 2;
  131. { ---------------------------------------------------------------------
  132. Borland compatibility types
  133. ---------------------------------------------------------------------}
  134. Type
  135. TSigval = sigval_t;
  136. TSigInfo = siginfo;
  137. TSigEvent = sigevent;