1*c42dbd0eSchristos /* Copyright (C) 2021 Free Software Foundation, Inc. 2*c42dbd0eSchristos Contributed by Oracle. 3*c42dbd0eSchristos 4*c42dbd0eSchristos This file is part of GNU Binutils. 5*c42dbd0eSchristos 6*c42dbd0eSchristos This program is free software; you can redistribute it and/or modify 7*c42dbd0eSchristos it under the terms of the GNU General Public License as published by 8*c42dbd0eSchristos the Free Software Foundation; either version 3, or (at your option) 9*c42dbd0eSchristos any later version. 10*c42dbd0eSchristos 11*c42dbd0eSchristos This program is distributed in the hope that it will be useful, 12*c42dbd0eSchristos but WITHOUT ANY WARRANTY; without even the implied warranty of 13*c42dbd0eSchristos MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14*c42dbd0eSchristos GNU General Public License for more details. 15*c42dbd0eSchristos 16*c42dbd0eSchristos You should have received a copy of the GNU General Public License 17*c42dbd0eSchristos along with this program; if not, write to the Free Software 18*c42dbd0eSchristos Foundation, 51 Franklin Street - Fifth Floor, Boston, 19*c42dbd0eSchristos MA 02110-1301, USA. */ 20*c42dbd0eSchristos 21*c42dbd0eSchristos #ifndef _FILEDATA_H 22*c42dbd0eSchristos #define _FILEDATA_H 23*c42dbd0eSchristos 24*c42dbd0eSchristos #include "gp-defs.h" 25*c42dbd0eSchristos #include "gp-time.h" 26*c42dbd0eSchristos 27*c42dbd0eSchristos #include "vec.h" 28*c42dbd0eSchristos #include "data_pckts.h" 29*c42dbd0eSchristos #include "Histable.h" 30*c42dbd0eSchristos 31*c42dbd0eSchristos #define FSTYPESZ 16 32*c42dbd0eSchristos 33*c42dbd0eSchristos #define VIRTUAL_FD_TOTAL 0 34*c42dbd0eSchristos #define VIRTUAL_FD_STDIN 1 35*c42dbd0eSchristos #define VIRTUAL_FD_STDOUT 2 36*c42dbd0eSchristos #define VIRTUAL_FD_STDERR 3 37*c42dbd0eSchristos #define VIRTUAL_FD_OTHERIO 4 38*c42dbd0eSchristos #define VIRTUAL_FD_NONE -1 39*c42dbd0eSchristos 40*c42dbd0eSchristos #define STDIN_FD 0 41*c42dbd0eSchristos #define STDOUT_FD 1 42*c42dbd0eSchristos #define STDERR_FD 2 43*c42dbd0eSchristos #define OTHERIO_FD -1 44*c42dbd0eSchristos 45*c42dbd0eSchristos #define OTHERIO_FILENAME "<Other IO activity>" 46*c42dbd0eSchristos #define STDIN_FILENAME "<stdin>" 47*c42dbd0eSchristos #define STDOUT_FILENAME "<stdout>" 48*c42dbd0eSchristos #define STDERR_FILENAME "<stderr>" 49*c42dbd0eSchristos #define TOTAL_FILENAME NTXT("<Total>") 50*c42dbd0eSchristos #define UNKNOWNFD_FILENAME "<pipe(), socket(), or other fds>" 51*c42dbd0eSchristos 52*c42dbd0eSchristos #define _1KB 1024 53*c42dbd0eSchristos #define _8KB 8192 54*c42dbd0eSchristos #define _32KB 32768 55*c42dbd0eSchristos #define _128KB 131072 56*c42dbd0eSchristos #define _256KB 262144 57*c42dbd0eSchristos #define _512KB 524288 58*c42dbd0eSchristos #define _1000KB 1048576 59*c42dbd0eSchristos #define _10MB 10485760 60*c42dbd0eSchristos #define _100MB 104857600 61*c42dbd0eSchristos #define _1GB 1073741824 62*c42dbd0eSchristos #define _10GB 10737418240 63*c42dbd0eSchristos #define _100GB 107374182400 64*c42dbd0eSchristos #define _1TB 1099511627776 65*c42dbd0eSchristos #define _10TB 10995116277760 66*c42dbd0eSchristos 67*c42dbd0eSchristos class FileData : public Histable 68*c42dbd0eSchristos { 69*c42dbd0eSchristos friend class IOActivity; 70*c42dbd0eSchristos public: 71*c42dbd0eSchristos FileData (const char *fName); 72*c42dbd0eSchristos FileData (FileData *fData); 73*c42dbd0eSchristos ~FileData (); 74*c42dbd0eSchristos 75*c42dbd0eSchristos virtual char *get_name (Histable::NameFormat nfmt); 76*c42dbd0eSchristos virtual Histable *convertto (Histable_type, Histable* = NULL); 77*c42dbd0eSchristos 78*c42dbd0eSchristos char *get_raw_name (Histable::NameFormat nfmt); 79*c42dbd0eSchristos void setFsType (FileSystem_type fst); 80*c42dbd0eSchristos void setFsType (const char* fst); 81*c42dbd0eSchristos 82*c42dbd0eSchristos virtual Histable_type get_type()83*c42dbd0eSchristos get_type () 84*c42dbd0eSchristos { 85*c42dbd0eSchristos return histType; 86*c42dbd0eSchristos }; 87*c42dbd0eSchristos 88*c42dbd0eSchristos virtual uint64_t get_addr()89*c42dbd0eSchristos get_addr () 90*c42dbd0eSchristos { 91*c42dbd0eSchristos return virtualFd; 92*c42dbd0eSchristos }; 93*c42dbd0eSchristos 94*c42dbd0eSchristos uint64_t get_index()95*c42dbd0eSchristos get_index () 96*c42dbd0eSchristos { 97*c42dbd0eSchristos return virtualFd; 98*c42dbd0eSchristos }; 99*c42dbd0eSchristos 100*c42dbd0eSchristos void init (); 101*c42dbd0eSchristos 102*c42dbd0eSchristos char * getFileName()103*c42dbd0eSchristos getFileName () 104*c42dbd0eSchristos { 105*c42dbd0eSchristos return fileName; 106*c42dbd0eSchristos } 107*c42dbd0eSchristos 108*c42dbd0eSchristos void addReadEvent(hrtime_t rt,int64_t nb)109*c42dbd0eSchristos addReadEvent (hrtime_t rt, int64_t nb) 110*c42dbd0eSchristos { 111*c42dbd0eSchristos readTime += rt; 112*c42dbd0eSchristos readBytes += nb; 113*c42dbd0eSchristos readCnt++; 114*c42dbd0eSchristos } 115*c42dbd0eSchristos 116*c42dbd0eSchristos hrtime_t getReadTime()117*c42dbd0eSchristos getReadTime () 118*c42dbd0eSchristos { 119*c42dbd0eSchristos return readTime; 120*c42dbd0eSchristos } 121*c42dbd0eSchristos 122*c42dbd0eSchristos int64_t getReadBytes()123*c42dbd0eSchristos getReadBytes () 124*c42dbd0eSchristos { 125*c42dbd0eSchristos return readBytes; 126*c42dbd0eSchristos } 127*c42dbd0eSchristos 128*c42dbd0eSchristos int32_t getReadCnt()129*c42dbd0eSchristos getReadCnt () 130*c42dbd0eSchristos { 131*c42dbd0eSchristos return readCnt; 132*c42dbd0eSchristos } 133*c42dbd0eSchristos 134*c42dbd0eSchristos void addWriteEvent(hrtime_t wt,int64_t nb)135*c42dbd0eSchristos addWriteEvent (hrtime_t wt, int64_t nb) 136*c42dbd0eSchristos { 137*c42dbd0eSchristos writeTime += wt; 138*c42dbd0eSchristos writeBytes += nb; 139*c42dbd0eSchristos writeCnt++; 140*c42dbd0eSchristos } 141*c42dbd0eSchristos 142*c42dbd0eSchristos hrtime_t getWriteTime()143*c42dbd0eSchristos getWriteTime () 144*c42dbd0eSchristos { 145*c42dbd0eSchristos return writeTime; 146*c42dbd0eSchristos } 147*c42dbd0eSchristos 148*c42dbd0eSchristos int64_t getWriteBytes()149*c42dbd0eSchristos getWriteBytes () 150*c42dbd0eSchristos { 151*c42dbd0eSchristos return writeBytes; 152*c42dbd0eSchristos } 153*c42dbd0eSchristos 154*c42dbd0eSchristos int32_t getWriteCnt()155*c42dbd0eSchristos getWriteCnt () 156*c42dbd0eSchristos { 157*c42dbd0eSchristos return writeCnt; 158*c42dbd0eSchristos } 159*c42dbd0eSchristos 160*c42dbd0eSchristos void addOtherEvent(hrtime_t ot)161*c42dbd0eSchristos addOtherEvent (hrtime_t ot) 162*c42dbd0eSchristos { 163*c42dbd0eSchristos otherTime += ot; 164*c42dbd0eSchristos otherCnt++; 165*c42dbd0eSchristos } 166*c42dbd0eSchristos 167*c42dbd0eSchristos hrtime_t getOtherTime()168*c42dbd0eSchristos getOtherTime () 169*c42dbd0eSchristos { 170*c42dbd0eSchristos return otherTime; 171*c42dbd0eSchristos } 172*c42dbd0eSchristos 173*c42dbd0eSchristos int32_t getOtherCnt()174*c42dbd0eSchristos getOtherCnt () 175*c42dbd0eSchristos { 176*c42dbd0eSchristos return otherCnt; 177*c42dbd0eSchristos } 178*c42dbd0eSchristos 179*c42dbd0eSchristos void addErrorEvent(hrtime_t er)180*c42dbd0eSchristos addErrorEvent (hrtime_t er) 181*c42dbd0eSchristos { 182*c42dbd0eSchristos errorTime += er; 183*c42dbd0eSchristos errorCnt++; 184*c42dbd0eSchristos } 185*c42dbd0eSchristos 186*c42dbd0eSchristos hrtime_t getErrorTime()187*c42dbd0eSchristos getErrorTime () 188*c42dbd0eSchristos { 189*c42dbd0eSchristos return errorTime; 190*c42dbd0eSchristos } 191*c42dbd0eSchristos 192*c42dbd0eSchristos int32_t getErrorCnt()193*c42dbd0eSchristos getErrorCnt () 194*c42dbd0eSchristos { 195*c42dbd0eSchristos return errorCnt; 196*c42dbd0eSchristos } 197*c42dbd0eSchristos 198*c42dbd0eSchristos void setFileDesList (int fd); 199*c42dbd0eSchristos 200*c42dbd0eSchristos Vector<int> * getFileDesList()201*c42dbd0eSchristos getFileDesList () 202*c42dbd0eSchristos { 203*c42dbd0eSchristos return fileDesList; 204*c42dbd0eSchristos } 205*c42dbd0eSchristos 206*c42dbd0eSchristos void setFileDes(int fd)207*c42dbd0eSchristos setFileDes (int fd) 208*c42dbd0eSchristos { 209*c42dbd0eSchristos fileDes = fd; 210*c42dbd0eSchristos } 211*c42dbd0eSchristos 212*c42dbd0eSchristos int32_t getFileDes()213*c42dbd0eSchristos getFileDes () 214*c42dbd0eSchristos { 215*c42dbd0eSchristos return fileDes; 216*c42dbd0eSchristos } 217*c42dbd0eSchristos 218*c42dbd0eSchristos void setVirtualFds (int64_t vfd); 219*c42dbd0eSchristos 220*c42dbd0eSchristos Vector<int64_t> * getVirtualFds()221*c42dbd0eSchristos getVirtualFds () 222*c42dbd0eSchristos { 223*c42dbd0eSchristos return virtualFds; 224*c42dbd0eSchristos } 225*c42dbd0eSchristos 226*c42dbd0eSchristos char * getFsType()227*c42dbd0eSchristos getFsType () 228*c42dbd0eSchristos { 229*c42dbd0eSchristos return fsType; 230*c42dbd0eSchristos } 231*c42dbd0eSchristos 232*c42dbd0eSchristos void setVirtualFd(int64_t vFd)233*c42dbd0eSchristos setVirtualFd (int64_t vFd) 234*c42dbd0eSchristos { 235*c42dbd0eSchristos virtualFd = vFd; 236*c42dbd0eSchristos } 237*c42dbd0eSchristos 238*c42dbd0eSchristos int64_t getVirtualFd()239*c42dbd0eSchristos getVirtualFd () 240*c42dbd0eSchristos { 241*c42dbd0eSchristos return virtualFd; 242*c42dbd0eSchristos } 243*c42dbd0eSchristos 244*c42dbd0eSchristos void setHistType(Histable::Type hType)245*c42dbd0eSchristos setHistType (Histable::Type hType) 246*c42dbd0eSchristos { 247*c42dbd0eSchristos histType = hType; 248*c42dbd0eSchristos } 249*c42dbd0eSchristos 250*c42dbd0eSchristos Histable::Type getHistType()251*c42dbd0eSchristos getHistType () 252*c42dbd0eSchristos { 253*c42dbd0eSchristos return histType; 254*c42dbd0eSchristos } 255*c42dbd0eSchristos 256*c42dbd0eSchristos void setWriteStat (hrtime_t wt, int64_t nb); 257*c42dbd0eSchristos 258*c42dbd0eSchristos hrtime_t getWSlowestBytes()259*c42dbd0eSchristos getWSlowestBytes () 260*c42dbd0eSchristos { 261*c42dbd0eSchristos return wSlowestBytes; 262*c42dbd0eSchristos } 263*c42dbd0eSchristos 264*c42dbd0eSchristos int64_t getWSmallestBytes()265*c42dbd0eSchristos getWSmallestBytes () 266*c42dbd0eSchristos { 267*c42dbd0eSchristos return wSmallestBytes; 268*c42dbd0eSchristos } 269*c42dbd0eSchristos 270*c42dbd0eSchristos int64_t getWLargestBytes()271*c42dbd0eSchristos getWLargestBytes () 272*c42dbd0eSchristos { 273*c42dbd0eSchristos return wLargestBytes; 274*c42dbd0eSchristos } 275*c42dbd0eSchristos 276*c42dbd0eSchristos int32_t getW0KB1KBCnt()277*c42dbd0eSchristos getW0KB1KBCnt () 278*c42dbd0eSchristos { 279*c42dbd0eSchristos return w0KB1KBCnt; 280*c42dbd0eSchristos } 281*c42dbd0eSchristos 282*c42dbd0eSchristos int32_t getW1KB8KBCnt()283*c42dbd0eSchristos getW1KB8KBCnt () 284*c42dbd0eSchristos { 285*c42dbd0eSchristos return w1KB8KBCnt; 286*c42dbd0eSchristos } 287*c42dbd0eSchristos 288*c42dbd0eSchristos int32_t getW8KB32KBCnt()289*c42dbd0eSchristos getW8KB32KBCnt () 290*c42dbd0eSchristos { 291*c42dbd0eSchristos return w8KB32KBCnt; 292*c42dbd0eSchristos } 293*c42dbd0eSchristos 294*c42dbd0eSchristos int32_t getW32KB128KBCnt()295*c42dbd0eSchristos getW32KB128KBCnt () 296*c42dbd0eSchristos { 297*c42dbd0eSchristos return w32KB128KBCnt; 298*c42dbd0eSchristos } 299*c42dbd0eSchristos 300*c42dbd0eSchristos int32_t getW128KB256KBCnt()301*c42dbd0eSchristos getW128KB256KBCnt () 302*c42dbd0eSchristos { 303*c42dbd0eSchristos return w128KB256KBCnt; 304*c42dbd0eSchristos } 305*c42dbd0eSchristos 306*c42dbd0eSchristos int32_t getW256KB512KBCnt()307*c42dbd0eSchristos getW256KB512KBCnt () 308*c42dbd0eSchristos { 309*c42dbd0eSchristos return w256KB512KBCnt; 310*c42dbd0eSchristos } 311*c42dbd0eSchristos 312*c42dbd0eSchristos int32_t getW512KB1000KBCnt()313*c42dbd0eSchristos getW512KB1000KBCnt () 314*c42dbd0eSchristos { 315*c42dbd0eSchristos return w512KB1000KBCnt; 316*c42dbd0eSchristos } 317*c42dbd0eSchristos 318*c42dbd0eSchristos int32_t getW1000KB10MBCnt()319*c42dbd0eSchristos getW1000KB10MBCnt () 320*c42dbd0eSchristos { 321*c42dbd0eSchristos return w1000KB10MBCnt; 322*c42dbd0eSchristos } 323*c42dbd0eSchristos 324*c42dbd0eSchristos int32_t getW10MB100MBCnt()325*c42dbd0eSchristos getW10MB100MBCnt () 326*c42dbd0eSchristos { 327*c42dbd0eSchristos return w10MB100MBCnt; 328*c42dbd0eSchristos } 329*c42dbd0eSchristos 330*c42dbd0eSchristos int32_t getW100MB1GBCnt()331*c42dbd0eSchristos getW100MB1GBCnt () 332*c42dbd0eSchristos { 333*c42dbd0eSchristos return w100MB1GBCnt; 334*c42dbd0eSchristos } 335*c42dbd0eSchristos 336*c42dbd0eSchristos int32_t getW1GB10GBCnt()337*c42dbd0eSchristos getW1GB10GBCnt () 338*c42dbd0eSchristos { 339*c42dbd0eSchristos return w1GB10GBCnt; 340*c42dbd0eSchristos } 341*c42dbd0eSchristos 342*c42dbd0eSchristos int32_t getW10GB100GBCnt()343*c42dbd0eSchristos getW10GB100GBCnt () 344*c42dbd0eSchristos { 345*c42dbd0eSchristos return w10GB100GBCnt; 346*c42dbd0eSchristos } 347*c42dbd0eSchristos 348*c42dbd0eSchristos int32_t getW100GB1TBCnt()349*c42dbd0eSchristos getW100GB1TBCnt () 350*c42dbd0eSchristos { 351*c42dbd0eSchristos return w100GB1TBCnt; 352*c42dbd0eSchristos } 353*c42dbd0eSchristos 354*c42dbd0eSchristos int32_t getW1TB10TBCnt()355*c42dbd0eSchristos getW1TB10TBCnt () 356*c42dbd0eSchristos { 357*c42dbd0eSchristos return w1TB10TBCnt; 358*c42dbd0eSchristos } 359*c42dbd0eSchristos 360*c42dbd0eSchristos void setReadStat (hrtime_t rt, int64_t nb); 361*c42dbd0eSchristos 362*c42dbd0eSchristos hrtime_t getRSlowestBytes()363*c42dbd0eSchristos getRSlowestBytes () 364*c42dbd0eSchristos { 365*c42dbd0eSchristos return rSlowestBytes; 366*c42dbd0eSchristos } 367*c42dbd0eSchristos 368*c42dbd0eSchristos int64_t getRSmallestBytes()369*c42dbd0eSchristos getRSmallestBytes () 370*c42dbd0eSchristos { 371*c42dbd0eSchristos return rSmallestBytes; 372*c42dbd0eSchristos } 373*c42dbd0eSchristos 374*c42dbd0eSchristos int64_t getRLargestBytes()375*c42dbd0eSchristos getRLargestBytes () 376*c42dbd0eSchristos { 377*c42dbd0eSchristos return rLargestBytes; 378*c42dbd0eSchristos } 379*c42dbd0eSchristos 380*c42dbd0eSchristos int32_t getR0KB1KBCnt()381*c42dbd0eSchristos getR0KB1KBCnt () 382*c42dbd0eSchristos { 383*c42dbd0eSchristos return r0KB1KBCnt; 384*c42dbd0eSchristos } 385*c42dbd0eSchristos 386*c42dbd0eSchristos int32_t getR1KB8KBCnt()387*c42dbd0eSchristos getR1KB8KBCnt () 388*c42dbd0eSchristos { 389*c42dbd0eSchristos return r1KB8KBCnt; 390*c42dbd0eSchristos } 391*c42dbd0eSchristos 392*c42dbd0eSchristos int32_t getR8KB32KBCnt()393*c42dbd0eSchristos getR8KB32KBCnt () 394*c42dbd0eSchristos { 395*c42dbd0eSchristos return r8KB32KBCnt; 396*c42dbd0eSchristos } 397*c42dbd0eSchristos 398*c42dbd0eSchristos int32_t getR32KB128KBCnt()399*c42dbd0eSchristos getR32KB128KBCnt () 400*c42dbd0eSchristos { 401*c42dbd0eSchristos return r32KB128KBCnt; 402*c42dbd0eSchristos } 403*c42dbd0eSchristos 404*c42dbd0eSchristos int32_t getR128KB256KBCnt()405*c42dbd0eSchristos getR128KB256KBCnt () 406*c42dbd0eSchristos { 407*c42dbd0eSchristos return r128KB256KBCnt; 408*c42dbd0eSchristos } 409*c42dbd0eSchristos 410*c42dbd0eSchristos int32_t getR256KB512KBCnt()411*c42dbd0eSchristos getR256KB512KBCnt () 412*c42dbd0eSchristos { 413*c42dbd0eSchristos return r256KB512KBCnt; 414*c42dbd0eSchristos } 415*c42dbd0eSchristos 416*c42dbd0eSchristos int32_t getR512KB1000KBCnt()417*c42dbd0eSchristos getR512KB1000KBCnt () 418*c42dbd0eSchristos { 419*c42dbd0eSchristos return r512KB1000KBCnt; 420*c42dbd0eSchristos } 421*c42dbd0eSchristos 422*c42dbd0eSchristos int32_t getR1000KB10MBCnt()423*c42dbd0eSchristos getR1000KB10MBCnt () 424*c42dbd0eSchristos { 425*c42dbd0eSchristos return r1000KB10MBCnt; 426*c42dbd0eSchristos } 427*c42dbd0eSchristos 428*c42dbd0eSchristos int32_t getR10MB100MBCnt()429*c42dbd0eSchristos getR10MB100MBCnt () 430*c42dbd0eSchristos { 431*c42dbd0eSchristos return r10MB100MBCnt; 432*c42dbd0eSchristos } 433*c42dbd0eSchristos 434*c42dbd0eSchristos int32_t getR100MB1GBCnt()435*c42dbd0eSchristos getR100MB1GBCnt () 436*c42dbd0eSchristos { 437*c42dbd0eSchristos return r100MB1GBCnt; 438*c42dbd0eSchristos } 439*c42dbd0eSchristos 440*c42dbd0eSchristos int32_t getR1GB10GBCnt()441*c42dbd0eSchristos getR1GB10GBCnt () 442*c42dbd0eSchristos { 443*c42dbd0eSchristos return r1GB10GBCnt; 444*c42dbd0eSchristos } 445*c42dbd0eSchristos 446*c42dbd0eSchristos int32_t getR10GB100GBCnt()447*c42dbd0eSchristos getR10GB100GBCnt () 448*c42dbd0eSchristos { 449*c42dbd0eSchristos return r10GB100GBCnt; 450*c42dbd0eSchristos } 451*c42dbd0eSchristos 452*c42dbd0eSchristos int32_t getR100GB1TBCnt()453*c42dbd0eSchristos getR100GB1TBCnt () 454*c42dbd0eSchristos { 455*c42dbd0eSchristos return r100GB1TBCnt; 456*c42dbd0eSchristos } 457*c42dbd0eSchristos 458*c42dbd0eSchristos int32_t getR1TB10TBCnt()459*c42dbd0eSchristos getR1TB10TBCnt () 460*c42dbd0eSchristos { 461*c42dbd0eSchristos return r1TB10TBCnt; 462*c42dbd0eSchristos } 463*c42dbd0eSchristos 464*c42dbd0eSchristos private: 465*c42dbd0eSchristos char *fileName; // File name 466*c42dbd0eSchristos hrtime_t readTime; // The Total time for read operations; 467*c42dbd0eSchristos hrtime_t writeTime; // The Total time for write operations; 468*c42dbd0eSchristos hrtime_t otherTime; // The Total time for other IO operations; 469*c42dbd0eSchristos hrtime_t errorTime; // The Total time for failed IO operations; 470*c42dbd0eSchristos int64_t readBytes; //The total bytes read 471*c42dbd0eSchristos int64_t writeBytes; //The total bytes written 472*c42dbd0eSchristos int32_t readCnt; // The read count 473*c42dbd0eSchristos int32_t writeCnt; // The write count 474*c42dbd0eSchristos int32_t otherCnt; // The other IO count 475*c42dbd0eSchristos int32_t errorCnt; // The failed IO count 476*c42dbd0eSchristos Vector<int> *fileDesList; // The list of file descriptors 477*c42dbd0eSchristos Vector<int64_t> *virtualFds; // The list of file virtual descriptors 478*c42dbd0eSchristos char fsType[FSTYPESZ]; // The file system type 479*c42dbd0eSchristos int64_t virtualFd; // The virtual file descriptor 480*c42dbd0eSchristos int32_t fileDes; // The file descriptor 481*c42dbd0eSchristos Histable::Type histType; // The Histable type: IOACTFILE, IOACTVFD, ... 482*c42dbd0eSchristos 483*c42dbd0eSchristos // Write statistics 484*c42dbd0eSchristos hrtime_t wSlowestBytes; 485*c42dbd0eSchristos int64_t wSmallestBytes; 486*c42dbd0eSchristos int64_t wLargestBytes; 487*c42dbd0eSchristos int32_t w0KB1KBCnt; 488*c42dbd0eSchristos int32_t w1KB8KBCnt; 489*c42dbd0eSchristos int32_t w8KB32KBCnt; 490*c42dbd0eSchristos int32_t w32KB128KBCnt; 491*c42dbd0eSchristos int32_t w128KB256KBCnt; 492*c42dbd0eSchristos int32_t w256KB512KBCnt; 493*c42dbd0eSchristos int32_t w512KB1000KBCnt; 494*c42dbd0eSchristos int32_t w1000KB10MBCnt; 495*c42dbd0eSchristos int32_t w10MB100MBCnt; 496*c42dbd0eSchristos int32_t w100MB1GBCnt; 497*c42dbd0eSchristos int32_t w1GB10GBCnt; 498*c42dbd0eSchristos int32_t w10GB100GBCnt; 499*c42dbd0eSchristos int32_t w100GB1TBCnt; 500*c42dbd0eSchristos int32_t w1TB10TBCnt; 501*c42dbd0eSchristos 502*c42dbd0eSchristos // Read statistics 503*c42dbd0eSchristos hrtime_t rSlowestBytes; 504*c42dbd0eSchristos int64_t rSmallestBytes; 505*c42dbd0eSchristos int64_t rLargestBytes; 506*c42dbd0eSchristos int32_t r0KB1KBCnt; 507*c42dbd0eSchristos int32_t r1KB8KBCnt; 508*c42dbd0eSchristos int32_t r8KB32KBCnt; 509*c42dbd0eSchristos int32_t r32KB128KBCnt; 510*c42dbd0eSchristos int32_t r128KB256KBCnt; 511*c42dbd0eSchristos int32_t r256KB512KBCnt; 512*c42dbd0eSchristos int32_t r512KB1000KBCnt; 513*c42dbd0eSchristos int32_t r1000KB10MBCnt; 514*c42dbd0eSchristos int32_t r10MB100MBCnt; 515*c42dbd0eSchristos int32_t r100MB1GBCnt; 516*c42dbd0eSchristos int32_t r1GB10GBCnt; 517*c42dbd0eSchristos int32_t r10GB100GBCnt; 518*c42dbd0eSchristos int32_t r100GB1TBCnt; 519*c42dbd0eSchristos int32_t r1TB10TBCnt; 520*c42dbd0eSchristos }; 521*c42dbd0eSchristos 522*c42dbd0eSchristos #endif 523