# HG changeset patch # User Nina Engelhardt # Date 1312560187 -7200 # Node ID b1817e2451b1bada18a72012ebcb69e0917647b6 # Parent 724c7a0b687f6c8bf4fbeb8e1dc877def8e6f529 add task # to counter stats diff -r 724c7a0b687f -r b1817e2451b1 Counters/Counters.c --- a/Counters/Counters.c Wed Aug 03 17:05:18 2011 +0200 +++ b/Counters/Counters.c Fri Aug 05 18:03:07 2011 +0200 @@ -3,7 +3,7 @@ void print_record_human_readable(CounterRecord* record){ - printf("=== Loop Stats (VP %d suspended at %p): ===\n",record->vp_id,record->addr_of_libcall_for_req); + printf("=== Loop Stats (VP %d # %d suspended at %p): ===\n",record->vp_id,record->task_position,record->addr_of_libcall_for_req); printf("Constraints check done:\t%lu cycles, %lu instrs [Core %d]\n",record->sc_done_cycles,record->sc_done_instrs,record->req_core); printf("Time in ready queue:\tblocked at %u, unblocked at %u\n",record->blocked_timestamp,record->unblocked_timestamp); printf("Assigner started:\t%lu cycles, %lu instrs [Core %d]\n",record->start_assign_cycles,record->start_assign_instrs,record->assigning_core); @@ -15,7 +15,7 @@ void print_record_csv(CounterRecord* record) { //Columns are VP,ret_addr, (core,cycles,instrs)* for each savepoint, blocked,unblocked - printf("%d,%p,",record->vp_id,record->addr_of_libcall_for_req); + printf("%d,%d,%p,",record->vp_id,record->task_position,record->addr_of_libcall_for_req); printf("%d,%lu,%lu,",record->req_core,record->sc_done_cycles,record->sc_done_instrs); printf("%d,%lu,%lu,",record->assigning_core,record->start_assign_cycles,record->start_assign_instrs); printf("%d,%lu,%lu,",record->assigning_core,record->end_assign_cycles,record->end_assign_instrs); @@ -27,7 +27,7 @@ void print_record_csv_to_file(CounterRecord* record, FILE* file) { //Columns are VP,ret_addr, (core,cycles,instrs)* for each savepoint, blocked,unblocked - fprintf(file,"%d,%p,",record->vp_id,record->addr_of_libcall_for_req); + fprintf(file,"%d,%d,%p,",record->vp_id,record->task_position,record->addr_of_libcall_for_req); fprintf(file,"%d,%lu,%lu,",record->req_core,record->sc_done_cycles,record->sc_done_instrs); fprintf(file,"%d,%lu,%lu,",record->assigning_core,record->start_assign_cycles,record->start_assign_instrs); fprintf(file,"%d,%lu,%lu,",record->assigning_core,record->end_assign_cycles,record->end_assign_instrs); diff -r 724c7a0b687f -r b1817e2451b1 Counters/Counters.h --- a/Counters/Counters.h Wed Aug 03 17:05:18 2011 +0200 +++ b/Counters/Counters.h Fri Aug 05 18:03:07 2011 +0200 @@ -18,6 +18,7 @@ int assigning_core; int req_core; int vp_id; + int task_position; uint32 blocked_timestamp; uint32 unblocked_timestamp; uint64 req_cycles; diff -r 724c7a0b687f -r b1817e2451b1 MasterLoop.c --- a/MasterLoop.c Wed Aug 03 17:05:18 2011 +0200 +++ b/MasterLoop.c Fri Aug 05 18:03:07 2011 +0200 @@ -159,6 +159,7 @@ CounterRecord* newRecord = VMS__malloc(sizeof(CounterRecord)); newRecord->req_core = thisCoresIdx; newRecord->vp_id = currSlot->procrAssignedToSlot->procrID; + newRecord->task_position = lastRecord->task_position + 1; getReturnAddressBeforeLibraryCall(currSlot->procrAssignedToSlot, &(newRecord->addr_of_libcall_for_req)); addToDynArray( (void*) newRecord, currSlot->procrAssignedToSlot->counter_history_array_info); lastRecord = newRecord; diff -r 724c7a0b687f -r b1817e2451b1 ProcrContext.c --- a/ProcrContext.c Wed Aug 03 17:05:18 2011 +0200 +++ b/ProcrContext.c Fri Aug 05 18:03:07 2011 +0200 @@ -63,6 +63,7 @@ newPr->counter_history = VMS__malloc(10*sizeof(void*)); newPr->counter_history_array_info = makePrivDynArrayInfoFrom(&(newPr->counter_history),10); CounterRecord* newRecord = VMS__malloc(sizeof(CounterRecord)); + newRecord->task_position = 0; addToDynArray( (void*) newRecord, newPr->counter_history_array_info); #endif //======================================================================== diff -r 724c7a0b687f -r b1817e2451b1 VMS.h --- a/VMS.h Wed Aug 03 17:05:18 2011 +0200 +++ b/VMS.h Fri Aug 05 18:03:07 2011 +0200 @@ -434,13 +434,13 @@ } \ } while (0) -#define getReturnAddressBeforeLibraryCall(vp_ptr, res_ptr) do{ \ -void* frame_ptr0 = vp_ptr->framePtr; \ +#define getReturnAddressBeforeLibraryCall(vp_ptr, res_ptr) do{ \ +void* frame_ptr0 = vp_ptr->framePtr; \ void* frame_ptr1 = *((void**)frame_ptr0); \ void* frame_ptr2 = *((void**)frame_ptr1); \ void* frame_ptr3 = *((void**)frame_ptr2); \ -void* ret_addr = *((void**)frame_ptr3 + 1); \ -*res_ptr = ret_addr; \ +void* ret_addr = *((void**)frame_ptr3 + 1); \ +*res_ptr = ret_addr; \ } while (0) #define MEAS__SUB_CREATE /*turn on/off subtraction of create from plugin*/