gic: Introduce virGICVersion enumeration

We currently blindly accept any numeric value as a GIC version, even
though only GIC v2 and GIC v3 actually exist; on the other hand, we
reject "host", which is a perfectly legitimate value for QEMU guests.

This new enumeration contains all GIC versions libvirt is aware of.
This commit is contained in:
Andrea Bolognani 2016-02-03 12:49:51 +01:00
parent 8fbdff1634
commit e76bef7f7b
3 changed files with 72 additions and 0 deletions

View File

@ -113,6 +113,7 @@ UTIL_SOURCES = \
util/virfile.c util/virfile.h \
util/virfirewall.c util/virfirewall.h \
util/virfirewallpriv.h \
util/virgic.c util/virgic.h \
util/virhash.c util/virhash.h \
util/virhashcode.c util/virhashcode.h \
util/virhook.c util/virhook.h \

33
src/util/virgic.c Normal file
View File

@ -0,0 +1,33 @@
/*
* virgic.c: ARM Generic Interrupt Controller support
*
* Copyright (C) 2016 Red Hat, Inc.
*
* 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: Andrea Bolognani <abologna@redhat.com>
*/
#include <config.h>
#include "internal.h"
#include "virgic.h"
#include "virutil.h"
VIR_ENUM_IMPL(virGICVersion, VIR_GIC_VERSION_LAST,
"none",
"host",
"2",
"3",
);

38
src/util/virgic.h Normal file
View File

@ -0,0 +1,38 @@
/*
* virgic.h: ARM Generic Interrupt Controller support
*
* Copyright (C) 2016 Red Hat, Inc.
*
* 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: Andrea Bolognani <abologna@redhat.com>
*/
#ifndef __VIR_GIC_H__
# define __VIR_GIC_H__
# include "virutil.h"
typedef enum {
VIR_GIC_VERSION_NONE = 0,
VIR_GIC_VERSION_HOST,
VIR_GIC_VERSION_2,
VIR_GIC_VERSION_3,
VIR_GIC_VERSION_LAST
} virGICVersion;
VIR_ENUM_DECL(virGICVersion);
#endif /* __VIR_GIC_H__ */