• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1/*
2 * Copyright (C) 2022 Huawei Device Co., Ltd.
3 * Licensed under the Apache License, Version 2.0 (the "License");
4 * you may not use this file except in compliance with the License.
5 * You may obtain a copy of the License at
6 *
7 *     http://www.apache.org/licenses/LICENSE-2.0
8 *
9 * Unless required by applicable law or agreed to in writing, software
10 * distributed under the License is distributed on an "AS IS" BASIS,
11 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 * See the License for the specific language governing permissions and
13 * limitations under the License.
14 */
15
16export interface ProfilerSessionConfigBufferConfig {
17  pages: number;
18  policy: ProfilerSessionConfigBufferConfigPolicy;
19}
20
21export enum ProfilerSessionConfigBufferConfigPolicy {
22  RECYCLE = 0,
23  FLATTEN = 1,
24  UNRECOGNIZED = 2,
25}
26
27export interface ProfilerSessionConfig {
28  buffers: ProfilerSessionConfigBufferConfig[];
29  sessionMode: ProfilerSessionConfigMode;
30  splitFile?: boolean;
31  splitFileMaxSizeMb?: number;
32  splitFileMaxNum?: number;
33  /** for OFFLINE mode, result file max size in KB */
34  resultMaxSize: number;
35  /** if set to non-zero value, session will auto-destroyed after CreateSession in ms */
36  keepAliveTime: number;
37}
38
39export enum ProfilerSessionConfigMode {
40  /** OFFLINE - save all plugin results to result file. */
41  OFFLINE = 0,
42  /** ONLINE - push all plugin results to host PC with streamed FetchDataResponse. */
43  ONLINE = 1,
44  UNRECOGNIZED = -1,
45}
46
47export interface TracePluginConfig {
48  /** kernel event set */
49  ftraceEvents: string[];
50  /** bytrace event set */
51  hitraceCategories: string[];
52  /** bytrace app set */
53  hitraceApps: string[];
54  /** kernel trace buffer size */
55  bufferSizeKb: number;
56  /** time interval in milliseconds to notify service process */
57  flushIntervalMs: number;
58  /** buffer water mark threshold to notify service process */
59  flushThresholdKb: number;
60  /** parse /proc/kallsyms or not */
61  parseKsyms: boolean;
62  /** value for trace_clock */
63  clock: string;
64  /** time interval in milliseconds to read kernel trace buffer */
65  tracePeriodMs: number;
66  /** raw data file prefix for debug */
67  rawDataPrefix: string;
68  /** time duration in millisconds for trace actions */
69  traceDurationMs: number;
70  /** enable debug options */
71  debugOn: boolean;
72}
73
74export interface CreateSessionRequest {
75  requestId: number;
76  sessionConfig: ProfilerSessionConfig | undefined;
77  pluginConfigs: ProfilerPluginConfig<unknown>[];
78}
79
80export interface ProfilerPluginConfig<T> {
81  pluginName: string;
82  sampleInterval?: number;
83  configData: T;
84  is_protobuf_serialize?: boolean;
85}
86
87export interface HiebpfConfig {
88  cmdLine: string;
89  outfileName: string;
90  splitOutfileName?: string;
91}
92
93export interface MemoryConfig {
94  /** set true to report process list */
95  reportProcessTree: boolean;
96  /** set true to report memory counter from /proc/meminfo */
97  reportSysmemMemInfo: boolean;
98  /** set required counter list of system meminfo, eg:MemTotal, MemFree, etc. */
99  sysMeminfoCounters: SysMeminfoType[];
100  /** set true to report memory counter from /proc/vmstat */
101  reportSysmemVmemInfo: boolean;
102  /** set required counter list of virtual system meminfo, eg:nr_free_pages, nr_anon_pages, etc. */
103  sysVmeminfoCounters: SysVMeminfoType[];
104  /** set true to report process meminfo from /proc/${pid}/stat */
105  reportProcessMemInfo: boolean;
106  /** set true to report application memory usage summary, eg:java heap memory, native heap, stack memory, etc. */
107  reportAppMemInfo: boolean;
108  /**
109   * set true to report application memory by memory service, otherwise,
110   * application memory will count up by /proc/${pid}/smaps information
111   */
112  reportAppMemByMemoryService: boolean;
113  /** set required pid list */
114  pid: number[];
115  /** set true to report smaps meminfo from /proc/${pid}/smaps */
116  reportSmapsMemInfo?: boolean;
117  /** set true to report ashmem meminfo from /proc/purgeable_ashmem_trigger*/
118  reportPurgeableAshmemInfo?: boolean;
119  /** set true to report DMA meminfo from /proc/process_dmabuf_info. */
120  reportDmaMemInfo?: boolean;
121  /** set true to report gpu meminfo from /proc/gpu_memory. */
122  reportGpuMemInfo?: boolean;
123  /** set true to report gpu info from hidumper. */
124  reportGpuDumpInfo?: boolean;
125}
126
127const switchCase = (object: unknown): SysVMeminfoType => {
128  if (typeof object === 'number') {
129    let sysVMemInfos = Object.keys(SysVMeminfoType);
130    if (object < 0) {
131      let sysInfo = sysVMemInfos[0];
132      // @ts-ignore
133      return SysVMeminfoType[sysInfo];
134    } else {
135      let infoType = sysVMemInfos[object + 1];
136      if (infoType) {
137        // @ts-ignore
138        return SysVMeminfoType[infoType];
139      }
140    }
141    return SysVMeminfoType.UNRECOGNIZED;
142  } else {
143    // @ts-ignore
144    return SysVMeminfoType[object];
145  }
146};
147
148export function sysVMeminfoTypeFromJSON(object: unknown): SysVMeminfoType {
149  return switchCase(object);
150}
151
152export enum SysVMeminfoType {
153  UNRECOGNIZED = 'UNRECOGNIZED',
154  VMEMINFO_UNSPECIFIED = 'VMEMINFO_UNSPECIFIED',
155  VMEMINFO_NR_FREE_PAGES = 'VMEMINFO_NR_FREE_PAGES',
156  VMEMINFO_NR_ALLOC_BATCH = 'VMEMINFO_NR_ALLOC_BATCH',
157  VMEMINFO_NR_INACTIVE_ANON = 'VMEMINFO_NR_INACTIVE_ANON',
158  VMEMINFO_NR_ACTIVE_ANON = 'VMEMINFO_NR_ACTIVE_ANON',
159  VMEMINFO_NR_INACTIVE_FILE = 'VMEMINFO_NR_INACTIVE_FILE',
160  VMEMINFO_NR_ACTIVE_FILE = 'VMEMINFO_NR_ACTIVE_FILE',
161  VMEMINFO_NR_UNEVICTABLE = 'VMEMINFO_NR_UNEVICTABLE',
162  VMEMINFO_NR_MLOCK = 'VMEMINFO_NR_MLOCK',
163  VMEMINFO_NR_ANON_PAGES = 'VMEMINFO_NR_ANON_PAGES',
164  VMEMINFO_NR_MAPPED = 'VMEMINFO_NR_MAPPED',
165  VMEMINFO_NR_FILE_PAGES = 'VMEMINFO_NR_FILE_PAGES',
166  VMEMINFO_NR_DIRTY = 'VMEMINFO_NR_DIRTY',
167  VMEMINFO_NR_WRITEBACK = 'VMEMINFO_NR_WRITEBACK',
168  VMEMINFO_NR_SLAB_RECLAIMABLE = 'VMEMINFO_NR_SLAB_RECLAIMABLE',
169  VMEMINFO_NR_SLAB_UNRECLAIMABLE = 'VMEMINFO_NR_SLAB_UNRECLAIMABLE',
170  VMEMINFO_NR_PAGE_TABLE_PAGES = 'VMEMINFO_NR_PAGE_TABLE_PAGES',
171  VMEMINFO_NR_KERNEL_STACK = 'VMEMINFO_NR_KERNEL_STACK',
172  VMEMINFO_NR_OVERHEAD = 'VMEMINFO_NR_OVERHEAD',
173  VMEMINFO_NR_UNSTABLE = 'VMEMINFO_NR_UNSTABLE',
174  VMEMINFO_NR_BOUNCE = 'VMEMINFO_NR_BOUNCE',
175  VMEMINFO_NR_VMSCAN_WRITE = 'VMEMINFO_NR_VMSCAN_WRITE',
176  VMEMINFO_NR_VMSCAN_IMMEDIATE_RECLAIM = 'VMEMINFO_NR_VMSCAN_IMMEDIATE_RECLAIM',
177  VMEMINFO_NR_WRITEBACK_TEMP = 'VMEMINFO_NR_WRITEBACK_TEMP',
178  VMEMINFO_NR_ISOLATED_ANON = 'VMEMINFO_NR_ISOLATED_ANON',
179  VMEMINFO_NR_ISOLATED_FILE = 'VMEMINFO_NR_ISOLATED_FILE',
180  VMEMINFO_NR_SHMEM = 'VMEMINFO_NR_SHMEM',
181  VMEMINFO_NR_DIRTIED = 'VMEMINFO_NR_DIRTIED',
182  VMEMINFO_NR_WRITTEN = 'VMEMINFO_NR_WRITTEN',
183  VMEMINFO_NR_PAGES_SCANNED = 'VMEMINFO_NR_PAGES_SCANNED',
184  VMEMINFO_WORKINGSET_REFAULT = 'VMEMINFO_WORKINGSET_REFAULT',
185  VMEMINFO_WORKINGSET_ACTIVATE = 'VMEMINFO_WORKINGSET_ACTIVATE',
186  VMEMINFO_WORKINGSET_NODERECLAIM = 'VMEMINFO_WORKINGSET_NODERECLAIM',
187  VMEMINFO_NR_ANON_TRANSPARENT_HUGEPAGES = 'VMEMINFO_NR_ANON_TRANSPARENT_HUGEPAGES',
188  VMEMINFO_NR_FREE_CMA = 'VMEMINFO_NR_FREE_CMA',
189  VMEMINFO_NR_SWAPCACHE = 'VMEMINFO_NR_SWAPCACHE',
190  VMEMINFO_NR_DIRTY_THRESHOLD = 'VMEMINFO_NR_DIRTY_THRESHOLD',
191  VMEMINFO_NR_DIRTY_BACKGROUND_THRESHOLD = 'VMEMINFO_NR_DIRTY_BACKGROUND_THRESHOLD',
192  VMEMINFO_PGPGIN = 'VMEMINFO_PGPGIN',
193  VMEMINFO_PGPGOUT = 'VMEMINFO_PGPGOUT',
194  VMEMINFO_PGPGOUTCLEAN = 'VMEMINFO_PGPGOUTCLEAN',
195  VMEMINFO_PSWPIN = 'VMEMINFO_PSWPIN',
196  VMEMINFO_PSWPOUT = 'VMEMINFO_PSWPOUT',
197  VMEMINFO_PGALLOC_DMA = 'VMEMINFO_PGALLOC_DMA',
198  VMEMINFO_PGALLOC_NORMAL = 'VMEMINFO_PGALLOC_NORMAL',
199  VMEMINFO_PGALLOC_MOVABLE = 'VMEMINFO_PGALLOC_MOVABLE',
200  VMEMINFO_PGFREE = 'VMEMINFO_PGFREE',
201  VMEMINFO_PGACTIVATE = 'VMEMINFO_PGACTIVATE',
202  VMEMINFO_PGDEACTIVATE = 'VMEMINFO_PGDEACTIVATE',
203  VMEMINFO_PGFAULT = 'VMEMINFO_PGFAULT',
204  VMEMINFO_PGMAJFAULT = 'VMEMINFO_PGMAJFAULT',
205  VMEMINFO_PGREFILL_DMA = 'VMEMINFO_PGREFILL_DMA',
206  VMEMINFO_PGREFILL_NORMAL = 'VMEMINFO_PGREFILL_NORMAL',
207  VMEMINFO_PGREFILL_MOVABLE = 'VMEMINFO_PGREFILL_MOVABLE',
208  VMEMINFO_PGSTEAL_KSWAPD_DMA = 'VMEMINFO_PGSTEAL_KSWAPD_DMA',
209  VMEMINFO_PGSTEAL_KSWAPD_NORMAL = 'VMEMINFO_PGSTEAL_KSWAPD_NORMAL',
210  VMEMINFO_PGSTEAL_KSWAPD_MOVABLE = 'VMEMINFO_PGSTEAL_KSWAPD_MOVABLE',
211  VMEMINFO_PGSTEAL_DIRECT_DMA = 'VMEMINFO_PGSTEAL_DIRECT_DMA',
212  VMEMINFO_PGSTEAL_DIRECT_NORMAL = 'VMEMINFO_PGSTEAL_DIRECT_NORMAL',
213  VMEMINFO_PGSTEAL_DIRECT_MOVABLE = 'VMEMINFO_PGSTEAL_DIRECT_MOVABLE',
214  VMEMINFO_PGSCAN_KSWAPD_DMA = 'VMEMINFO_PGSCAN_KSWAPD_DMA',
215  VMEMINFO_PGSCAN_KSWAPD_NORMAL = 'VMEMINFO_PGSCAN_KSWAPD_NORMAL',
216  VMEMINFO_PGSCAN_KSWAPD_MOVABLE = 'VMEMINFO_PGSCAN_KSWAPD_MOVABLE',
217  VMEMINFO_PGSCAN_DIRECT_DMA = 'VMEMINFO_PGSCAN_DIRECT_DMA',
218  VMEMINFO_PGSCAN_DIRECT_NORMAL = 'VMEMINFO_PGSCAN_DIRECT_NORMAL',
219  VMEMINFO_PGSCAN_DIRECT_MOVABLE = 'VMEMINFO_PGSCAN_DIRECT_MOVABLE',
220  VMEMINFO_PGSCAN_DIRECT_THROTTLE = 'VMEMINFO_PGSCAN_DIRECT_THROTTLE',
221  VMEMINFO_PGINODESTEAL = 'VMEMINFO_PGINODESTEAL',
222  VMEMINFO_SLABS_SCANNED = 'VMEMINFO_SLABS_SCANNED',
223  VMEMINFO_KSWAPD_INODESTEAL = 'VMEMINFO_KSWAPD_INODESTEAL',
224  VMEMINFO_KSWAPD_LOW_WMARK_HIT_QUICKLY = 'VMEMINFO_KSWAPD_LOW_WMARK_HIT_QUICKLY',
225  VMEMINFO_KSWAPD_HIGH_WMARK_HIT_QUICKLY = 'VMEMINFO_KSWAPD_HIGH_WMARK_HIT_QUICKLY',
226  VMEMINFO_PAGEOUTRUN = 'VMEMINFO_PAGEOUTRUN',
227  VMEMINFO_ALLOCSTALL = 'VMEMINFO_ALLOCSTALL',
228  VMEMINFO_PGROTATED = 'VMEMINFO_PGROTATED',
229  VMEMINFO_DROP_PAGECACHE = 'VMEMINFO_DROP_PAGECACHE',
230  VMEMINFO_DROP_SLAB = 'VMEMINFO_DROP_SLAB',
231  VMEMINFO_PGMIGRATE_SUCCESS = 'VMEMINFO_PGMIGRATE_SUCCESS',
232  VMEMINFO_PGMIGRATE_FAIL = 'VMEMINFO_PGMIGRATE_FAIL',
233  VMEMINFO_COMPACT_MIGRATE_SCANNED = 'VMEMINFO_COMPACT_MIGRATE_SCANNED',
234  VMEMINFO_COMPACT_FREE_SCANNED = 'VMEMINFO_COMPACT_FREE_SCANNED',
235  VMEMINFO_COMPACT_ISOLATED = 'VMEMINFO_COMPACT_ISOLATED',
236  VMEMINFO_COMPACT_STALL = 'VMEMINFO_COMPACT_STALL',
237  VMEMINFO_COMPACT_FAIL = 'VMEMINFO_COMPACT_FAIL',
238  VMEMINFO_COMPACT_SUCCESS = 'VMEMINFO_COMPACT_SUCCESS',
239  VMEMINFO_COMPACT_DAEMON_WAKE = 'VMEMINFO_COMPACT_DAEMON_WAKE',
240  VMEMINFO_UNEVICTABLE_PGS_CULLED = 'VMEMINFO_UNEVICTABLE_PGS_CULLED',
241  VMEMINFO_UNEVICTABLE_PGS_SCANNED = 'VMEMINFO_UNEVICTABLE_PGS_SCANNED ',
242  VMEMINFO_UNEVICTABLE_PGS_RESCUED = 'VMEMINFO_UNEVICTABLE_PGS_RESCUED',
243  VMEMINFO_UNEVICTABLE_PGS_MLOCKED = 'VMEMINFO_UNEVICTABLE_PGS_MLOCKED',
244  VMEMINFO_UNEVICTABLE_PGS_MUNLOCKED = 'VMEMINFO_UNEVICTABLE_PGS_MUNLOCKED',
245  VMEMINFO_UNEVICTABLE_PGS_CLEARED = 'VMEMINFO_UNEVICTABLE_PGS_CLEARED',
246  VMEMINFO_UNEVICTABLE_PGS_STRANDED = 'VMEMINFO_UNEVICTABLE_PGS_STRANDED',
247  VMEMINFO_NR_ZSPAGES = 'VMEMINFO_NR_ZSPAGES',
248  VMEMINFO_NR_ION_HEAP = 'VMEMINFO_NR_ION_HEAP',
249  VMEMINFO_NR_GPU_HEAP = 'VMEMINFO_NR_GPU_HEAP',
250  VMEMINFO_ALLOCSTALL_DMA = 'VMEMINFO_ALLOCSTALL_DMA',
251  VMEMINFO_ALLOCSTALL_MOVABLE = 'VMEMINFO_ALLOCSTALL_MOVABLE',
252  VMEMINFO_ALLOCSTALL_NORMAL = 'VMEMINFO_ALLOCSTALL_NORMAL',
253  VMEMINFO_COMPACT_DAEMON_FREE_SCANNED = 'VMEMINFO_COMPACT_DAEMON_FREE_SCANNED',
254  VMEMINFO_COMPACT_DAEMON_MIGRATE_SCANNED = 'VMEMINFO_COMPACT_DAEMON_MIGRATE_SCANNED',
255  VMEMINFO_NR_FASTRPC = 'VMEMINFO_NR_FASTRPC',
256  VMEMINFO_NR_INDIRECTLY_RECLAIMABLE = 'VMEMINFO_NR_INDIRECTLY_RECLAIMABLE',
257  VMEMINFO_NR_ION_HEAP_POOL = 'VMEMINFO_NR_ION_HEAP_POOL',
258  VMEMINFO_NR_KERNEL_MISC_RECLAIMABLE = 'VMEMINFO_NR_KERNEL_MISC_RECLAIMABLE',
259  VMEMINFO_NR_SHADOW_CALL_STACK_BYTES = 'VMEMINFO_NR_SHADOW_CALL_STACK_BYTES',
260  VMEMINFO_NR_SHMEM_HUGEPAGES = 'VMEMINFO_NR_SHMEM_HUGEPAGES',
261  VMEMINFO_NR_SHMEM_PMDMAPPED = 'VMEMINFO_NR_SHMEM_PMDMAPPED',
262  VMEMINFO_NR_UNRECLAIMABLE_PAGES = 'VMEMINFO_NR_UNRECLAIMABLE_PAGES',
263  VMEMINFO_NR_ZONE_ACTIVE_ANON = 'VMEMINFO_NR_ZONE_ACTIVE_ANON',
264  VMEMINFO_NR_ZONE_ACTIVE_FILE = 'VMEMINFO_NR_ZONE_ACTIVE_FILE',
265  VMEMINFO_NR_ZONE_INACTIVE_ANON = 'VMEMINFO_NR_ZONE_INACTIVE_ANON',
266  VMEMINFO_NR_ZONE_INACTIVE_FILE = 'VMEMINFO_NR_ZONE_INACTIVE_FILE',
267  VMEMINFO_NR_ZONE_UNEVICTABLE = 'VMEMINFO_NR_ZONE_UNEVICTABLE',
268  VMEMINFO_NR_ZONE_WRITE_PENDING = 'VMEMINFO_NR_ZONE_WRITE_PENDING',
269  VMEMINFO_OOM_KILL = 'VMEMINFO_OOM_KILL ',
270  VMEMINFO_PGLAZYFREE = 'VMEMINFO_PGLAZYFREE',
271  VMEMINFO_PGLAZYFREED = 'VMEMINFO_PGLAZYFREED',
272  VMEMINFO_PGREFILL = 'VMEMINFO_PGREFILL',
273  VMEMINFO_PGSCAN_DIRECT = 'VMEMINFO_PGSCAN_DIRECT',
274  VMEMINFO_PGSCAN_KSWAPD = 'VMEMINFO_PGSCAN_KSWAPD',
275  VMEMINFO_PGSKIP_DMA = 'VMEMINFO_PGSKIP_DMA',
276  VMEMINFO_PGSKIP_MOVABLE = 'VMEMINFO_PGSKIP_MOVABLE',
277  VMEMINFO_PGSKIP_NORMAL = 'VMEMINFO_PGSKIP_NORMAL',
278  VMEMINFO_PGSTEAL_DIRECT = 'VMEMINFO_PGSTEAL_DIRECT',
279  VMEMINFO_PGSTEAL_KSWAPD = 'VMEMINFO_PGSTEAL_KSWAPD',
280  VMEMINFO_SWAP_RA = 'VMEMINFO_SWAP_RA',
281  VMEMINFO_SWAP_RA_HIT = 'VMEMINFO_SWAP_RA_HIT',
282  VMEMINFO_WORKINGSET_RESTORE = 'VMEMINFO_WORKINGSET_RESTORE',
283}
284
285export enum SysMeminfoType {
286  MEMINFO_UNSPECIFIED = 'PMEM_UNSPECIFIED',
287  MEMINFO_MEM_TOTAL = 'PMEM_MEM_TOTAL',
288  MEMINFO_MEM_FREE = 'PMEM_MEM_FREE',
289  MEMINFO_MEM_AVAILABLE = 'PMEM_MEM_AVAILABLE',
290  MEMINFO_BUFFERS = 'PMEM_BUFFERS',
291  MEMINFO_CACHED = 'PMEM_CACHED',
292  MEMINFO_SWAP_CACHED = 'PMEM_SWAP_CACHED',
293  MEMINFO_ACTIVE = 'PMEM_ACTIVE',
294  MEMINFO_INACTIVE = 'PMEM_INACTIVE',
295  MEMINFO_ACTIVE_ANON = 'PMEM_ACTIVE_ANON',
296  MEMINFO_INACTIVE_ANON = 'PMEM_INACTIVE_ANON',
297  MEMINFO_ACTIVE_FILE = 'PMEM_ACTIVE_FILE',
298  MEMINFO_INACTIVE_FILE = 'PMEM_INACTIVE_FILE',
299  MEMINFO_UNEVICTABLE = 'PMEM_UNEVICTABLE',
300  MEMINFO_MLOCKED = 'PMEM_MLOCKED',
301  MEMINFO_SWAP_TOTAL = 'PMEM_SWAP_TOTAL',
302  MEMINFO_SWAP_FREE = 'PMEM_SWAP_FREE',
303  MEMINFO_DIRTY = 'PMEM_DIRTY',
304  MEMINFO_WRITEBACK = 'PMEM_WRITEBACK',
305  MEMINFO_ANON_PAGES = 'PMEM_ANON_PAGES',
306  MEMINFO_MAPPED = 'PMEM_MAPPED',
307  MEMINFO_SHMEM = 'PMEM_SHMEM',
308  MEMINFO_SLAB = 'PMEM_SLAB',
309  MEMINFO_SLAB_RECLAIMABLE = 'PMEM_SLAB_RECLAIMABLE',
310  MEMINFO_SLAB_UNRECLAIMABLE = 'PMEM_SLAB_UNRECLAIMABLE',
311  MEMINFO_KERNEL_STACK = 'PMEM_KERNEL_STACK',
312  MEMINFO_PAGE_TABLES = 'PMEM_PAGE_TABLES',
313  MEMINFO_COMMIT_LIMIT = 'PMEM_COMMIT_LIMIT',
314  MEMINFO_COMMITED_AS = 'PMEM_COMMITED_AS',
315  MEMINFO_VMALLOC_TOTAL = 'PMEM_VMALLOC_TOTAL',
316  MEMINFO_VMALLOC_USED = 'PMEM_VMALLOC_USED',
317  MEMINFO_VMALLOC_CHUNK = 'PMEM_VMALLOC_CHUNK',
318  MEMINFO_CMA_TOTAL = 'PMEM_CMA_TOTAL',
319  MEMINFO_CMA_FREE = 'PMEM_CMA_FREE',
320  MEMINFO_KERNEL_RECLAIMABLE = 'PMEM_KERNEL_RECLAIMABLE',
321  PMEM_ACTIVE_PURG = 'PMEM_ACTIVE_PURG',
322  PMEM_INACTIVE_PURG = 'PMEM_INACTIVE_PURG',
323  PMEM_PINED_PURG = 'PMEM_PINED_PURG',
324  UNRECOGNIZED = 'UNRECOGNIZED',
325}
326
327const sysMemInfo = [
328  SysMeminfoType.MEMINFO_UNSPECIFIED,
329  SysMeminfoType.MEMINFO_MEM_TOTAL,
330  SysMeminfoType.MEMINFO_MEM_FREE,
331  SysMeminfoType.MEMINFO_MEM_AVAILABLE,
332  SysMeminfoType.MEMINFO_BUFFERS,
333  SysMeminfoType.MEMINFO_CACHED,
334  SysMeminfoType.MEMINFO_SWAP_CACHED,
335  SysMeminfoType.MEMINFO_ACTIVE,
336  SysMeminfoType.MEMINFO_INACTIVE,
337  SysMeminfoType.MEMINFO_ACTIVE_ANON,
338  SysMeminfoType.MEMINFO_INACTIVE_ANON,
339  SysMeminfoType.MEMINFO_ACTIVE_FILE,
340  SysMeminfoType.MEMINFO_INACTIVE_FILE,
341  SysMeminfoType.MEMINFO_UNEVICTABLE,
342  SysMeminfoType.MEMINFO_MLOCKED,
343  SysMeminfoType.MEMINFO_SWAP_TOTAL,
344  SysMeminfoType.MEMINFO_SWAP_FREE,
345  SysMeminfoType.MEMINFO_DIRTY,
346  SysMeminfoType.MEMINFO_WRITEBACK,
347  SysMeminfoType.MEMINFO_ANON_PAGES,
348  SysMeminfoType.MEMINFO_MAPPED,
349  SysMeminfoType.MEMINFO_SHMEM,
350  SysMeminfoType.MEMINFO_SLAB,
351  SysMeminfoType.MEMINFO_SLAB_RECLAIMABLE,
352  SysMeminfoType.MEMINFO_SLAB_UNRECLAIMABLE,
353  SysMeminfoType.MEMINFO_KERNEL_STACK,
354  SysMeminfoType.MEMINFO_PAGE_TABLES,
355  SysMeminfoType.MEMINFO_COMMIT_LIMIT,
356  SysMeminfoType.MEMINFO_COMMITED_AS,
357  SysMeminfoType.MEMINFO_VMALLOC_TOTAL,
358  SysMeminfoType.MEMINFO_VMALLOC_USED,
359  SysMeminfoType.MEMINFO_VMALLOC_CHUNK,
360  SysMeminfoType.MEMINFO_CMA_TOTAL,
361  SysMeminfoType.MEMINFO_CMA_FREE,
362  SysMeminfoType.MEMINFO_KERNEL_RECLAIMABLE,
363  SysMeminfoType.PMEM_ACTIVE_PURG,
364  SysMeminfoType.PMEM_INACTIVE_PURG,
365  SysMeminfoType.PMEM_PINED_PURG,
366  SysMeminfoType.UNRECOGNIZED,
367];
368
369const sysMeminfoCase = (object: unknown): SysMeminfoType => {
370  if (typeof object === 'number') {
371    if (object >= 0) {
372      let sysMemType = sysMemInfo[object];
373      if (sysMemType) {
374        return sysMemType;
375      }
376    }
377    return SysMeminfoType.UNRECOGNIZED;
378  } else {
379    // @ts-ignore
380    let sysMemType = SysMeminfoType[object];
381    if (!sysMemType) {
382      return SysMeminfoType.UNRECOGNIZED;
383    }
384    return sysMemType;
385  }
386};
387
388export function sysMeminfoTypeFromJSON(object: unknown): SysMeminfoType {
389  return sysMeminfoCase(object);
390}
391
392export enum Type {
393  TYPE_UNSPECIFIED = 0,
394  HI3516 = 1,
395  P40 = 2,
396  UNRECOGNIZED = -1,
397}
398
399export interface HilogConfig {
400  pid: number;
401  logLevel: Level;
402  needClear: boolean;
403}
404
405export function levelFromJSON(object: unknown): Level {
406  switch (object) {
407    case 0:
408    case 'LEVEL_UNSPECIFIED':
409      return Level.LEVEL_UNSPECIFIED;
410    case 1:
411    case 'Error':
412      return Level.LOG_ERROR;
413    case 2:
414    case 'Info':
415      return Level.LOG_INFO;
416    case 3:
417    case 'Debug':
418      return Level.LOG_DEBUG;
419    case 4:
420    case 'Warn':
421      return Level.LOG_WARN;
422    case 5:
423    case 'Fatal':
424      return Level.LOG_FATAL;
425    case -1:
426    case 'UNRECOGNIZED':
427    default:
428      return Level.UNRECOGNIZED;
429  }
430}
431
432export enum Level {
433  LEVEL_UNSPECIFIED = 'LEVEL_UNSPECIFIED',
434  LOG_ERROR = 'ERROR',
435  LOG_INFO = 'INFO',
436  LOG_DEBUG = 'DEBUG',
437  LOG_WARN = 'WARN',
438  LOG_FATAL = 'FATAL',
439  UNRECOGNIZED = -1,
440}
441
442export interface NativeHookConfig {
443  pid?: number;
444  saveFile: boolean;
445  fileName: string;
446  filterSize: number;
447  smbPages: number;
448  maxStackDepth: number;
449  processName: string;
450  stringCompressed: boolean;
451  fpUnwind: boolean;
452  blocked: boolean;
453  recordAccurately?: boolean;
454  offlineSymbolization?: boolean;
455  callframeCompress?: boolean;
456  startupMode?: boolean;
457  statisticsInterval?: number;
458  mallocFreeMatchingInterval?: number;
459  sampleInterval?: number;
460  expandPids?: number[];
461  responseLibraryMode?: boolean;
462  jsStackReport?: number;
463  maxJsStackDepth?: number;
464  filterNapiName?: string;
465}
466
467export interface FpsConfig {
468  reportFps: boolean;
469}
470
471export interface ProcessConfig {
472  report_process_tree: boolean;
473  report_cpu: boolean;
474  report_diskio: boolean;
475  report_pss: boolean;
476}
477
478export interface CpuConfig {
479  pid: number;
480  reportProcessInfo: boolean;
481}
482
483enum IoReportType {
484  UNSPECIFIED = 'UNSPECIFIED',
485  IO_REPORT = 'IO_REPORT',
486  IO_REPORT_EX = 'IO_REPORT_EX',
487}
488
489export interface DiskioConfig {
490  reportIoStats: string;
491}
492
493export interface NetworkConfig {}
494
495export interface HiperfPluginConfig {
496  isRoot: boolean;
497  outfileName: string;
498  recordArgs: string;
499  splitOutfileName?: string;
500}
501
502export interface NativePluginConfig {
503  save_file: boolean;
504  smb_pages: number;
505  max_stack_depth: number;
506  process_name?: string;
507  string_compressed: boolean;
508  fp_unwind: boolean;
509  blocked: boolean;
510  callframe_compress: boolean;
511  record_accurately: boolean;
512  offline_symbolization: boolean;
513  startup_mode: boolean;
514  js_stack_report: number;
515  max_js_stack_depth: number;
516  filter_napi_name: string;
517  memtrace_enable: boolean;
518  malloc_disable: boolean;
519  pid?:number;
520}
521
522export interface HiSystemEventConfig {
523  msg: string;
524  subscribe_domain: string;
525  subscribe_event: string;
526}
527
528export interface ArkTSConfig {
529  pid: number;
530  type: number;
531  interval: number;
532  capture_numeric_value: boolean;
533  track_allocations: boolean;
534  enable_cpu_profiler: boolean;
535  cpu_profiler_interval: number;
536  splitOutfileName?: string;
537}
538
539export interface FFRTConfig {
540  pid?: number[];
541  startupProcessName?: string[];
542  restartProcessName?: string[];
543  smbPages?: number;
544  flushInterval?: number;
545  block?: boolean;
546  clockId?: string;
547}
548