engine-r2000-ultrix-4.2.h
上传用户:tsgydb
上传日期:2007-04-14
资源大小:10674k
文件大小:2k
源码类别:

MySQL数据库

开发平台:

Visual C++

  1. /* ==== machdep.h ============================================================
  2.  * Copyright (c) 1993 Chris Provenzano, proven@athena.mit.edu
  3.  *
  4.  * $Id$
  5.  *
  6.  *  Description : Machine dependent header for decstation with r2000/r3000
  7.  *   running Ultrix-4.2
  8.  *
  9.  *  1.00 93/07/21 proven
  10.  *      -Started coding this file.
  11.  */
  12. #include <setjmp.h>
  13. #include <sys/time.h>
  14. #include <sys/cdefs.h>
  15. /*
  16.  * The first machine dependent functions are the SEMAPHORES
  17.  * needing the test and set instruction.
  18.  */
  19. #define SEMAPHORE_CLEAR 0
  20. #define SEMAPHORE_SET   1
  21. #define SEMAPHORE_TEST_AND_SET(lock) semaphore_test_and_set(lock)
  22. #define SEMAPHORE_RESET(lock) *lock = SEMAPHORE_CLEAR
  23. /*
  24.  * New types
  25.  */
  26. typedef long semaphore;
  27. #if !defined(_POSIX_SOURCE)
  28. /* typedef int ssize_t; */
  29. #if !defined(__GNUC__)
  30. /*
  31.  * sigset_t macros
  32.  */
  33. typedef int sigset_t; 
  34. #define sigaddset(set, num) ((*set) |= (1 << (num - 1)))
  35. #define sigemptyset(set) (*set = 0) 
  36. #endif
  37. #endif
  38. #define SIG_ANY(sig) (sig)
  39. #define SIGMAX  31
  40. /*
  41.  * New Structures
  42.  */
  43. struct machdep_pthread {
  44. void *(*start_routine)(void *);
  45. void *start_argument;
  46. void *machdep_stack;
  47. struct itimerval machdep_timer;
  48. jmp_buf machdep_state;
  49. };
  50. /*
  51.  * Static machdep_pthread initialization values.
  52.  * For initial thread only.
  53.  */
  54. #define MACHDEP_PTHREAD_INIT
  55. { NULL, NULL, NULL, { { 0, 0 }, { 0, 100000 } }, 0 }
  56. /*
  57.  * Min stacksize, arch dependent
  58.  */
  59. #define PTHREAD_STACK_MIN 1024
  60. /*
  61.  * Some fd flag defines that are necessary to distinguish between posix
  62.  * behavior and bsd4.3 behavior.
  63.  */
  64. #define __FD_NONBLOCK  (O_NONBLOCK | O_NDELAY)
  65. /*
  66.  * New functions
  67.  */
  68. __BEGIN_DECLS
  69. #if defined(PTHREAD_KERNEL)
  70. #define __machdep_stack_get(x) (x)->machdep_stack
  71. #define __machdep_stack_set(x, y) (x)->machdep_stack = y
  72. #define __machdep_stack_repl(x, y)
  73. {
  74. if (stack = __machdep_stack_get(x)) {
  75. __machdep_stack_free(stack);
  76. }
  77. __machdep_stack_set(x, y);
  78. }
  79. void * __machdep_stack_alloc __P_((size_t));
  80. void __machdep_stack_free __P_((void *));
  81. int semaphore_test_and_set __P_((semaphore *));
  82. int machdep_save_state __P_((void));
  83. #endif
  84. __END_DECLS