Mercurial > cgi-bin > hgwebdir.cgi > VMS > VMS_Implementations > VMS_impls > VMS__MC_shared_impl
comparison probes.c @ 56:420a09d3f32a
changed sem-lib interface for dissipating to send_dissipate_req
| author | Me |
|---|---|
| date | Thu, 04 Nov 2010 17:57:39 -0700 |
| parents | 8f7141a9272e |
| children | 42dd44df1bb0 |
comparison
equal
deleted
inserted
replaced
| 0:d9d274ef1330 | 1:3a0026f3a65e |
|---|---|
| 6 | 6 |
| 7 #include <stdio.h> | 7 #include <stdio.h> |
| 8 #include <stdlib.h> | 8 #include <stdlib.h> |
| 9 #include <malloc.h> | 9 #include <malloc.h> |
| 10 #include <sys/time.h> | 10 #include <sys/time.h> |
| 11 #include <string.h> | |
| 11 | 12 |
| 12 #include "VMS.h" | 13 #include "VMS.h" |
| 13 #include "Queue_impl/BlockingQueue.h" | 14 #include "Queue_impl/BlockingQueue.h" |
| 14 #include "Histogram/Histogram.h" | 15 #include "Histogram/Histogram.h" |
| 15 | 16 |
| 121 * | 122 * |
| 122 */ | 123 */ |
| 123 IntervalProbe * | 124 IntervalProbe * |
| 124 create_generic_probe( char *nameStr, VirtProcr *animPr ) | 125 create_generic_probe( char *nameStr, VirtProcr *animPr ) |
| 125 { IntervalProbe *newProbe; | 126 { IntervalProbe *newProbe; |
| 126 int32 idx; | |
| 127 VMSSemReq reqData; | 127 VMSSemReq reqData; |
| 128 | 128 |
| 129 reqData.reqType = createProbe; | 129 reqData.reqType = createProbe; |
| 130 reqData.nameStr = nameStr; | 130 reqData.nameStr = nameStr; |
| 131 | 131 |
| 132 VMS__send_VMSSem_request( reqData, animPr ); | 132 VMS__send_VMSSem_request( &reqData, animPr ); |
| 133 | 133 |
| 134 return animPr->dataReturnedFromReq; | 134 return animPr->dataReturnedFromReq; |
| 135 } | |
| 136 | |
| 137 /*Use this version from outside VMS -- it uses external malloc, and modifies | |
| 138 * dynamic array, so can't be animated in a slave VP | |
| 139 */ | |
| 140 IntervalProbe * | |
| 141 ext__create_generic_probe( char *nameStr ) | |
| 142 { IntervalProbe *newProbe; | |
| 143 int32 nameLen; | |
| 144 | |
| 145 newProbe = malloc( sizeof(IntervalProbe) ); | |
| 146 nameLen = strlen( nameStr ); | |
| 147 newProbe->nameStr = malloc( nameLen ); | |
| 148 memcpy( newProbe->nameStr, nameStr, nameLen ); | |
| 149 newProbe->hist = NULL; | |
| 150 newProbe->schedChoiceWasRecorded = FALSE; | |
| 151 newProbe->probeID = | |
| 152 addToDynArray( newProbe, _VMSMasterEnv->dynIntervalProbesInfo ); | |
| 153 | |
| 154 return newProbe; | |
| 135 } | 155 } |
| 136 | 156 |
| 137 int32 | 157 int32 |
| 138 VMS_impl__record_time_point_into_new_probe( char *nameStr, VirtProcr *animPr ) | 158 VMS_impl__record_time_point_into_new_probe( char *nameStr, VirtProcr *animPr ) |
| 139 { IntervalProbe *newProbe; | 159 { IntervalProbe *newProbe; |
| 140 struct timeval *startStamp; | 160 struct timeval *startStamp; |
| 141 float64 startSecs; | 161 float64 startSecs; |
| 142 | 162 |
| 143 newProbe = create_generic_probe( nameStr, animPr ); | 163 newProbe = create_generic_probe( nameStr, animPr ); |
| 164 newProbe->endSecs = 0; | |
| 165 | |
| 166 gettimeofday( &(newProbe->startStamp), NULL); | |
| 167 | |
| 168 //turn into a double | |
| 169 startStamp = &(newProbe->startStamp); | |
| 170 startSecs = startStamp->tv_sec + ( startStamp->tv_usec / 1000000.0 ); | |
| 171 newProbe->startSecs = startSecs; | |
| 172 | |
| 173 return newProbe->probeID; | |
| 174 } | |
| 175 | |
| 176 int32 | |
| 177 VMS_ext_impl__record_time_point_into_new_probe( char *nameStr ) | |
| 178 { IntervalProbe *newProbe; | |
| 179 struct timeval *startStamp; | |
| 180 float64 startSecs; | |
| 181 | |
| 182 newProbe = ext__create_generic_probe( nameStr ); | |
| 144 newProbe->endSecs = 0; | 183 newProbe->endSecs = 0; |
| 145 | 184 |
| 146 gettimeofday( &(newProbe->startStamp), NULL); | 185 gettimeofday( &(newProbe->startStamp), NULL); |
| 147 | 186 |
| 148 //turn into a double | 187 //turn into a double |
