87 lines
2.4 KiB
C
87 lines
2.4 KiB
C
|
|
#ifndef _TREEINTER_H
|
|||
|
|
#define _TREEINTER_H
|
|||
|
|
#include "zlib.h"
|
|||
|
|
#include "inter.h"
|
|||
|
|
#include "strall.h"
|
|||
|
|
#include "stdio.h"
|
|||
|
|
#include "bool.h"
|
|||
|
|
typedef struct ttree{
|
|||
|
|
unsigned long up,next,down;
|
|||
|
|
int sign;
|
|||
|
|
CInter *pint;
|
|||
|
|
} ptree;
|
|||
|
|
struct inter_short{
|
|||
|
|
short nlev,type;
|
|||
|
|
};
|
|||
|
|
struct inter_long{
|
|||
|
|
unsigned long nline,nline_end,expr,qproc,ninter,SendCallCount,RecvCallCount;
|
|||
|
|
};
|
|||
|
|
struct inter_void{
|
|||
|
|
void *up,*next,*down,*ptimes;
|
|||
|
|
};
|
|||
|
|
struct inter_double{
|
|||
|
|
double nenter,SendCallTime,MinSendCallTime,
|
|||
|
|
MaxSendCallTime,RecvCallTime,MinRecvCallTime,
|
|||
|
|
MaxRecvCallTime,
|
|||
|
|
times[3*StatGrpCount*StatGrpCount];
|
|||
|
|
};
|
|||
|
|
typedef struct tinter {
|
|||
|
|
inter_double d;
|
|||
|
|
inter_void v;
|
|||
|
|
inter_long l;
|
|||
|
|
inter_short sh;
|
|||
|
|
}pinter;
|
|||
|
|
#define QI_SHORT sizeof(inter_short)/SZSH
|
|||
|
|
#define QI_LONG sizeof(inter_long)/SZL
|
|||
|
|
#define QI_VOID sizeof(inter_void)/SZV
|
|||
|
|
#define QI_DOUBLE sizeof(inter_double)/SZD
|
|||
|
|
class CTreeInter {
|
|||
|
|
public:
|
|||
|
|
CTreeInter(gzFile stream,unsigned long lint,char* pbuf,unsigned int n,
|
|||
|
|
unsigned long qfrag,short maxn,char * ppn,double proct,int i,int j,short sore,unsigned char *pbuffer,
|
|||
|
|
dvmh_stat_header *dvmhStatHeader);
|
|||
|
|
~CTreeInter();
|
|||
|
|
/**
|
|||
|
|
* Прочитать DVMH статистику из буфера
|
|||
|
|
*
|
|||
|
|
* @param buffer указатель на буфер
|
|||
|
|
* @param size размер статистики в байтах
|
|||
|
|
*
|
|||
|
|
* @return заголовок DVMH статистики
|
|||
|
|
*/
|
|||
|
|
dvmh_stat_interval *readDvmhStat(unsigned char * const buffer);
|
|||
|
|
dvmh_stat_header *dvmhStatHeader;
|
|||
|
|
// --
|
|||
|
|
BOOL Valid();
|
|||
|
|
void TextErr(char *t);
|
|||
|
|
void BeginInter(void);
|
|||
|
|
void NextInter(ident **p);
|
|||
|
|
CInter *FindInter(ident *id);
|
|||
|
|
void SumLevel(void);
|
|||
|
|
void ReadProcTime(double &time);
|
|||
|
|
void ReadProcName(char **name);
|
|||
|
|
ptree (*pt);
|
|||
|
|
protected:
|
|||
|
|
unsigned int nproc;
|
|||
|
|
unsigned long qinter;
|
|||
|
|
unsigned long curninter;
|
|||
|
|
short maxnlev;
|
|||
|
|
BOOL valid;
|
|||
|
|
char texterr[80];
|
|||
|
|
char *pprocname;
|
|||
|
|
unsigned char * sign_buffer;
|
|||
|
|
double proctime;
|
|||
|
|
/**
|
|||
|
|
* Выравнивание памяти
|
|||
|
|
*
|
|||
|
|
* @param pointer указатель который необходимо выровнять
|
|||
|
|
* @param align размер выравнивания
|
|||
|
|
* @param size размер переменной которая будет размещаться по указателю
|
|||
|
|
*
|
|||
|
|
* @param выровненный указатель
|
|||
|
|
*/
|
|||
|
|
unsigned long memAlign(unsigned long pointer, const unsigned short align, const unsigned long size);
|
|||
|
|
//void CTreeInter::memAlign(unsigned long &pointer, short align);
|
|||
|
|
};
|
|||
|
|
#endif
|