general PMM data structures More...
Go to the source code of this file.
Data Structures | |
| struct | pmm_config |
| struct | pmm_benchmark |
| struct | pmm_bench_list |
| struct | pmm_model |
| struct | pmm_routine |
Typedefs | |
| typedef enum pmm_construction_condition | PMM_Construction_Condition |
| typedef struct pmm_config | PMM_Config |
| typedef enum pmm_construction_method | PMM_Construction_Method |
| typedef struct pmm_benchmark | PMM_Benchmark |
| typedef struct pmm_bench_list | PMM_Bench_List |
| typedef struct pmm_model | PMM_Model |
| typedef struct pmm_routine | PMM_Routine |
Enumerations | |
| enum | pmm_construction_condition { CC_INVALID, CC_NOW, CC_UNTIL, CC_PERIODIC, CC_IDLE, CC_NOUSERS } |
| enum | pmm_construction_method { CM_NAIVE, CM_NAIVE_BISECT, CM_RAND, CM_GBBP, CM_GBBP_NAIVE, CM_INVALID } |
general PMM data structures
Data structures representing models, routines and the benchmarking server configuration are described here, along with functions that operate on them.
Definition in file pmm_model.h.
| typedef struct pmm_bench_list PMM_Bench_List |
structure describing a list of benchmarks
Benchmarks are doubly linked.
| typedef struct pmm_benchmark PMM_Benchmark |
Benchmark structure, storing information routine tests.
Details the on the parameters and execution results of a benchmark execution. Also pointers to next/previous benchmarks should the one in question is a member of a list.
| typedef struct pmm_config PMM_Config |
structure to hold the configuration of the benchmarking server
| typedef enum pmm_construction_condition PMM_Construction_Condition |
enumeration fo different model construction conditions that must be satisified to conduct benchmarking
| typedef enum pmm_construction_method PMM_Construction_Method |
enumeration of different model construction methods
| typedef struct pmm_routine PMM_Routine |
structure describing a routine to be benchmarked by pmm
enumeration fo different model construction conditions that must be satisified to conduct benchmarking
Definition at line 47 of file pmm_model.h.
enumeration of different model construction methods
Definition at line 94 of file pmm_model.h.
| void add_bench | ( | struct pmm_benchmark * | a, |
| struct pmm_benchmark * | b, | ||
| struct pmm_benchmark * | res | ||
| ) |
Adds performance data of one benchmark to another (a+b) storing result in res. Parameters added are: flops, seconds, wall_t, used_t.
| a | pointer to first benchmark to add |
| b | pointer to second benchmark to add |
| res | pointer to benchmark where result of addition is stored |
Definition at line 1391 of file pmm_model.c.
| int add_routine | ( | struct pmm_config * | c, |
| struct pmm_routine * | r | ||
| ) |
This function adds a pmm_routine structure to the routines array of the pmm_config structure. The array is reallocated as required, adding space for 5 routines at a time to prevent frequent reallocation.
| c | pointer to the config structure |
| r | pointer to the routine |
Definition at line 393 of file pmm_model.c.
| void avg_bench_list | ( | struct pmm_benchmark * | start, |
| struct pmm_benchmark * | end, | ||
| struct pmm_benchmark * | avg_b | ||
| ) |
Averages the flops and execution times of a sequence of benchmarks and copies this information into a benchmark structure pointed to by b
| start | pointer to the first benchmark in the sequence |
| end | pointer to the last benchmark in the sequence |
| avg_b | pointer to the benchmark where the average is to be stored |
Definition at line 1324 of file pmm_model.c.
| int bench_cut_contains | ( | struct pmm_loadhistory * | h, |
| struct pmm_benchmark * | b1, | ||
| struct pmm_benchmark * | b2 | ||
| ) |
This function determines if the 'cut' of the model at a specific benchmarked point, b1, contains the range of execution speeds that are defined by the cut of the model at a second benchmark point, b2.
The cut is defined as range of speeds between the maximum and minimum speeds as predicted by the model. If C_b1 contains C_b2, then b1_max > b2_max and b1_min < b2_min. As illustrated by the diagram below.
i.e.
* | b1_max * s| + b2_max * p| ...|...............+.... * e| cut@b1- | | -cut@b2 * e| | | * d| ...|...............+.... * | + b2_min * | b1_min * -+------------------------------------------ * | ^ size ^ * b1 b2 *
| h | pointer to the load history |
| b1 | pointer to first benchmark point |
| b2 | pointer to second benchmark point |
Definition at line 2120 of file pmm_model.c.
| int bench_cut_greater | ( | struct pmm_loadhistory * | h, |
| struct pmm_benchmark * | b1, | ||
| struct pmm_benchmark * | b2 | ||
| ) |
This function determines if the 'cut' of the model at a specific benchmarked point, b1, has no overlap on the range of execution speeds that are defined o by the cut of the model at a second benchmark point, b2. And further, that the cut of b1 lies higher
The cut is defined as range of speeds between the maximum and minimum speeds as predicted by the model. If C_b1 is greater than C_b2, then b1_min > b2_max . As illustrated by the diagram below.
* i.e. * | b1_max * s| + * p| | * e| cut@b1- | * e| ...| * d| | * | + * | b1_min b2_max * | ......+... * | | -cut@b2 * | ......+... * | b2_min * -+------------------------------------------ * | ^ size ^ * b1 b2 *
| h | pointer to the load history |
| b1 | pointer to first benchmark point |
| b2 | pointer to second benchmark point |
Definition at line 2259 of file pmm_model.c.
| int bench_cut_intersects | ( | struct pmm_loadhistory * | h, |
| struct pmm_benchmark * | b1, | ||
| struct pmm_benchmark * | b2 | ||
| ) |
This function determines if the 'cut' of the model at a specific benchmarked point, b1, overlaps the range of execution speeds that are defined by the cut of the model at a second benchmark point, b2.
The cut is defined as range of speeds between the maximum and minimum speeds as predicted by the model. If C_b1 intersects C_b2, then b1_max > b2_max and b1_min < b2_max or, b1_max > b2_min and b1_min < b2_min. As illustrated by the diagram below.
* i.e. * | b1_max * s| + * p| | * e| cut@b1- | b2_max * e| ...|...............+... * d| | | -cut@b2 * | + | * | b1_min .....+... * | b2_min * -+------------------------------------------ * | ^ size ^ * b1 b2 *
| h | pointer to the load history |
| b1 | pointer to first benchmark point |
| b2 | pointer to second benchmark point |
Definition at line 2194 of file pmm_model.c.
| int bench_cut_less | ( | struct pmm_loadhistory * | h, |
| struct pmm_benchmark * | b1, | ||
| struct pmm_benchmark * | b2 | ||
| ) |
This function performs the inverse of of bench_cut_greater
| h | pointer to the load history |
| b1 | pointer to first benchmark point |
| b2 | pointer to second benchmark point |
Definition at line 2283 of file pmm_model.c.
| int benchmark_on_axis | ( | struct pmm_model * | m, |
| struct pmm_benchmark * | b | ||
| ) |
Test if a benchmark is on one of the parameter axes of the model (i.e. all but one parameter is at a start),
| m | pointer to the model the benchmark belongs to |
| b | pointer to the benchmark |
Definition at line 683 of file pmm_model.c.
| void calc_bench_exec_stats | ( | struct pmm_model * | m, |
| int * | param, | ||
| double * | time_spent, | ||
| int * | num_execs | ||
| ) |
Calculate some statistics about the benchmarking of a particular point in the model, as described by the param parameter array. (Each point stored in a model may have multiple benchmarks, essentially, the sum of the time used by these benchmarks and the number of benchmarks are calculated.
| m | pointer to the model |
| param | pointer to an array of parameter values that |
| time_spent | pointer to double where the time spent is stored |
| num_execs | pointer to int where number of executions is stored |
Definition at line 1760 of file pmm_model.c.
| double calc_model_stats | ( | struct pmm_model * | m | ) |
Calculate some basic statistics about a model
| m | pointer to the model |
Definition at line 1806 of file pmm_model.c.
| int check_routine | ( | struct pmm_routine * | r | ) |
Function checks the routine structure for misconfigurations
| r | pointer to routine |
Definition at line 2684 of file pmm_model.c.
| char* construction_condition_to_string | ( | enum pmm_construction_condition | condition | ) |
convert a construction condition enum to a char array description
| condition | the construction method |
Definition at line 2333 of file pmm_model.c.
| char* construction_method_to_string | ( | enum pmm_construction_method | method | ) |
convert a construction method enum to a char array description
| method | the construction method |
Definition at line 2305 of file pmm_model.c.
| int copy_benchmark | ( | struct pmm_benchmark * | dst, |
| struct pmm_benchmark * | src | ||
| ) |
Copy a benchmark from one pointer to another. next and previous elments of the benchmark structure are not copied however. The copy exists outside of any benchmark list that the source might belong to.
| dst | pointer to destination benchmark |
| src | pointer to source benchmark |
Definition at line 702 of file pmm_model.c.
| void copy_timeval | ( | struct timeval * | dst, |
| struct timeval * | src | ||
| ) |
Copies timeval structures
| dst | pointer to the timeval to copy to |
| src | pointer to the timeval to copy from |
Definition at line 1459 of file pmm_model.c.
| int count_benchmarks_in_bench_list | ( | struct pmm_bench_list * | bl | ) |
Count the number of benchmarks in a list (this manually counts, does not return the size variable of the list).
| bl | pointer to the bench list to count |
Definition at line 633 of file pmm_model.c.
| int count_benchmarks_in_model | ( | struct pmm_model * | m | ) |
count the number of benchmarks in a model
| m | pointer to model |
Definition at line 614 of file pmm_model.c.
| int count_unique_benchmarks_in_sorted_list | ( | struct pmm_benchmark * | first | ) |
Count the number of unique benchmark points in a sorted list of benchmarks.
| first | pointer the first benchmark in the list |
Definition at line 656 of file pmm_model.c.
| void div_bench | ( | struct pmm_benchmark * | b, |
| double | d, | ||
| struct pmm_benchmark * | res | ||
| ) |
Divides a the performance data fields of a benchmark by some float. Relevant parameters are flops, seconds, wall_t and used_t.
| b | pointer to the benchmark to be divided |
| d | the devisor as a double |
| res | pointer to the location to store the result |
Definition at line 1417 of file pmm_model.c.
| void double_to_timespec | ( | double | d, |
| struct timespec * | ts | ||
| ) |
Convert a double to a timespec
| d | double value to convert |
| ts | pointer to timespec |
Definition at line 1501 of file pmm_model.c.
| void double_to_timeval | ( | double | d, |
| struct timeval * | tv | ||
| ) |
Converts a double to a timeval
| d | double value to convert from |
| tv | pointer to timeval |
Definition at line 1486 of file pmm_model.c.
|
read |
Searches a sorted bench list for the fastest instance of a benchmark with matching parameters and returns a pointer to that benchmark
| start | pointer to start bench to commence search |
| param | the parameter array to search for |
Definition at line 992 of file pmm_model.c.
|
read |
find_oldapprox will find the approximation of performance at a target point in a model, ignoring any data points that happen to be at that target point. The main use of this function is to find what the approximation of a model was before a data point was added to the model.
| m | pointer to the model |
| p | pointer to a parameter array describing the target point |
Definition at line 1904 of file pmm_model.c.
| void free_bench_list | ( | struct pmm_bench_list ** | bl | ) |
frees a benchmark list structure and members it contains
| bl | pointer to address of the benchmark list |
Definition at line 2826 of file pmm_model.c.
| void free_benchmark | ( | struct pmm_benchmark ** | b | ) |
frees a benchmark
| b | pointer to address of the benchmark |
Definition at line 2881 of file pmm_model.c.
| void free_benchmark_list_backwards | ( | struct pmm_benchmark ** | first_b | ) |
frees a benchmark list structure and members it contains by progressing backwards through the list
| first_b | pointer to address of the benchmark |
Definition at line 2862 of file pmm_model.c.
| void free_benchmark_list_forwards | ( | struct pmm_benchmark ** | last_b | ) |
frees a benchmark list structure and members it contains by progressing forwards through the list
| last_b | pointer to address of the benchmark |
Definition at line 2841 of file pmm_model.c.
| void free_config | ( | struct pmm_config ** | cfg | ) |
frees a configure structure and members it contains
| cfg | pointer to address of config structure |
Definition at line 2751 of file pmm_model.c.
| void free_loadhistory | ( | struct pmm_loadhistory ** | h | ) |
frees a load history structure and all of its members
| h | pointer to address of the load history structure |
Definition at line 243 of file pmm_load.c.
| void free_model | ( | struct pmm_model ** | m | ) |
frees a model structure and members it contains
| m | pointer to address of the model structure |
Definition at line 2803 of file pmm_model.c.
| void free_routine | ( | struct pmm_routine ** | r | ) |
frees a routine structure and members it contains
| r | pointer to address of routine structure |
Definition at line 2773 of file pmm_model.c.
|
read |
Returns pointer to the a newly allocated benchmark that represents the average of any benchmarks found in the model with parameters matching an aligned version of those described by param, or null if no benchmark exists with matching parameters
| m | pointer to the model |
| param | pointer to the first element of the target parameter array |
Definition at line 1694 of file pmm_model.c.
|
read |
Returns pointer to the a newly allocated benchmark that represents the average of any benchmarks found in the model that have the same parameters as those described by param, or null if no benchmark exists with matching parameters
| m | pointer to the model |
| p | pointer to the target parameter array |
Definition at line 1733 of file pmm_model.c.
|
read |
Searches a sorted bench list for multiple instances of a benchmark with matching parameters and returns a newly allocated benchmark that represents an average of the search hits.
| start | pointer to start bench to commence search |
| param | the parameter array to search for |
Definition at line 1046 of file pmm_model.c.
|
read |
Returns pointer to the first instance of benchmark from the model that has the same parameters as those requested, or null if no benchmark exists with matching parameters
| m | pointer to the model |
| p | pointer to the target parameter array |
Definition at line 1665 of file pmm_model.c.
|
read |
Searches a benchmark list for the first occurance of a benchmark and returns a pointer to that benchmark or NULL if no benchmark is found
| bl | bench list to search |
| p | the parameter array to search for |
Definition at line 1596 of file pmm_model.c.
|
read |
find the next benchmark in a sorted list that does not have identical parameters to b. As models may have more than one benchmark for the same point, looking at the ->next element of a benchmark may give us a second benchmark at the exact same point. Hence the need for this function
| b | pointer to a benchmark that is in a sorted list |
Definition at line 1245 of file pmm_model.c.
|
read |
find the previous benchmark in a sorted list that does not have identical parameters to b. As models may have more than one benchmark for the same point, looking at the ->previous element of a benchmark may give us a second benchmark at the exact same point. Hence the need for this function
| b | pointer to a benchmark that is in a sorted list |
Definition at line 1288 of file pmm_model.c.
| int init_bench_list | ( | struct pmm_model * | m, |
| struct pmm_paramdef_set * | pd_set | ||
| ) |
Initialise the model benchmark list with zero speed benchmarks at relevant points. For each parameter definition if the end value of a parameter is defined as having a zero speed (i.e. it is not a 'nonzero_end'), then create zero speed benchmarks at the end point on that parameter axis, i.e. for parameter i create a zero speed benchmark at at:
start_0,start_1,...,end_i,...,start_n-1,start_n.
The, if any parameter has a zero speed end defined, assume we cannot ever benchmark at end_0,end_1,...,end_n and set a zero speed benchmark at this point also.
| m | pointer to the model that the bench list belongs to |
| pd_set | pointer to the parameter definition set of the model |
Definition at line 207 of file pmm_model.c.
|
read |
Initialize and return a benchmark structure with zero speed in a position described by the parameter array argument (params).
| params | pointer to parameter array describing benchmark position |
| n_p | number of parameters |
Definition at line 356 of file pmm_model.c.
| int insert_bench | ( | struct pmm_model * | m, |
| struct pmm_benchmark * | b | ||
| ) |
Add benchmark to a model in the appropriate substructure of the model
| m | pointer to the model |
| b | pointer to the benchmark |
Definition at line 521 of file pmm_model.c.
| int insert_bench_into_list | ( | struct pmm_bench_list * | bl, |
| struct pmm_benchmark * | b | ||
| ) |
Definition at line 485 of file pmm_model.c.
| int insert_bench_into_sorted_list | ( | struct pmm_benchmark ** | list_start, |
| struct pmm_benchmark ** | list_end, | ||
| struct pmm_benchmark * | b | ||
| ) |
Insert benchmark between two benchmarks in a sorted list
| list_start | pointer to a reference for the beginning of the list |
| list_end | pointer to a reference for the end of the list |
| b | pointer to the benchmark to insert |
Definition at line 434 of file pmm_model.c.
| int insert_bench_into_sorted_list_after | ( | struct pmm_benchmark ** | list_first, |
| struct pmm_benchmark ** | list_last, | ||
| struct pmm_benchmark * | after, | ||
| struct pmm_benchmark * | b | ||
| ) |
Insert benchmark into a sorted list in a position directly after a certain benchmark.
| list_first | pointer to the first benchmark in the list |
| list_last | pointer to the last benchmark in the list |
| after | pointer to the benchmark after which we will insert |
| b | pointer to the benchmark we will insert |
Definition at line 797 of file pmm_model.c.
| int insert_bench_into_sorted_list_before | ( | struct pmm_benchmark ** | list_first, |
| struct pmm_benchmark ** | list_last, | ||
| struct pmm_benchmark * | before, | ||
| struct pmm_benchmark * | b | ||
| ) |
Insert benchmark into a sorted list in a position directly before a certain benchmark.
| list_first | pointer to the first benchmark in the list |
| list_last | pointer to the last benchmark in the list |
| before | pointer to the benchmark before which we will insert |
| b | pointer to the benchmark we will insert |
Definition at line 743 of file pmm_model.c.
|
read |
Find the speed approximation given by a 1-D or single parameter model at a point described by the parameter array p (size of 1!).
| bl | pointer to the bench list |
| p | pointer to parameter array |
TODO this does not use the average of benchmarks with the same parameters
Definition at line 1977 of file pmm_model.c.
| char* interval_type_to_string | ( | enum pmm_interval_type | type | ) |
map interval type to string for printing
| type | interval type |
Definition at line 400 of file pmm_interval.c.
| int is_benchmark_at_origin | ( | int | n, |
| struct pmm_paramdef * | pd_array, | ||
| struct pmm_benchmark * | b | ||
| ) |
test if a benchmark is at the starting point of a model (not 0,0)
| n | number of parameters defintions |
| pd_array | pointer to parameter defintions array |
| b | pointer to benchmark |
Definition at line 547 of file pmm_model.c.
| int isempty_model | ( | struct pmm_model * | m | ) |
An empty model is defined as one that has no experimentally obtained benchmark points in it. Thus:
The bench list may only have: points at the end parameter values on each parameter axis, e.g. [0,0,end] for the 3rd axis of a 3 parameter model, and a single point at the end parameter value of all boundaries, i.e. [end,end,end] of a 3 parameter model
This is slightly complicated to test however, another property of non- experimental points in the model is that they all have zero speed. Just test that!
| m | pointer to the model to test |
Definition at line 586 of file pmm_model.c.
| int isequal_benchmarks | ( | struct pmm_benchmark * | b1, |
| struct pmm_benchmark * | b2 | ||
| ) |
test if the data elements of benchmarks are equal (i.e. everything but the pointers)
| b1 | pointer to first benchmark |
| b2 | pointer to second benchmark |
Definition at line 1624 of file pmm_model.c.
|
read |
Call the appropriate lookup function to find value of model given a set of parameters
| m | pointer to model |
| p | array of parameters |
Definition at line 1940 of file pmm_model.c.
|
read |
Create an empty benchmark list
| m | pointer to the parent model |
| n_p | number of parameters of the benchmarks in the list |
Definition at line 167 of file pmm_model.c.
|
read |
Allocate and return a benchmark structure with values set to invalids, with the parameter array p still unallocated and next/previous pointers set to NULL
Definition at line 320 of file pmm_model.c.
|
read |
Allocates memory for the pmm_config structure. Sets some default values in the config.
Definition at line 58 of file pmm_model.c.
|
read |
Create a new model structure. Note pmm_bench_list member will not yet be allocated.
Definition at line 132 of file pmm_model.c.
|
read |
Allocates memory for a new routine and sets some default values
Definition at line 98 of file pmm_model.c.
| time_t parseISO8601Date | ( | char * | date | ) |
converts a ISO 8601 time string to a time_t value
| date | pointer to charater string representing a date |
Definition at line 2585 of file pmm_model.c.
| void print_bench_list | ( | const char * | output, |
| struct pmm_bench_list * | bl | ||
| ) |
Print a pmm_bench_list structure to the log
| output | output stream to print two |
| bl | pointer to the pmm_bench_list structure |
Definition at line 2447 of file pmm_model.c.
| void print_benchmark | ( | const char * | output, |
| struct pmm_benchmark * | b | ||
| ) |
print a benchmark
| output | output stream to print to |
| b | pointer to benchmark |
Definition at line 2478 of file pmm_model.c.
| void print_config | ( | const char * | output, |
| struct pmm_config * | cfg | ||
| ) |
prints the elements of the pmm_config structure for debugging
| output | pointer to output stream |
| cfg | pointer to config structure |
Definition at line 2717 of file pmm_model.c.
| void print_model | ( | const char * | output, |
| struct pmm_model * | m | ||
| ) |
prints the linked list of benchmark points in a pmm_model
| output | output stream to print to |
| m | model to print |
Definition at line 2410 of file pmm_model.c.
| void print_routine | ( | const char * | output, |
| struct pmm_routine * | r | ||
| ) |
prints the elements of a pmm_routine structure
| output | output stream to print to |
| r | pointer to routine |
Definition at line 2506 of file pmm_model.c.
| int remove_bench_from_bench_list | ( | struct pmm_bench_list * | bl, |
| struct pmm_benchmark * | b | ||
| ) |
Remove a benchmark from a bench list
| bl | pointer to the bench list |
| b | pointer to the benchmark to remove from the model |
Definition at line 922 of file pmm_model.c.
| int remove_bench_from_sorted_list | ( | struct pmm_benchmark ** | list_first, |
| struct pmm_benchmark ** | list_last, | ||
| struct pmm_benchmark * | b | ||
| ) |
Remove a benchmark from a sorted benchmark list
| list_first | pointer to the first bench in the list |
| list_last | pointer to the last bench in the list |
| b | pointer to the benchmark to remove from the list |
Definition at line 849 of file pmm_model.c.
| int remove_benchmarks_at_param | ( | struct pmm_model * | m, |
| int * | p, | ||
| struct pmm_benchmark *** | removed_array | ||
| ) |
Function removes benchmarks from a model that have parameters that match a target set. Removed benchmarks are all not deallocated, their addresses are stored in an array passed to the function as removed_array
| m | pointer to the model |
| p | pointer to an array of parameters |
| removed_array | pointer to unallocated array of benchmarks |
Definition at line 1840 of file pmm_model.c.
| int search_sorted_bench_list | ( | int | direction, |
| struct pmm_benchmark * | start, | ||
| int * | param, | ||
| int | n_p, | ||
| struct pmm_benchmark ** | first, | ||
| struct pmm_benchmark ** | last | ||
| ) |
Finds the first and last positions of a sequence of benchmarks with matching parameters that are part of a sorted benchmark list, search from start
| direction | use SEARCH_[BACK|FOR]WARDS macros |
| start | pointer to search start point in the list |
| param | pointer to array of parameters to search for |
| n_p | the number of parameters in the param array |
| first | pointer to first matching bench in the model |
| last | pointer to last matching bench in the model |
Definition at line 1137 of file pmm_model.c.
| int set_str | ( | char ** | dst, |
| char * | src | ||
| ) |
function is used to set string variables of the pmm_routine structure and other string variables. Takes a pointer to the destination char* and the source char* and then allocates enough memory to copy the source into the destination.
| dst | pointer to location fo destination string |
| src | pointer to string to set |
Definition at line 2546 of file pmm_model.c.
| int sum_bench_list | ( | struct pmm_benchmark * | start, |
| struct pmm_benchmark * | end, | ||
| struct pmm_benchmark * | sum | ||
| ) |
Summates the data of benchmarks in a list marked by start and end into an empty benchmark sum
| start | pointer to the first benchmark in the list of benchmarks to be summed |
| end | pointer to the last benchmark in thet list of benchmarks to be summed |
| sum | pointer to the benchmark where the summed data is to be stored |
Definition at line 1355 of file pmm_model.c.
| void timeval_add | ( | struct timeval * | tv_a, |
| struct timeval * | tv_b, | ||
| struct timeval * | tv_res | ||
| ) |
Add two timevals, to another, tv_res = tv_a + tv_b
| tv_a | first timeval to add |
| tv_b | second timeval to add |
| tv_res | pointer to timeval to store result |
Definition at line 1517 of file pmm_model.c.
| void timeval_div | ( | struct timeval * | tv, |
| double | d | ||
| ) |
Divide timeval by a double
| tv | the timeval |
| d | the divisor as a double |
Definition at line 1538 of file pmm_model.c.
| double timeval_to_double | ( | struct timeval * | tv | ) |
Converts timeval to a double in seconds units
| tv | pointer to a timeval structure |
Definition at line 1473 of file pmm_model.c.
1.8.1.2