diff options
-rw-r--r-- | sys/xen/features.c | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/sys/xen/features.c b/sys/xen/features.c new file mode 100644 index 0000000..51d6899 --- /dev/null +++ b/sys/xen/features.c @@ -0,0 +1,24 @@ +#include <sys/cdefs.h> +__FBSDID("$FreeBSD$"); + +#include <sys/types.h> +#include <machine/xen/xen-os.h> +#include <machine/xen/hypervisor.h> +#include <machine/xen/features.h> + +uint8_t xen_features[XENFEAT_NR_SUBMAPS * 32] /* __read_mostly */; + +void +setup_xen_features(void) +{ + xen_feature_info_t fi; + int i, j; + + for (i = 0; i < XENFEAT_NR_SUBMAPS; i++) { + fi.submap_idx = i; + if (HYPERVISOR_xen_version(XENVER_get_features, &fi) < 0) + break; + for (j = 0; j < 32; j++) + xen_features[i*32 + j] = !!(fi.submap & 1<<j); + } +} |