#include #include typedef unsigned char uint8; /* == 8 bits */ typedef unsigned short uint16; /* == 16 bits */ typedef unsigned int uint32; /* == 32 bits */ typedef signed char int8; /* == 8 bits */ typedef signed short int16; /* == 16 bits */ typedef signed int int32; /* == 32 bits */ #define XLOG_SEG_SIZE (16*1024*1024) #define XLogSegSize ((uint32) XLOG_SEG_SIZE) #define XLogSegsPerFile (((uint32) 0xffffffff) / XLogSegSize) int main(int argc, char **argv) { double elapsed_xlogs; uint32 cur_xrecoff, cur_xlogid; uint32 ckpt_xrecoff, ckpt_xlogid; double a, b; cur_xlogid = strtoul(argv[1], NULL, 10); cur_xrecoff = strtoul(argv[2], NULL, 10); ckpt_xlogid = strtoul(argv[3], NULL, 10); ckpt_xrecoff = strtoul(argv[4], NULL, 10); //a = (cur_xlogid - ckpt_xlogid) * XLogSegsPerFile; //b = (((double) cur_xrecoff) - ((double) ckpt_xrecoff)) / ((double )XLogSegSize); //a = ((double) (int32) (cur_xlogid - ckpt_xlogid)) * XLogSegsPerFile; //b = ((double) (int32) (cur_xrecoff - ckpt_xrecoff)) / XLogSegSize; a = (cur_xlogid - ckpt_xlogid) * XLogSegsPerFile; b = ((double) cur_xrecoff - (double) ckpt_xrecoff) / XLogSegSize; elapsed_xlogs = a + b; printf("XLogSegsPerFile: %d\n", XLogSegsPerFile); printf("xrecoff: %u %f\n", ckpt_xrecoff, (double) ckpt_xrecoff); printf("a: %f\n", a); printf("b: %f\n", b); printf("elapsed_xlogs = %f\n", elapsed_xlogs); }