engine-i386-sco-3.2v5.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.  * engine-i386-freebsd-2.0.h,v 1.1.4.1 1995/12/13 05:41:52 proven Exp
  5.  *
  6.  */
  7. #include <unistd.h>
  8. #include <setjmp.h>
  9. #include <sys/time.h>
  10. #ifndef __NORETURN
  11. #define __NORETURN
  12. #endif
  13. /*
  14.  * The first machine dependent functions are the SEMAPHORES
  15.  * needing the test and set instruction.
  16.  */
  17. #define SEMAPHORE_CLEAR 0
  18. #define SEMAPHORE_SET   1
  19. #define SEMAPHORE_TEST_AND_SET(lock)    
  20. ({
  21. long temp = SEMAPHORE_SET;              
  22. __asm__ volatile ("xchgl %0,(%2)"       
  23.         :"=r" (temp)                    
  24.         :"0" (temp),"r" (lock));        
  25. temp;                                   
  26. })
  27. #define SEMAPHORE_RESET(lock)           *lock = SEMAPHORE_CLEAR
  28. /*
  29.  * New types
  30.  */
  31. typedef long    semaphore;
  32. /*
  33.  * sigset_t macros
  34.  */
  35. #define SIG_ANY(sig) (sig)
  36. #define SIGMAX 31
  37. /*
  38.  * New Strutures
  39.  */
  40. struct machdep_pthread {
  41.     void         *(*start_routine)(void *);
  42.     void         *start_argument;
  43.     void         *machdep_stack;
  44. struct itimerval machdep_timer;
  45.     jmp_buf      machdep_state;
  46. #define JB_BP 3
  47. #define JB_SP 4
  48. #define JB_PC 5
  49.     char       machdep_float_state[108];
  50. };
  51. /*
  52.  * Static machdep_pthread initialization values.
  53.  * For initial thread only.
  54.  */
  55. #define MACHDEP_PTHREAD_INIT    
  56. { NULL, NULL, NULL, { { 0, 0 }, { 0, 100000 } }, 0 }
  57. /*
  58.  * Minimum stack size
  59.  */
  60. #define PTHREAD_STACK_MIN 2048
  61. /*
  62.  * Some fd flag defines that are necessary to distinguish between posix
  63.  * behavior and bsd4.3 behavior.
  64.  */
  65. #define __FD_NONBLOCK  O_NONBLOCK
  66. /*
  67.  * New functions
  68.  */
  69. __BEGIN_DECLS
  70. #if defined(PTHREAD_KERNEL)
  71. #define __machdep_stack_get(x)      (x)->machdep_stack
  72. #define __machdep_stack_set(x, y)   (x)->machdep_stack = y
  73. #define __machdep_stack_repl(x, y)                          
  74. {                                                           
  75.     if (stack = __machdep_stack_get(x)) {                   
  76.         __machdep_stack_free(stack);                        
  77.     }                                                       
  78.     __machdep_stack_set(x, y);                              
  79. }   
  80.    
  81. void *  __machdep_stack_alloc       __P_((size_t));
  82. void    __machdep_stack_free        __P_((void *));
  83. int machdep_save_state      __P_((void));
  84. #endif
  85. __END_DECLS