/** * Ensure that the scheduler is using parc memory inside libevent */ LONGBOW_TEST_CASE(Global, parc_EventScheduler_Memory) { PARCEventScheduler *parcEventScheduler = parcEventScheduler_Create(); assertNotNull(parcEventScheduler, "parcEventScheduler_Create returned a null reference"); size_t baseline = parcMemory_Outstanding(); struct event *testEvent = event_new(parcEventScheduler_GetEvBase(parcEventScheduler), -1, 0, _test_memory_event, NULL); assertTrue(parcMemory_Outstanding() > baseline, "event_new() did not increase parcMemory_Outstanding: baseline %zu now %u", baseline, parcMemory_Outstanding()); event_free(testEvent); assertTrue(parcMemory_Outstanding() == baseline, "event_free() did reduce to baseline: baseline %zu now %u", baseline, parcMemory_Outstanding()); parcEventScheduler_Destroy(&parcEventScheduler); assertTrue(parcSafeMemory_ReportAllocation(STDOUT_FILENO) == 0, "Memory imbalance on create/destroy: %u", parcMemory_Outstanding()); }
LONGBOW_TEST_CASE(Global, parc_EventScheduler_GetEvBase) { PARCEventScheduler *parcEventScheduler = parcEventScheduler_Create(); assertNotNull(parcEventScheduler, "parcEventScheduler_Create returned a null reference"); assertNotNull(parcEventScheduler_GetEvBase(parcEventScheduler), "Expected a non-null EV pointer."); parcEventScheduler_Destroy(&parcEventScheduler); }
PARCEventSignal * parcEventSignal_Create(PARCEventScheduler *eventScheduler, int signal, PARCEventType flags, PARCEvent_Callback *callback, void *callbackArgs) { PARCEventSignal *parcEventSignal = parcMemory_Allocate(sizeof(PARCEventSignal)); assertNotNull(parcEventSignal, "parcMemory_Allocate(%zu) returned NULL", sizeof(PARCEventSignal)); parcEventSignal->eventScheduler = eventScheduler; parcEventSignal->callback = callback; parcEventSignal->callbackUserData = callbackArgs; parcEventSignal->event = event_new(parcEventScheduler_GetEvBase(eventScheduler), signal, internal_PARCEventType_to_libevent_type(flags), _parc_event_signal_callback, parcEventSignal); assertNotNull(parcEventSignal->event, "Could not create a new event!"); parcEventSignal_LogDebug(parcEventSignal, "parcEventSignal_Create(base=%p,signal=%x,flags=%x,cb=%p,args=%p) = %p\n", parcEventScheduler_GetEvBase(eventScheduler), signal, flags, callback, callbackArgs, parcEventSignal); return parcEventSignal; }