diff options
author | Vladimir Mezentsev <vladimir.mezentsev@oracle.com> | 2022-03-11 08:58:31 +0000 |
---|---|---|
committer | Nick Clifton <nickc@redhat.com> | 2022-03-11 08:58:31 +0000 |
commit | bb368aad297fe3ad40cf397e6fc85aa471429a28 (patch) | |
tree | 0ab25909b8fe789d676bbdb00d501d4d485e4afe /gprofng/src/FileData.h | |
parent | a655f19af95eb685ba64f48ee8fc2b3b7a3d886a (diff) | |
download | binutils-bb368aad297fe3ad40cf397e6fc85aa471429a28.zip binutils-bb368aad297fe3ad40cf397e6fc85aa471429a28.tar.gz binutils-bb368aad297fe3ad40cf397e6fc85aa471429a28.tar.bz2 |
gprofng: a new GNU profiler
top-level
* Makefile.def: Add gprofng module.
* configure.ac: Add --enable-gprofng option.
* src-release.sh: Add gprofng.
* Makefile.in: Regenerate.
* configure: Regenerate.
* gprofng: New directory.
binutils
* MAINTAINERS: Add gprofng maintainer.
* README-how-to-make-a-release: Add gprofng.
include.
* collectorAPI.h: New file.
* libcollector.h: New file.
* libfcollector.h: New file.
Diffstat (limited to 'gprofng/src/FileData.h')
-rw-r--r-- | gprofng/src/FileData.h | 522 |
1 files changed, 522 insertions, 0 deletions
diff --git a/gprofng/src/FileData.h b/gprofng/src/FileData.h new file mode 100644 index 0000000..67de689 --- /dev/null +++ b/gprofng/src/FileData.h @@ -0,0 +1,522 @@ +/* Copyright (C) 2021 Free Software Foundation, Inc. + Contributed by Oracle. + + This file is part of GNU Binutils. + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3, or (at your option) + any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, 51 Franklin Street - Fifth Floor, Boston, + MA 02110-1301, USA. */ + +#ifndef _FILEDATA_H +#define _FILEDATA_H + +#include "gp-defs.h" +#include "gp-time.h" + +#include "vec.h" +#include "data_pckts.h" +#include "Histable.h" + +#define FSTYPESZ 16 + +#define VIRTUAL_FD_TOTAL 0 +#define VIRTUAL_FD_STDIN 1 +#define VIRTUAL_FD_STDOUT 2 +#define VIRTUAL_FD_STDERR 3 +#define VIRTUAL_FD_OTHERIO 4 +#define VIRTUAL_FD_NONE -1 + +#define STDIN_FD 0 +#define STDOUT_FD 1 +#define STDERR_FD 2 +#define OTHERIO_FD -1 + +#define OTHERIO_FILENAME "<Other IO activity>" +#define STDIN_FILENAME "<stdin>" +#define STDOUT_FILENAME "<stdout>" +#define STDERR_FILENAME "<stderr>" +#define TOTAL_FILENAME NTXT("<Total>") +#define UNKNOWNFD_FILENAME "<pipe(), socket(), or other fds>" + +#define _1KB 1024 +#define _8KB 8192 +#define _32KB 32768 +#define _128KB 131072 +#define _256KB 262144 +#define _512KB 524288 +#define _1000KB 1048576 +#define _10MB 10485760 +#define _100MB 104857600 +#define _1GB 1073741824 +#define _10GB 10737418240 +#define _100GB 107374182400 +#define _1TB 1099511627776 +#define _10TB 10995116277760 + +class FileData : public Histable +{ + friend class IOActivity; +public: + FileData (const char *fName); + FileData (FileData *fData); + ~FileData (); + + virtual char *get_name (Histable::NameFormat nfmt); + virtual Histable *convertto (Histable_type, Histable* = NULL); + + char *get_raw_name (Histable::NameFormat nfmt); + void setFsType (FileSystem_type fst); + void setFsType (const char* fst); + + virtual Histable_type + get_type () + { + return histType; + }; + + virtual uint64_t + get_addr () + { + return virtualFd; + }; + + uint64_t + get_index () + { + return virtualFd; + }; + + void init (); + + char * + getFileName () + { + return fileName; + } + + void + addReadEvent (hrtime_t rt, int64_t nb) + { + readTime += rt; + readBytes += nb; + readCnt++; + } + + hrtime_t + getReadTime () + { + return readTime; + } + + int64_t + getReadBytes () + { + return readBytes; + } + + int32_t + getReadCnt () + { + return readCnt; + } + + void + addWriteEvent (hrtime_t wt, int64_t nb) + { + writeTime += wt; + writeBytes += nb; + writeCnt++; + } + + hrtime_t + getWriteTime () + { + return writeTime; + } + + int64_t + getWriteBytes () + { + return writeBytes; + } + + int32_t + getWriteCnt () + { + return writeCnt; + } + + void + addOtherEvent (hrtime_t ot) + { + otherTime += ot; + otherCnt++; + } + + hrtime_t + getOtherTime () + { + return otherTime; + } + + int32_t + getOtherCnt () + { + return otherCnt; + } + + void + addErrorEvent (hrtime_t er) + { + errorTime += er; + errorCnt++; + } + + hrtime_t + getErrorTime () + { + return errorTime; + } + + int32_t + getErrorCnt () + { + return errorCnt; + } + + void setFileDesList (int fd); + + Vector<int> * + getFileDesList () + { + return fileDesList; + } + + void + setFileDes (int fd) + { + fileDes = fd; + } + + int32_t + getFileDes () + { + return fileDes; + } + + void setVirtualFds (int64_t vfd); + + Vector<int64_t> * + getVirtualFds () + { + return virtualFds; + } + + char * + getFsType () + { + return fsType; + } + + void + setVirtualFd (int64_t vFd) + { + virtualFd = vFd; + } + + int64_t + getVirtualFd () + { + return virtualFd; + } + + void + setHistType (Histable::Type hType) + { + histType = hType; + } + + Histable::Type + getHistType () + { + return histType; + } + + void setWriteStat (hrtime_t wt, int64_t nb); + + hrtime_t + getWSlowestBytes () + { + return wSlowestBytes; + } + + int64_t + getWSmallestBytes () + { + return wSmallestBytes; + } + + int64_t + getWLargestBytes () + { + return wLargestBytes; + } + + int32_t + getW0KB1KBCnt () + { + return w0KB1KBCnt; + } + + int32_t + getW1KB8KBCnt () + { + return w1KB8KBCnt; + } + + int32_t + getW8KB32KBCnt () + { + return w8KB32KBCnt; + } + + int32_t + getW32KB128KBCnt () + { + return w32KB128KBCnt; + } + + int32_t + getW128KB256KBCnt () + { + return w128KB256KBCnt; + } + + int32_t + getW256KB512KBCnt () + { + return w256KB512KBCnt; + } + + int32_t + getW512KB1000KBCnt () + { + return w512KB1000KBCnt; + } + + int32_t + getW1000KB10MBCnt () + { + return w1000KB10MBCnt; + } + + int32_t + getW10MB100MBCnt () + { + return w10MB100MBCnt; + } + + int32_t + getW100MB1GBCnt () + { + return w100MB1GBCnt; + } + + int32_t + getW1GB10GBCnt () + { + return w1GB10GBCnt; + } + + int32_t + getW10GB100GBCnt () + { + return w10GB100GBCnt; + } + + int32_t + getW100GB1TBCnt () + { + return w100GB1TBCnt; + } + + int32_t + getW1TB10TBCnt () + { + return w1TB10TBCnt; + } + + void setReadStat (hrtime_t rt, int64_t nb); + + hrtime_t + getRSlowestBytes () + { + return rSlowestBytes; + } + + int64_t + getRSmallestBytes () + { + return rSmallestBytes; + } + + int64_t + getRLargestBytes () + { + return rLargestBytes; + } + + int32_t + getR0KB1KBCnt () + { + return r0KB1KBCnt; + } + + int32_t + getR1KB8KBCnt () + { + return r1KB8KBCnt; + } + + int32_t + getR8KB32KBCnt () + { + return r8KB32KBCnt; + } + + int32_t + getR32KB128KBCnt () + { + return r32KB128KBCnt; + } + + int32_t + getR128KB256KBCnt () + { + return r128KB256KBCnt; + } + + int32_t + getR256KB512KBCnt () + { + return r256KB512KBCnt; + } + + int32_t + getR512KB1000KBCnt () + { + return r512KB1000KBCnt; + } + + int32_t + getR1000KB10MBCnt () + { + return r1000KB10MBCnt; + } + + int32_t + getR10MB100MBCnt () + { + return r10MB100MBCnt; + } + + int32_t + getR100MB1GBCnt () + { + return r100MB1GBCnt; + } + + int32_t + getR1GB10GBCnt () + { + return r1GB10GBCnt; + } + + int32_t + getR10GB100GBCnt () + { + return r10GB100GBCnt; + } + + int32_t + getR100GB1TBCnt () + { + return r100GB1TBCnt; + } + + int32_t + getR1TB10TBCnt () + { + return r1TB10TBCnt; + } + +private: + char *fileName; // File name + hrtime_t readTime; // The Total time for read operations; + hrtime_t writeTime; // The Total time for write operations; + hrtime_t otherTime; // The Total time for other IO operations; + hrtime_t errorTime; // The Total time for failed IO operations; + int64_t readBytes; //The total bytes read + int64_t writeBytes; //The total bytes written + int32_t readCnt; // The read count + int32_t writeCnt; // The write count + int32_t otherCnt; // The other IO count + int32_t errorCnt; // The failed IO count + Vector<int> *fileDesList; // The list of file descriptors + Vector<int64_t> *virtualFds; // The list of file virtual descriptors + char fsType[FSTYPESZ]; // The file system type + int64_t virtualFd; // The virtual file descriptor + int32_t fileDes; // The file descriptor + Histable::Type histType; // The Histable type: IOACTFILE, IOACTVFD, ... + + // Write statistics + hrtime_t wSlowestBytes; + int64_t wSmallestBytes; + int64_t wLargestBytes; + int32_t w0KB1KBCnt; + int32_t w1KB8KBCnt; + int32_t w8KB32KBCnt; + int32_t w32KB128KBCnt; + int32_t w128KB256KBCnt; + int32_t w256KB512KBCnt; + int32_t w512KB1000KBCnt; + int32_t w1000KB10MBCnt; + int32_t w10MB100MBCnt; + int32_t w100MB1GBCnt; + int32_t w1GB10GBCnt; + int32_t w10GB100GBCnt; + int32_t w100GB1TBCnt; + int32_t w1TB10TBCnt; + + // Read statistics + hrtime_t rSlowestBytes; + int64_t rSmallestBytes; + int64_t rLargestBytes; + int32_t r0KB1KBCnt; + int32_t r1KB8KBCnt; + int32_t r8KB32KBCnt; + int32_t r32KB128KBCnt; + int32_t r128KB256KBCnt; + int32_t r256KB512KBCnt; + int32_t r512KB1000KBCnt; + int32_t r1000KB10MBCnt; + int32_t r10MB100MBCnt; + int32_t r100MB1GBCnt; + int32_t r1GB10GBCnt; + int32_t r10GB100GBCnt; + int32_t r100GB1TBCnt; + int32_t r1TB10TBCnt; +}; + +#endif |