#include "stats.h"
#include "zbxsysinfo.h"
#include "zbxlog.h"
#include "zbxtime.h"
#include "zbxmutexs.h"
#include "zbxthreads.h"
#ifdef ZBX_PROCSTAT_COLLECTOR
# include "procstat.h"
#endif
#ifdef _WINDOWS
# include "zbxwinservice.h"
# include "../win32/perfstat/perfstat.h"
# include "../win32/win32_cpu.h"
#else
# include "zbxnix.h"
#endif
static zbx_collector_data *collector = NULL;
int cpu_collector_started(void)
{
#ifdef _WINDOWS
return ((NULL != collector) && (NULL != collector->cpus.queue_counter));
#else
return (NULL != collector);
#endif
}
zbx_collector_data *get_collector(void)
{
return collector;
}
#ifndef _WINDOWS
int diskdevice_collector_started(void)
{
return ((NULL != collector) && (ZBX_NONEXISTENT_SHMID != collector->diskstat_shmid));
}
static int shm_id;
static int my_diskstat_shmid = ZBX_NONEXISTENT_SHMID;
static zbx_diskdevices_data *diskdevices = NULL;
zbx_diskdevices_data *get_diskdevices(void)
{
return diskdevices;
}
static zbx_mutex_t diskstats_lock = ZBX_MUTEX_NULL;
void stats_lock_diskstats(void)
{
zbx_mutex_lock(diskstats_lock);
}
void stats_unlock_diskstats(void)
{
zbx_mutex_unlock(diskstats_lock);
}
#endif
static int zbx_get_cpu_num(void)
{
#if defined(_WINDOWS)
return get_cpu_num_win32();
#elif defined(HAVE_SYS_PSTAT_H)
struct pst_dynamic psd;