1020a203aSopenharmony_ci/*
2020a203aSopenharmony_ci * Copyright (c) 2023 Huawei Device Co., Ltd.
3020a203aSopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License");
4020a203aSopenharmony_ci * you may not use this file except in compliance with the License.
5020a203aSopenharmony_ci * You may obtain a copy of the License at
6020a203aSopenharmony_ci *
7020a203aSopenharmony_ci *     http://www.apache.org/licenses/LICENSE-2.0
8020a203aSopenharmony_ci *
9020a203aSopenharmony_ci * Unless required by applicable law or agreed to in writing, software
10020a203aSopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS,
11020a203aSopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12020a203aSopenharmony_ci * See the License for the specific language governing permissions and
13020a203aSopenharmony_ci * limitations under the License.
14020a203aSopenharmony_ci */
15020a203aSopenharmony_ci
16020a203aSopenharmony_ci#ifndef INTERFACES_INNER_API_UNIFIED_COLLECTION_RESOURCE_IO_H
17020a203aSopenharmony_ci#define INTERFACES_INNER_API_UNIFIED_COLLECTION_RESOURCE_IO_H
18020a203aSopenharmony_ci#include <cinttypes>
19020a203aSopenharmony_ci#include <string>
20020a203aSopenharmony_ci
21020a203aSopenharmony_cinamespace OHOS {
22020a203aSopenharmony_cinamespace HiviewDFX {
23020a203aSopenharmony_cistruct ProcessIo {
24020a203aSopenharmony_ci    int32_t pid;
25020a203aSopenharmony_ci    std::string name;
26020a203aSopenharmony_ci    int32_t rchar;
27020a203aSopenharmony_ci    int32_t wchar;
28020a203aSopenharmony_ci    int32_t syscr;
29020a203aSopenharmony_ci    int32_t syscw;
30020a203aSopenharmony_ci    int32_t readBytes;
31020a203aSopenharmony_ci    int32_t writeBytes;
32020a203aSopenharmony_ci    int32_t cancelledWriteBytes;
33020a203aSopenharmony_ci};
34020a203aSopenharmony_ci
35020a203aSopenharmony_cistruct DiskData {
36020a203aSopenharmony_ci    uint64_t sectorRead = 0;  /* number of sectors read */
37020a203aSopenharmony_ci    uint64_t sectorWrite = 0; /* number of sectors written */
38020a203aSopenharmony_ci    uint64_t operRead = 0;    /* number of reads merged */
39020a203aSopenharmony_ci    uint64_t operWrite = 0;   /* number of writes merged */
40020a203aSopenharmony_ci    uint64_t readTime = 0;    /* number of time spent reading (ms) */
41020a203aSopenharmony_ci    uint64_t writeTime = 0;   /* number of time spent writing (ms) */
42020a203aSopenharmony_ci    uint64_t ioWait = 0;      /* number of I/Os currently in progress */
43020a203aSopenharmony_ci};
44020a203aSopenharmony_ci
45020a203aSopenharmony_cistruct DiskStats {
46020a203aSopenharmony_ci    std::string deviceName;
47020a203aSopenharmony_ci    double sectorReadRate = 0.0;  /* number of sectors read persecond */
48020a203aSopenharmony_ci    double sectorWriteRate = 0.0; /* number of sectors written persecond */
49020a203aSopenharmony_ci    double operReadRate = 0.0;    /* number of reads merged persecond */
50020a203aSopenharmony_ci    double operWriteRate = 0.0;   /* number of writes merged persecond */
51020a203aSopenharmony_ci    double readTimeRate = 0.0;    /* number of time spent reading (ms) persecond */
52020a203aSopenharmony_ci    double writeTimeRate = 0.0;   /* number of time spent writing (ms) persecond */
53020a203aSopenharmony_ci    uint64_t ioWait = 0;        /* number of I/Os currently in progress */
54020a203aSopenharmony_ci};
55020a203aSopenharmony_ci
56020a203aSopenharmony_cistruct DiskStatsDevice {
57020a203aSopenharmony_ci    DiskData preData;
58020a203aSopenharmony_ci    DiskStats stats;
59020a203aSopenharmony_ci    uint64_t collectTime = 0;
60020a203aSopenharmony_ci};
61020a203aSopenharmony_ci
62020a203aSopenharmony_cistruct EMMCInfo {
63020a203aSopenharmony_ci    std::string name;
64020a203aSopenharmony_ci    std::string manfid;
65020a203aSopenharmony_ci    std::string csd;
66020a203aSopenharmony_ci    std::string type;
67020a203aSopenharmony_ci    int64_t size;
68020a203aSopenharmony_ci};
69020a203aSopenharmony_ci
70020a203aSopenharmony_cistruct ProcessIoStats {
71020a203aSopenharmony_ci    int32_t pid;
72020a203aSopenharmony_ci    std::string name;
73020a203aSopenharmony_ci    int32_t ground;
74020a203aSopenharmony_ci    double rcharRate;
75020a203aSopenharmony_ci    double wcharRate;
76020a203aSopenharmony_ci    double syscrRate;
77020a203aSopenharmony_ci    double syscwRate;
78020a203aSopenharmony_ci    double readBytesRate;
79020a203aSopenharmony_ci    double writeBytesRate;
80020a203aSopenharmony_ci};
81020a203aSopenharmony_ci
82020a203aSopenharmony_cistruct SysIoStats {
83020a203aSopenharmony_ci    double rcharRate = 0.0;
84020a203aSopenharmony_ci    double wcharRate = 0.0;
85020a203aSopenharmony_ci    double syscrRate = 0.0;
86020a203aSopenharmony_ci    double syscwRate = 0.0;
87020a203aSopenharmony_ci    double readBytesRate = 0.0;
88020a203aSopenharmony_ci    double writeBytesRate = 0.0;
89020a203aSopenharmony_ci};
90020a203aSopenharmony_ci
91020a203aSopenharmony_cistruct ProcessIoStatsInfo {
92020a203aSopenharmony_ci    ProcessIo preData;
93020a203aSopenharmony_ci    ProcessIoStats stats;
94020a203aSopenharmony_ci    uint64_t collectTime = 0;
95020a203aSopenharmony_ci};
96020a203aSopenharmony_ci} // HiviewDFX
97020a203aSopenharmony_ci} // OHOS
98020a203aSopenharmony_ci#endif // INTERFACES_INNER_API_UNIFIED_COLLECTION_RESOURCE_IO_H