#ifndef _TIMINGDATA_H_
#define _TIMINGDATA_H_
#ifdef APPLE_EXTENSIONS
#include <stdlib.h>
#include <sys/time.h>
#include <sys/resource.h> // for last command's resource usage statistics
typedef struct _timing_data TIMING_DATA;
typedef struct _timing_entry TIMING_ENTRY;
struct _timing_entry
{
TIMING_ENTRY *next; char *rule_name; char *source_file; char *obj_file; int cmd_slot; double time_at_start; double time_at_end; double user_time; double sys_time; int pageins_at_start; int pageins_at_end; int pageouts_at_start; int pageouts_at_end; } ;
struct _timing_data {
char *build_target_name;
double build_start_time; int build_start_pageins; int build_start_pageouts; double last_cmd_user_time; double last_cmd_sys_time; double total_user_time; double total_sys_time; TIMING_ENTRY *timing_list_head; TIMING_ENTRY *timing_list_tail; int num_entries; };
# define SECONDS_FROM_TIMEVAL(timeval) ((((double) (timeval).tv_sec) * 1000000.0 + (timeval).tv_usec) / 1000000.0)
void init_timing_data();
void set_timing_target_name( char *target_name );
TIMING_ENTRY *create_timing_entry();
void record_last_resource_usage( struct rusage *ru );
void append_timing_entry( TIMING_ENTRY *timing_entry, int cmd_slot, char * rule, char * source_file, char * obj_file );
void print_timing_data();
#endif
#endif