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