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