This is model.h in view mode; [Download] [Up]
/* "$Header: /ufs/comp/mei/TestPCN/onprofile/IFModel/Model/RCS/modeldef.h,v 1.1 1992/02/26 18:53:40 mei Exp $" */
/********************************************************/
/* File: model.h */
/* Content: global definitions for cuounter file's */
/* internal manipulation */
/* Date 2/1992 */
/********************************************************/
/* AERO_MESG */
#ifndef _MODEL_H
#define _MODEL_H
#include <stdio.h>
#include <sys/param.h>
#ifndef _GAUGE_H
#include "gauge.h"
#endif
#undef TIMER /* Don't use the definition of timer in gauge.h */
#define TRUE 1
#define FALSE 0
#define CURRENT_COUNTER_VERSION 0005
#define CURRENT_MODEL_VERSION 0005
#define TABLE_SIZE 1023 /* Hash table size */
#define MAX_NAME 50 /* Maximum size of procedure name */
#define MAX_SELECT 100 /* Maximum number of selections */
#define FMT_SIZE 1096
/* line types allowed in model file */
#define PCN_PARALLEL 'P'
#define PCN_IMPLICATION 'I'
#define FOREIGN_PROCEDURE 'F'
#define CLAUSE 'C'
#define COUNTER 'K'
#define TIMER 'T'
#define NODES 'N'
#define PER_NODE_STATS 'P'
#define MODULE 'M'
#define CALL_GRAPH 'G'
#define VERSION 'V'
#define START 'S'
#define END 'E'
#define GUARD_STATS 'B'
#define UNKNOWN '?'
#define CALIBRATE 0x1
#define WRITE 0x2
#define DISPLAY 0x3
/* View definitions */
#define VTIME 'T'
#define VFREQ 'F'
#define VIDLE 'I'
#define VMSGCNTS 'C'
#define VMSGVOL 'V'
/* for ModelStruct structure */
#define INSTR_CLASSES 2
#define SWAP_COUNTERS 0
#define SWAP_TIMERS 1
/* 12/30 hui define last snapshot's snapname */
#define LASTSNAP "end"
#define LAST -1
#define Free(c) free((char *) (c))
/********************************************************/
/* global data structures */
/********************************************************/
#ifndef HISTOGRAM
typedef char *String;
typedef int Widget;
#endif
#ifdef HISTOGRAM
typedef struct ListElementStruct {
String label;
void * pointer;
Boolean state;
} ListElement;
#endif
typedef struct BucketStruct {
char *key;
char *value;
struct BucketStruct *next;
} HBucket;
struct s_clausecounts {
unsigned long use;
unsigned long failure;
unsigned long commit;
} /*counts*/;
typedef struct ClauseProfileStruct {
int snap_no;
int node_no;
struct ClauseStruct *clau_ptr; /*pt back to parent clause*/
struct s_clausecounts counts;
struct {
float success;
float failure;
} cost;
struct ClauseProfileStruct *next;
} ClauseProfileData;
typedef struct ProcedureProfileStruct {
int snap_no;
struct ProcedureStruct *proc_ptr; /* pt back to head procedure */
struct {
unsigned long use;
unsigned long failure;
unsigned long commit;
unsigned long suspend;
unsigned long copy;
} counts;
struct {
float success;
float failure;
float suspend;
float total;
float idle;
} cost;
struct ProcedureProfileStruct *next;
}ProcedureProfileData;
typedef struct ModelStruct {
float failure[INSTR_CLASSES];
float success[INSTR_CLASSES];
}ClauseModel;
typedef struct ForeignStruct {
struct ProcedureStruct *procedure;
int timer;
}Foreign;
typedef struct ClauseStruct {
int body_goals;
int commit_offset;
ClauseModel model;
struct ProcedureStruct *proc_ptr; /* pt back to proc */
struct ProcedureStruct **calls;
struct ForeignStruct *foreigns;
/*clause profile data -fix array [node_no] */
struct TableHeaderStruct *claupernode;
}Clause;
typedef struct GraphStruct {
Clause *clause_ptr;
struct GraphStruct *next;
}RGraph;
typedef struct SnapTableEntryStruct {
int node_no;
ProcedureProfileData *procprofile; /*data ptr*/
struct SnapTableEntryStruct *next_snap_entry; /*same node_no*/
struct SnapTableEntryStruct *next_node_list;
}SnapTableEntry;
typedef struct TableHeaderStruct {
int tbl_cnt;
void *data_ptr;
}TableHeader;
/** Procedure.total is total profile data per procedure summing
across all the nodes **/
typedef struct ProcedureStruct {
char *name;
struct ModuleStruct *mod_ptr; /* pt back to originaal module */
int arguments;
int size;
int visible;
struct { int idle, copy, suspend; } offsets;
int id;/* sequential id number assigned as procedures are allocated */
int type;
ProcedureProfileData *total; /*Fix Array [snapshot]*/
/* procedure profile data - fix array [node_no] */
TableHeader *procpernode;
RGraph *callers;
Clause clauses[1];/* list of clauses in a procedure */
} Procedure;
typedef struct node_stats {
int used;
int mins,secs,msecs;
int idle_mins,idle_secs,idle_msecs;
int gc_mins, gc_secs, gc_msecs;
int gc_count;
unsigned long reductions, suspensions;
long send_small, send_big, send_length;
long rcv_small, rcv_big, rcv_length;
}NodeStats;
typedef void (*swapfunc)();
struct cost_parameters {
float classtype[INSTR_CLASSES];
float suspend, copy;
float send_small, send_big, send_length;
float rcv_small, rcv_big, rcv_length;
};
struct arch_descriptor {
struct {int low, hi; } node_range;
struct cost_parameters parameters;
char host_name[MAXHOSTNAMELEN];
swapfunc byte_swapper;
int ticks_per_second;
};
/** the total is the summing of profile data per node across
all procedures */
typedef struct NodeStruct {
struct { char *pattern;
float value;
char label[sizeof("Processor xxxx")];} bar;
ProcedureProfileData *total; /* Fix Array[snapshot] */
struct arch_descriptor *machine;
int node_no;
struct node_stats *stats; /* Fix array of stats [snapshot]*/
} Node;
typedef struct ModuleStruct {
char *name;
HBucket *procedures[TABLE_SIZE];
/*snapshot link-up table, fix array [snap_cnt]*/
TableHeader *snaptable;
int ncounters, ntimers;
} Module;
typedef struct SnapNameStruct {
char name[MAX_NAME]; /* the snapname list */
}SnapName;
typedef struct global_info {
int mins,secs,msecs;
unsigned long reductions, suspensions;
int node_cnt, /* Total number of nodes */
first_node, /* first node idx for nodes */
last_node; /* last node idx for nodes */
int procedure_cnt; /* Total number of procedures */
int snap_cnt; /* Total number of snapshots */
int module_cnt; /* Total number of modules */
struct SnapNameStruct *snap;
}GlobInfo;
typedef struct curr_stats {/*used as temporary space for ppshow*/
int gc_mins, gc_secs, gc_msecs;
int gc_count;
long send_small, send_big, send_length;
long rcv_small, rcv_big, rcv_length;
}CurrStats;
typedef struct curr_info {/*used as temporary by "subset" in ppshow*/
int node_cnt; /* current node_cnt */
int procedure_cnt; /* current procedure_cnt */
int module_cnt; /* current module_cnt */
int snap_cnt; /* current snap_cnt */
int order; /* current sort order */
}CurrInfo;
typedef struct HistoStruct {
char *filename; /* file to retrieve dat from */
char *title; /* title of the tool using this database */
#ifdef HISTOGRAM
Widget help;
String help_key;
int subset;
Widget view; /* pt to parent Widget calling ppshow */
ListElement *vnodes; /* Array of nodes */
ListElement *procs; /* Array of pointers to procedures */
/* follow the hashing order in module and proc taables */
#endif /* HISTOGRAM */
GlobInfo info;
CurrStats currstats;
CurrInfo curr;
Node *nodes; /* Array of nodes */
int machine_types;
struct arch_descriptor *architecture;
HBucket *modules[TABLE_SIZE];
} Histo;
union u_bytecode_key { /* used in byte_swapper + hutil */
char bytes[8];
gauge_timer timer;
};
typedef struct AssignArgStruct{
Histo *hPtr;
int snap_cnt;
char *buff,*snapname;
ProcedureProfileData *snapPtr;
int snap_no;
int node_no;
} AssignArg;
/********************************************************/
/* global variable declared as external for calls from */
/* other than model.c */
/* Date: 2/1992 */
/********************************************************/
extern char TextBuffer[FMT_SIZE]; /* temporary text buffer */
extern char MessageBuffer[FMT_SIZE]; /* temporary message buffer */
/********************************************************/
/* predeclaration of some routines */
/********************************************************/
/* from byte_swapper.c */
extern swapfunc decode_byteorder_key();
/* from tables.c */
extern void initialize_procpernode();
extern void initialize_clausepernode();
extern Procedure *find_procedure();
extern Module *find_module();
extern Module *lookup_module();
extern char *map_procedures();
extern char *map_table();
extern ProcedureProfileData *lookup_procsnapprof();
extern ProcedureProfileData *insert_procsnapprof();
extern ClauseProfileData *lookup_clausnapprof();
extern ClauseProfileData *lookup_clausnapprof2();
extern ClauseProfileData *insert_clausnapprof();
/* from hutil.c */
extern char *checkmalloc();
extern int free_module();
/* from snaparrays.c */
extern void init_all_snapFixArray();
extern char *init_snaptable();
extern char *init_a_proc_total();
#endif /* _MODEL_H */
These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.