libvirt/src/util/virhostcpu.h
Viktor Mihajlovski 1be35910f7 util: Allow to query the presence of host CPU bitmaps
The functions to retrieve online and present host CPU information
are only supported on Linux for the time being.

This leads to runtime errors if these function are used on other
platforms. To avoid that, code in higher levels using the functions
must replicate the conditional compilation in higher level which
is error prone (and is plainly spoken ugly).

Adding a function virHostCPUHasBitmap that can be used to check
for host CPU bitmap support.

NB: There are other functions including the host CPU count that
are lacking support on all platforms, but they are too essential
in order to be bypassed.

Signed-off-by: Viktor Mihajlovski <mihajlov@linux.vnet.ibm.com>
2016-12-13 18:12:09 -05:00

62 lines
2.0 KiB
C

/*
* virhostcpu.h: helper APIs for host CPU info
*
* Copyright (C) 2006-2016 Red Hat, Inc.
* Copyright (C) 2006 Daniel P. Berrange
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* This library 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
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library. If not, see
* <http://www.gnu.org/licenses/>.
*
* Author: Daniel P. Berrange <berrange@redhat.com>
*/
#ifndef __VIR_HOSTCPU_H__
# define __VIR_HOSTCPU_H__
# include "internal.h"
# include "virarch.h"
# include "virbitmap.h"
# define VIR_HOST_CPU_MASK_LEN 1024
int virHostCPUGetStats(int cpuNum,
virNodeCPUStatsPtr params,
int *nparams,
unsigned int flags);
bool virHostCPUHasBitmap(void);
virBitmapPtr virHostCPUGetPresentBitmap(void);
virBitmapPtr virHostCPUGetOnlineBitmap(void);
int virHostCPUGetCount(void);
int virHostCPUGetThreadsPerSubcore(virArch arch);
int virHostCPUGetMap(unsigned char **cpumap,
unsigned int *online,
unsigned int flags);
int virHostCPUGetInfo(virArch hostarch,
unsigned int *cpus,
unsigned int *mhz,
unsigned int *nodes,
unsigned int *sockets,
unsigned int *cores,
unsigned int *threads);
int virHostCPUGetKVMMaxVCPUs(void);
int virHostCPUStatsAssign(virNodeCPUStatsPtr param,
const char *name,
unsigned long long value);
#endif /* __VIR_HOSTCPU_H__*/