engine-alpha-netbsd-1.1.h
上传用户:tsgydb
上传日期:2007-04-14
资源大小:10674k
文件大小:3k
源码类别:

MySQL数据库

开发平台:

Visual C++

  1. /* ==== machdep.h ============================================================
  2.  * Copyright (c) 1994 Chris Provenzano (proven@athena.mit.edu) and
  3.  * Ken Raeburn (raeburn@mit.edu).
  4.  *
  5.  * engine-alpha-osf1.h,v 1.4.4.1 1995/12/13 05:41:42 proven Exp
  6.  *
  7.  */
  8. #include <unistd.h>
  9. #include <setjmp.h>
  10. #include <sys/time.h>
  11. #include <sys/cdefs.h>
  12. /* The first machine dependent functions are the SEMAPHORES needing
  13.    the test and set instruction.
  14.    On the Alpha, the actual values here are irrelevant; they just have
  15.    to be different.  */
  16. #define SEMAPHORE_CLEAR 0
  17. #define SEMAPHORE_SET   1
  18. #if 0
  19. #define SEMAPHORE_TEST_AND_SET(lock)    
  20. ({ int *_sem_lock = (lock), locked, old;
  21.    asm ("mb" : : : "memory");
  22.    do { asm ("ldl_l %0,%1" : "=r" (old) : "m" (*_sem_lock));
  23. /* ?? if (old != SEMAPHORE_CLEAR) break; */
  24. asm ("stl_c %0,%1" : "=r" (locked), "=m" (*_sem_lock)
  25.    : "0" (SEMAPHORE_SET));
  26.    } while (!locked);
  27.    asm ("mb" : : : "memory");
  28.    old == SEMAPHORE_CLEAR; })
  29. #define SEMAPHORE_RESET(lock)           
  30. ({ int *_sem_lock = (lock);
  31.    *_sem_lock = SEMAPHORE_CLEAR;
  32.    asm ("mb" : : : "memory"); })
  33. #endif
  34. /*
  35.  * New types
  36.  */
  37. typedef int semaphore;
  38. /*
  39.  * sigset_t macros
  40.  */
  41. #define SIG_ANY(sig) (sig)
  42. #define SIGMAX 31
  43. /*
  44.  * New Strutures
  45.  */
  46. struct machdep_pthread {
  47.     void         *(*start_routine)(void *);
  48.     void         *start_argument;
  49.     void         *machdep_stack;
  50.     struct itimerval machdep_timer;
  51.     unsigned long machdep_istate[11];
  52.     unsigned long      machdep_fstate[9];
  53. };
  54. /*
  55.  * Static machdep_pthread initialization values.
  56.  * For initial thread only.
  57.  */
  58. #define MACHDEP_PTHREAD_INIT    
  59. { NULL, NULL, NULL, { { 0, 0 }, { 0, 100000 } }, 0 }
  60. /*
  61.  * Minimum stack size
  62.  */
  63. #define PTHREAD_STACK_MIN 2048
  64. /*
  65.  * Some fd flag defines that are necessary to distinguish between posix
  66.  * behavior and bsd4.3 behavior.
  67.  */
  68. #define __FD_NONBLOCK  O_NONBLOCK
  69. /*
  70.  * New functions
  71.  */
  72. __BEGIN_DECLS
  73. #if defined(PTHREAD_KERNEL)
  74. #define __machdep_stack_get(x)      (x)->machdep_stack
  75. #define __machdep_stack_set(x, y)   (x)->machdep_stack = y
  76. #define __machdep_stack_repl(x, y)                          
  77. {                                                           
  78.     if (stack = __machdep_stack_get(x)) {                   
  79.         __machdep_stack_free(stack);                        
  80.     }                                                       
  81.     __machdep_stack_set(x, y);                              
  82. }
  83. void *  __machdep_stack_alloc       __P_((size_t));
  84. void    __machdep_stack_free        __P_((void *));
  85. int machdep_save_state      __P_((void));
  86. int __machdep_save_int_state __P_((unsigned long *));
  87. void __machdep_restore_int_state __P_((unsigned long *));
  88. void __machdep_save_fp_state __P_((unsigned long *));
  89. void __machdep_restore_fp_state __P_((unsigned long *));
  90. #endif
  91. __END_DECLS