* Save kernel-side structures to user-space for snapshotting. */
| 2850 | * Save kernel-side structures to user-space for snapshotting. |
| 2851 | */ |
| 2852 | int |
| 2853 | vm_snapshot_req(struct vm *vm, struct vm_snapshot_meta *meta) |
| 2854 | { |
| 2855 | int ret = 0; |
| 2856 | |
| 2857 | switch (meta->dev_req) { |
| 2858 | case STRUCT_VMX: |
| 2859 | ret = vmmops_snapshot(vm->cookie, meta); |
| 2860 | break; |
| 2861 | case STRUCT_VMCX: |
| 2862 | ret = vm_snapshot_vmcx(vm, meta); |
| 2863 | break; |
| 2864 | case STRUCT_VM: |
| 2865 | ret = vm_snapshot_vm(vm, meta); |
| 2866 | break; |
| 2867 | case STRUCT_VIOAPIC: |
| 2868 | ret = vioapic_snapshot(vm_ioapic(vm), meta); |
| 2869 | break; |
| 2870 | case STRUCT_VLAPIC: |
| 2871 | ret = vlapic_snapshot(vm, meta); |
| 2872 | break; |
| 2873 | case STRUCT_VHPET: |
| 2874 | ret = vhpet_snapshot(vm_hpet(vm), meta); |
| 2875 | break; |
| 2876 | case STRUCT_VATPIC: |
| 2877 | ret = vatpic_snapshot(vm_atpic(vm), meta); |
| 2878 | break; |
| 2879 | case STRUCT_VATPIT: |
| 2880 | ret = vatpit_snapshot(vm_atpit(vm), meta); |
| 2881 | break; |
| 2882 | case STRUCT_VPMTMR: |
| 2883 | ret = vpmtmr_snapshot(vm_pmtmr(vm), meta); |
| 2884 | break; |
| 2885 | case STRUCT_VRTC: |
| 2886 | ret = vrtc_snapshot(vm_rtc(vm), meta); |
| 2887 | break; |
| 2888 | default: |
| 2889 | printf("%s: failed to find the requested type %#x\n", |
| 2890 | __func__, meta->dev_req); |
| 2891 | ret = (EINVAL); |
| 2892 | } |
| 2893 | return (ret); |
| 2894 | } |
| 2895 | |
| 2896 | int |
| 2897 | vm_set_tsc_offset(struct vm *vm, int vcpuid, uint64_t offset) |
no test coverage detected