engine-i386-freebsd-1.1.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.  */
  7. #include <unistd.h>
  8. #include <setjmp.h>
  9. #include <sys/time.h>
  10. /*
  11.  * The first machine dependent functions are the SEMAPHORES
  12.  * needing the test and set instruction.
  13.  */
  14. #define SEMAPHORE_CLEAR 0
  15. #define SEMAPHORE_SET   1
  16. #define SEMAPHORE_TEST_AND_SET(lock)    
  17. ({
  18. long temp = SEMAPHORE_SET;              
  19. __asm__ volatile ("xchgl %0,(%2)"       
  20.         :"=r" (temp)                    
  21.         :"0" (temp),"r" (lock));        
  22. temp;                                   
  23. })
  24. #define SEMAPHORE_RESET(lock)           *lock = SEMAPHORE_CLEAR
  25. /*
  26.  * New types
  27.  */
  28. typedef long    semaphore;
  29. /*
  30.  * sigset_t macros
  31.  */
  32. #define SIG_ANY(sig) (sig)
  33. #define SIGMAX 31
  34. /*
  35.  * New Strutures
  36.  */
  37. struct machdep_pthread {
  38.     void         *(*start_routine)(void *);
  39.     void         *start_argument;
  40.     void         *machdep_stack;
  41. struct itimerval machdep_timer;
  42.     jmp_buf      machdep_state;
  43. };
  44. /*
  45.  * Static machdep_pthread initialization values.
  46.  * For initial thread only.
  47.  */
  48. #define MACHDEP_PTHREAD_INIT    
  49. { NULL, NULL, NULL, { { 0, 0 }, { 0, 100000 } }, 0 }
  50. /*
  51.  * Minimum stack size
  52.  */
  53. #define PTHREAD_STACK_MIN 1024
  54. /*
  55.  * Some fd flag defines that are necessary to distinguish between posix
  56.  * behavior and bsd4.3 behavior.
  57.  */
  58. #define __FD_NONBLOCK  O_NONBLOCK
  59. /*
  60.  * New functions
  61.  */
  62. __BEGIN_DECLS
  63. #if defined(PTHREAD_KERNEL)
  64. int machdep_save_state      __P_((void));
  65. #endif
  66. __END_DECLS