llsc4.h
上传用户:lgb322
上传日期:2013-02-24
资源大小:30529k
文件大小:2k
源码类别:

嵌入式Linux

开发平台:

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 Silicon Graphics, Inc.
  8.  * Copyright (C) 2000 by Jack Steiner (steiner@sgi.com)
  9.  */
  10. #ifdef STANDALONE
  11. #include "lock.h"
  12. #endif
  13. #define DEF_NAPTICKS 0
  14. #define DEF_PASSES 0
  15. #define DEF_AUTO_PASSES 1000000
  16. #define DEF_STOP_ON_ERROR 1
  17. #define DEF_VERBOSE 0
  18. #define DEF_LINECOUNT 2
  19. #define DEF_ITER_MSG 0
  20. #define DEF_VV 0xffffffff
  21. #define DEF_LINEPAD 0x234
  22. #define MAXCPUS 16
  23. #define CACHELINE 64
  24. #define MAX_LINECOUNT 1024
  25. #define K 1024
  26. #define MB (K*K)
  27. #define uint  unsigned int
  28. #define ushort unsigned short
  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) zero_lock(LOCKADDR(i))
  36. #define CACHEALIGN(a) ((void*)((long)(a) & ~127L))
  37. typedef uint lock_t;
  38. typedef uint share_t;
  39. typedef uint private_t;
  40. typedef struct {
  41. lock_t lock[2];
  42. share_t share[2];
  43. private_t private[MAXCPUS];
  44. share_t share0;
  45. share_t share1;
  46. } dataline_t ;
  47. #define LINEPAD k_linepad
  48. #define LINESTRIDE (((sizeof(dataline_t)+CACHELINE-1)/CACHELINE)*CACHELINE + LINEPAD)
  49. typedef struct {
  50. vint threadstate;
  51. uint threadpasses;
  52. private_t private[MAX_LINECOUNT];
  53. } threadprivate_t;
  54. typedef struct {
  55. vlong sk_go; /* 0=idle, 1=init, 2=run */
  56. long sk_linecount;
  57. long sk_passes;
  58. long sk_napticks;
  59. long sk_stop_on_error;
  60. long sk_verbose;
  61. long sk_iter_msg;
  62. long sk_vv;
  63. long sk_linepad;
  64. long sk_options;
  65. long sk_testnumber;
  66. vlong sk_currentpass;
  67. void  *sk_blocks;
  68. threadprivate_t *sk_threadprivate[MAXCPUS];
  69. } control_t;
  70. /* Run state (k_go) constants */
  71. #define ST_IDLE 0
  72. #define ST_INIT 1
  73. #define ST_RUN 2
  74. #define ST_STOP 3
  75. #define ST_ERRSTOP 4
  76. /* Threadstate constants */
  77. #define TS_STOPPED 0
  78. #define TS_RUNNING 1
  79. #define TS_KILLED 2
  80. int llsc_main (int cpuid, long mbasex);