features.c 614 B

12345678910111213141516171819202122232425
  1. #include <sys/cdefs.h>
  2. #include <sys/param.h>
  3. #include <sys/systm.h>
  4. #include <xen/xen-os.h>
  5. #include <xen/hypervisor.h>
  6. #include <xen/features.h>
  7. uint8_t xen_features[XENFEAT_NR_SUBMAPS * 32] /* __read_mostly */;
  8. void
  9. setup_xen_features(void)
  10. {
  11. xen_feature_info_t fi;
  12. int i, j;
  13. for (i = 0; i < XENFEAT_NR_SUBMAPS; i++) {
  14. fi.submap_idx = i;
  15. if (HYPERVISOR_xen_version(XENVER_get_features, &fi) < 0)
  16. break;
  17. for (j = 0; j < 32; j++)
  18. xen_features[i*32 + j] = !!(fi.submap & 1<<j);
  19. }
  20. }