| /* |
| * s390 storage attributes device |
| * |
| * Copyright 2016 IBM Corp. |
| * Author(s): Claudio Imbrenda <imbrenda@linux.vnet.ibm.com> |
| * |
| * This work is licensed under the terms of the GNU GPL, version 2 or (at |
| * your option) any later version. See the COPYING file in the top-level |
| * directory. |
| */ |
| |
| #ifndef S390_STORAGE_ATTRIBUTES_H |
| #define S390_STORAGE_ATTRIBUTES_H |
| |
| #include "hw/qdev-core.h" |
| #include "monitor/monitor.h" |
| #include "qom/object.h" |
| |
| #define TYPE_S390_STATTRIB "s390-storage_attributes" |
| #define TYPE_QEMU_S390_STATTRIB "s390-storage_attributes-qemu" |
| #define TYPE_KVM_S390_STATTRIB "s390-storage_attributes-kvm" |
| |
| OBJECT_DECLARE_TYPE(S390StAttribState, S390StAttribClass, S390_STATTRIB) |
| |
| struct S390StAttribState { |
| DeviceState parent_obj; |
| uint64_t migration_cur_gfn; |
| bool migration_enabled; |
| }; |
| |
| |
| struct S390StAttribClass { |
| DeviceClass parent_class; |
| /* Return value: < 0 on error, or new count */ |
| int (*get_stattr)(S390StAttribState *sa, uint64_t *start_gfn, |
| uint32_t count, uint8_t *values); |
| int (*peek_stattr)(S390StAttribState *sa, uint64_t start_gfn, |
| uint32_t count, uint8_t *values); |
| int (*set_stattr)(S390StAttribState *sa, uint64_t start_gfn, |
| uint32_t count, uint8_t *values); |
| void (*synchronize)(S390StAttribState *sa); |
| int (*set_migrationmode)(S390StAttribState *sa, bool value, Error **errp); |
| int (*get_active)(S390StAttribState *sa); |
| long long (*get_dirtycount)(S390StAttribState *sa); |
| }; |
| |
| typedef struct QEMUS390StAttribState QEMUS390StAttribState; |
| DECLARE_INSTANCE_CHECKER(QEMUS390StAttribState, QEMU_S390_STATTRIB, |
| TYPE_QEMU_S390_STATTRIB) |
| |
| struct QEMUS390StAttribState { |
| S390StAttribState parent_obj; |
| }; |
| |
| typedef struct KVMS390StAttribState KVMS390StAttribState; |
| DECLARE_INSTANCE_CHECKER(KVMS390StAttribState, KVM_S390_STATTRIB, |
| TYPE_KVM_S390_STATTRIB) |
| |
| struct KVMS390StAttribState { |
| S390StAttribState parent_obj; |
| uint64_t still_dirty; |
| uint8_t *incoming_buffer; |
| }; |
| |
| void s390_stattrib_init(void); |
| |
| #ifdef CONFIG_KVM |
| Object *kvm_s390_stattrib_create(void); |
| #else |
| static inline Object *kvm_s390_stattrib_create(void) |
| { |
| return NULL; |
| } |
| #endif |
| |
| void hmp_info_cmma(Monitor *mon, const QDict *qdict); |
| void hmp_migrationmode(Monitor *mon, const QDict *qdict); |
| |
| #endif /* S390_STORAGE_ATTRIBUTES_H */ |