void TracePostStartMessage(Trace trace) { Arena arena; TraceId ti; TraceStartMessage tsMessage; AVERT(Trace, trace); AVER(trace->state == TraceUNFLIPPED); arena = trace->arena; AVERT(Arena, arena); ti = trace->ti; AVERT(TraceId, ti); tsMessage = arena->tsMessage[ti]; if(tsMessage) { AVERT(TraceStartMessage, tsMessage); traceStartWhyToTextBuffer(tsMessage->why, sizeof tsMessage->why, trace->why); arena->tsMessage[ti] = NULL; MessagePost(arena, TraceStartMessageMessage(tsMessage)); } else { arena->droppedMessages += 1; } /* We have consumed the pre-allocated message */ AVER(!arena->tsMessage[ti]); }
void TracePostMessage(Trace trace) { Arena arena; TraceId ti; TraceMessage tMessage; AVERT(Trace, trace); AVER(trace->state == TraceFINISHED); arena = trace->arena; AVERT(Arena, arena); ti = trace->ti; AVERT(TraceId, ti); tMessage = arena->tMessage[ti]; if(tMessage) { AVERT(TraceMessage, tMessage); tMessage->liveSize = trace->forwardedSize + trace->preservedInPlaceSize; tMessage->condemnedSize = trace->condemned; tMessage->notCondemnedSize = trace->notCondemned; arena->tMessage[ti] = NULL; MessagePost(arena, TraceMessageMessage(tMessage)); } else { arena->droppedMessages += 1; } /* We have consumed the pre-allocated message */ AVER(!arena->tMessage[ti]); }
void* InterfaceMainLoop(void* arg) { char *line = (char*) malloc(200); size_t size; //char buf[200]; while (strcmp(line,"quit") != 0) { printf("blakadm> "); if (getline(&line, &size, stdin) != -1) { EnterServerLock(); // TODO: in windows this uses a set char array of size 200, no bounds checking // is being done here yet //TryAdminCommand(console_session_id,buf); TryAdminCommand(console_session_id,line); LeaveServerLock(); } } free(line); MessagePost(main_thread_id,WM_QUIT,0,0); }
void cUISelectButton::Select() { bool wasSelected = Selected(); SetSkinState( cUISkinState::StateSelected ); mControlFlags |= UI_CTRL_FLAG_SELECTED; if ( !wasSelected ) { cUIMessage tMsg( this, cUIMessage::MsgSelected, 0 ); MessagePost( &tMsg ); } }
// Adds a timer to the heap, using timer_node data. Passed // timer_node is first unused element in timer_heap array. __forceinline void TimerAddNode(timer_node *t) { if (numActiveTimers == 0 || timer_heap[0]->time > t->time) { // We're making a new first-timer, so the time main loop should wait might // have changed, so have it break out of loop and recalibrate MessagePost(main_thread_id, WM_BLAK_MAIN_RECALIBRATE, 0, 0); } // Start node off at end of heap. int i = numActiveTimers++; timer_heap[i]->heap_index = i; // Push node up if necessary. while (i > 0 && timer_heap[i]->time < timer_heap[PARENT(i)]->time) { TimerSwapIndex(i, PARENT(i)); i = PARENT(i); } }