📄 heap.h
字号:
/*================================ heap.h ===================================*/#include <ulocks.h>#ifdef MAIN#define EXTRN#else#define EXTRN extern#endif/*---------------------------------------------------------------------------*/EXTRN int pid;EXTRN int size;/*---------------------------------------------------------------------------*/#define S_HI_BITS 0x38000 /* Top 3 bits = 8, # of recs/cache ln*/#define S_LO_BITS 0x07fff /* Everything else. */#define S_HI_SHIFT 15 /* Total bits of records - low shift */#define S_LO_SHIFT 3#define SHUFFLE(i) ( \ ( ((i) & S_HI_BITS) >> S_HI_SHIFT ) | \ ( ((i) & S_LO_BITS) << S_LO_SHIFT ) \ )/*---------------------------------------------------------------------------*/#define T_EMPTY -1 /* Item record is empty. */#define T_PRESENT -2 /* Item record is in place (usable). */#define T_PENDING -3#define T_WANTED -4#define MAXINT 0x7fffffff/*---------------------------------------------------------------------------*/typedef struct { volatile int i_lck; /* Lock on item record. */ volatile int i_tag; /* Item processor/status tag. */ volatile int i_pri; /* Item Priority. */ volatile int i_dat; /* Item Data. */} element_t;typedef struct { ulock_t l_lock; /* Lock on queue. */ volatile int l_lck; /* Lock on last item counter. */ volatile int l_lst; /* Last item in queue counter. */ volatile int l_ful; volatile unsigned b_value; /* Butterfly value */ volatile unsigned b_set_bit; /* Top bit for this set (tree level).*/ volatile unsigned b_high_bit; /* Hi bit for this set (tree level). */} shared_mem_t;/*---------------------------------------------------------------------------*/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -