1
2
3
4
5
6
7
8
9
10
11
12#ifndef S390_STORAGE_ATTRIBUTES_H
13#define S390_STORAGE_ATTRIBUTES_H
14
15#include "hw/qdev-core.h"
16#include "monitor/monitor.h"
17#include "qom/object.h"
18
19#define TYPE_S390_STATTRIB "s390-storage_attributes"
20#define TYPE_QEMU_S390_STATTRIB "s390-storage_attributes-qemu"
21#define TYPE_KVM_S390_STATTRIB "s390-storage_attributes-kvm"
22
23OBJECT_DECLARE_TYPE(S390StAttribState, S390StAttribClass, S390_STATTRIB)
24
25struct S390StAttribState {
26 DeviceState parent_obj;
27 uint64_t migration_cur_gfn;
28 bool migration_enabled;
29};
30
31
32struct S390StAttribClass {
33 DeviceClass parent_class;
34
35 int (*get_stattr)(S390StAttribState *sa, uint64_t *start_gfn,
36 uint32_t count, uint8_t *values);
37 int (*peek_stattr)(S390StAttribState *sa, uint64_t start_gfn,
38 uint32_t count, uint8_t *values);
39 int (*set_stattr)(S390StAttribState *sa, uint64_t start_gfn,
40 uint32_t count, uint8_t *values);
41 void (*synchronize)(S390StAttribState *sa);
42 int (*set_migrationmode)(S390StAttribState *sa, bool value);
43 int (*get_active)(S390StAttribState *sa);
44 long long (*get_dirtycount)(S390StAttribState *sa);
45};
46
47typedef struct QEMUS390StAttribState QEMUS390StAttribState;
48DECLARE_INSTANCE_CHECKER(QEMUS390StAttribState, QEMU_S390_STATTRIB,
49 TYPE_QEMU_S390_STATTRIB)
50
51struct QEMUS390StAttribState {
52 S390StAttribState parent_obj;
53};
54
55typedef struct KVMS390StAttribState KVMS390StAttribState;
56DECLARE_INSTANCE_CHECKER(KVMS390StAttribState, KVM_S390_STATTRIB,
57 TYPE_KVM_S390_STATTRIB)
58
59struct KVMS390StAttribState {
60 S390StAttribState parent_obj;
61 uint64_t still_dirty;
62 uint8_t *incoming_buffer;
63};
64
65void s390_stattrib_init(void);
66
67#ifdef CONFIG_KVM
68Object *kvm_s390_stattrib_create(void);
69#else
70static inline Object *kvm_s390_stattrib_create(void)
71{
72 return NULL;
73}
74#endif
75
76void hmp_info_cmma(Monitor *mon, const QDict *qdict);
77void hmp_migrationmode(Monitor *mon, const QDict *qdict);
78
79#endif
80