llsc4.h
上传用户:jlfgdled
上传日期:2013-04-10
资源大小:33168k
文件大小:2k
源码类别:

Linux/Unix编程

开发平台:

Unix_Linux

  1. /* 
  2.  *
  3.  * This file is subject to the terms and conditions of the GNU General Public
  4.  * License.  See the file "COPYING" in the main directory of this archive
  5.  * for more details.
  6.  *
  7.  * Copyright (C) 2000-2002 Silicon Graphics, Inc. All rights reserved.
  8.  */
  9. #ifdef STANDALONE
  10. #include "lock.h"
  11. #endif
  12. #define DEF_NAPTICKS 0
  13. #define DEF_PASSES 0
  14. #define DEF_AUTO_PASSES 1000000
  15. #define DEF_STOP_ON_ERROR 1
  16. #define DEF_VERBOSE 0
  17. #define DEF_LINECOUNT 2
  18. #define DEF_ITER_MSG 0
  19. #define DEF_VV 0xffffffff
  20. #define DEF_LINEPAD 0x234
  21. #define LLSC_MAXCPUS 64
  22. #define CACHELINE 64
  23. #define MAX_LINECOUNT 1024
  24. #define K 1024
  25. #define MB (K*K)
  26. #define uint  unsigned int
  27. #define ushort unsigned short
  28. #define uchar unsigned char
  29. #define vint volatile int
  30. #define vlong volatile long
  31. #define LOCKADDR(i) &linep->lock[(i)]
  32. #define LOCK(i) set_lock(LOCKADDR(i), lockpat)
  33. #define UNLOCK(i) clr_lock(LOCKADDR(i), lockpat)
  34. #define GETLOCK(i) *LOCKADDR(i)
  35. #define ZEROLOCK(i) init_lock(LOCKADDR(i))
  36. #define CACHEALIGN(a) ((char*)((long)(a) & ~127L))
  37. typedef uint guard_t;
  38. typedef uint lock_t;
  39. typedef uint share_t;
  40. typedef uchar private_t;
  41. typedef struct {
  42. guard_t guard1;
  43. lock_t lock[2];
  44. share_t share[2];
  45. private_t private[LLSC_MAXCPUS];
  46. share_t share0;
  47. share_t share1;
  48. guard_t guard2;
  49. } dataline_t ;
  50. #define LINEPAD k_linepad
  51. #define LINESTRIDE (((sizeof(dataline_t)+CACHELINE-1)/CACHELINE)*CACHELINE + LINEPAD)
  52. typedef struct {
  53. vint threadstate;
  54. uint threadpasses;
  55. private_t private[MAX_LINECOUNT];
  56. } threadprivate_t;
  57. typedef struct {
  58. vlong sk_go; /* 0=idle, 1=init, 2=run */
  59. long sk_linecount;
  60. long sk_passes;
  61. long sk_napticks;
  62. long sk_stop_on_error;
  63. long sk_verbose;
  64. long sk_iter_msg;
  65. long sk_vv;
  66. long sk_linepad;
  67. long sk_options;
  68. long sk_testnumber;
  69. vlong sk_currentpass;
  70. void  *sk_blocks;
  71. threadprivate_t *sk_threadprivate[LLSC_MAXCPUS];
  72. } control_t;
  73. /* Run state (k_go) constants */
  74. #define ST_IDLE 0
  75. #define ST_INIT 1
  76. #define ST_RUN 2
  77. #define ST_STOP 3
  78. #define ST_ERRSTOP 4
  79. /* Threadstate constants */
  80. #define TS_STOPPED 0
  81. #define TS_RUNNING 1
  82. #define TS_KILLED 2
  83. int llsc_main (int cpuid);