Mercurial > cgi-bin > hgwebdir.cgi > VMS > VMS_Implementations > VMS_impls > VMS__MC_shared_impl
diff probes.c @ 52:f59cfa31a579
fixed up probes just a bit
| author | Me |
|---|---|
| date | Sat, 30 Oct 2010 21:53:55 -0700 |
| parents | 8f7141a9272e |
| children | 42dd44df1bb0 |
line diff
1.1 --- a/probes.c Sat Oct 30 20:55:39 2010 -0700 1.2 +++ b/probes.c Sat Oct 30 21:53:55 2010 -0700 1.3 @@ -8,6 +8,7 @@ 1.4 #include <stdlib.h> 1.5 #include <malloc.h> 1.6 #include <sys/time.h> 1.7 +#include <string.h> 1.8 1.9 #include "VMS.h" 1.10 #include "Queue_impl/BlockingQueue.h" 1.11 @@ -123,17 +124,36 @@ 1.12 IntervalProbe * 1.13 create_generic_probe( char *nameStr, VirtProcr *animPr ) 1.14 { IntervalProbe *newProbe; 1.15 - int32 idx; 1.16 VMSSemReq reqData; 1.17 1.18 reqData.reqType = createProbe; 1.19 reqData.nameStr = nameStr; 1.20 1.21 - VMS__send_VMSSem_request( reqData, animPr ); 1.22 + VMS__send_VMSSem_request( &reqData, animPr ); 1.23 1.24 return animPr->dataReturnedFromReq; 1.25 } 1.26 1.27 +/*Use this version from outside VMS -- it uses external malloc, and modifies 1.28 + * dynamic array, so can't be animated in a slave VP 1.29 + */ 1.30 +IntervalProbe * 1.31 +ext__create_generic_probe( char *nameStr ) 1.32 + { IntervalProbe *newProbe; 1.33 + int32 nameLen; 1.34 + 1.35 + newProbe = malloc( sizeof(IntervalProbe) ); 1.36 + nameLen = strlen( nameStr ); 1.37 + newProbe->nameStr = malloc( nameLen ); 1.38 + memcpy( newProbe->nameStr, nameStr, nameLen ); 1.39 + newProbe->hist = NULL; 1.40 + newProbe->schedChoiceWasRecorded = FALSE; 1.41 + newProbe->probeID = 1.42 + addToDynArray( newProbe, _VMSMasterEnv->dynIntervalProbesInfo ); 1.43 + 1.44 + return newProbe; 1.45 + } 1.46 + 1.47 int32 1.48 VMS_impl__record_time_point_into_new_probe( char *nameStr, VirtProcr *animPr ) 1.49 { IntervalProbe *newProbe; 1.50 @@ -154,6 +174,25 @@ 1.51 } 1.52 1.53 int32 1.54 +VMS_ext_impl__record_time_point_into_new_probe( char *nameStr ) 1.55 + { IntervalProbe *newProbe; 1.56 + struct timeval *startStamp; 1.57 + float64 startSecs; 1.58 + 1.59 + newProbe = ext__create_generic_probe( nameStr ); 1.60 + newProbe->endSecs = 0; 1.61 + 1.62 + gettimeofday( &(newProbe->startStamp), NULL); 1.63 + 1.64 + //turn into a double 1.65 + startStamp = &(newProbe->startStamp); 1.66 + startSecs = startStamp->tv_sec + ( startStamp->tv_usec / 1000000.0 ); 1.67 + newProbe->startSecs = startSecs; 1.68 + 1.69 + return newProbe->probeID; 1.70 + } 1.71 + 1.72 +int32 1.73 VMS_impl__create_single_interval_probe( char *nameStr, VirtProcr *animPr ) 1.74 { IntervalProbe *newProbe; 1.75
