47#ifdef USE_RAND_TIEBREAKER
66#ifdef USE_RAND_TIEBREAKER
86 for (i = 0; i < 2; i++) {
122 newRoot = oldRoot->
child[d];
123 oldMiddle = newRoot->
child[!d];
125 oldRoot->
child[d] = oldMiddle;
126 newRoot->
child[!d] = oldRoot;
143 for (d = 0; d < 2; d++) {
180 "AVL tree out of memory.\nIncrease avl-size beyond %d\n",
196#ifdef USE_RAND_TIEBREAKER
200 if (key->
event_id == (*t)->key->event_id) {
202 if (key->
send_pe == (*t)->key->send_pe) {
214#ifdef USE_RAND_TIEBREAKER
248 tw_event *event_with_lowest_ts = NULL;
255 event_with_lowest_ts = oldroot->
key;
256 *t = oldroot->
child[1];
265 return event_with_lowest_ts;
281#ifdef USE_RAND_TIEBREAKER
285 if (key->
event_id == (*t)->key->event_id) {
287 if (key->
send_pe == (*t)->key->send_pe) {
312#ifdef USE_RAND_TIEBREAKER
335 if (
g_tw_pe->avl_list_head == NULL) {
337 "AVL tree out of memory.\nIncrease avl-size beyond %d\n",
353 (t)->next =
g_tw_pe->avl_list_head;
void avlPrintKeys(AvlTree t)
int avlSearch(AvlTree t, tw_event *key)
tw_event * avlDelete(AvlTree *t, tw_event *key)
static void avlRebalance(AvlTree *t)
static void avlFixHeight(AvlTree t)
void avlInsert(AvlTree *t, tw_event *key)
tw_event * avlDeleteMin(AvlTree *t)
void avlDestroy(AvlTree t)
void avlSanityCheck(AvlTree root)
int avlGetHeight(AvlTree t)
static void avlRotate(AvlTree *root, int d)
int avlGetHeight(AvlTree t)
#define TW_STIME_CMP(x, y)
void tw_error(const char *file, int line, const char *fmt,...)
void tw_printf(const char *file, int line, const char *fmt,...)
uint32_t g_tw_avl_node_count
struct avlNode * child[2]
double event_tiebreaker[20]
tw_stime recv_ts
Actual time to be received.
tw_eventid event_id
Unique id assigned by src_lp->pe if remote.
tw_event_sig sig
Event signature, to be used by tiebreaker.
Holds the entire PE state.