Source
/*
** Copyright (C) 2001-2025 Zabbix SIA
**
** This program is free software: you can redistribute it and/or modify it under the terms of
** the GNU Affero General Public License as published by the Free Software Foundation, version 3.
**
** 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 Affero General Public License for more details.
**
** You should have received a copy of the GNU Affero General Public License along with this program.
** If not, see <https://www.gnu.org/licenses/>.
**/
typedef struct
{
zbx_perf_counter_data_t **cpu_counter;
zbx_perf_counter_data_t *queue_counter;
int count;
}
ZBX_CPUS_STAT_DATA;
int get_cpu_perf_counter_value(int cpu_num, int interval, double *value, char **error);
/* not _WINDOWS */
typedef struct
{
zbx_uint64_t h_counter[ZBX_CPU_STATE_COUNT][ZBX_MAX_COLLECTOR_HISTORY];
unsigned char h_status[ZBX_MAX_COLLECTOR_HISTORY];
unsigned char padding0[8 - (ZBX_MAX_COLLECTOR_HISTORY % 8)]; /* for 8-byte alignment */
int h_first;
int h_count;
int cpu_num;
int padding1; /* for 8-byte alignment */
}
ZBX_SINGLE_CPU_STAT_DATA;
typedef struct
{
ZBX_SINGLE_CPU_STAT_DATA *cpu;
int count;
}
ZBX_CPUS_STAT_DATA;
/* collector layout is designed to be cache-friendly for updates and large number of CPUs */
typedef struct
{
unsigned char status;
/* data comes from IBM AIX 'perfstat_cpu_util_t' (percents of utilization) */
zbx_uint64_t user_pct; /* user mode */