qemu/include/hw/s390x/tod.h
<<
>>
Prefs
   1/*
   2 * TOD (Time Of Day) clock
   3 *
   4 * Copyright 2018 Red Hat, Inc.
   5 * Author(s): David Hildenbrand <david@redhat.com>
   6 *
   7 * This work is licensed under the terms of the GNU GPL, version 2 or later.
   8 * See the COPYING file in the top-level directory.
   9 */
  10
  11#ifndef HW_S390_TOD_H
  12#define HW_S390_TOD_H
  13
  14#include "hw/qdev-core.h"
  15#include "tcg/s390-tod.h"
  16#include "qom/object.h"
  17
  18typedef struct S390TOD {
  19    uint8_t high;
  20    uint64_t low;
  21} S390TOD;
  22
  23#define TYPE_S390_TOD "s390-tod"
  24OBJECT_DECLARE_TYPE(S390TODState, S390TODClass, S390_TOD)
  25#define TYPE_KVM_S390_TOD TYPE_S390_TOD "-kvm"
  26#define TYPE_QEMU_S390_TOD TYPE_S390_TOD "-qemu"
  27
  28struct S390TODState {
  29    /* private */
  30    DeviceState parent_obj;
  31
  32    /*
  33     * Used by TCG to remember the time base. Used by KVM to backup the TOD
  34     * while the TOD is stopped.
  35     */
  36    S390TOD base;
  37    /* Used by KVM to remember if the TOD is stopped and base is valid. */
  38    bool stopped;
  39};
  40
  41struct S390TODClass {
  42    /* private */
  43    DeviceClass parent_class;
  44    void (*parent_realize)(DeviceState *dev, Error **errp);
  45
  46    /* public */
  47    void (*get)(const S390TODState *td, S390TOD *tod, Error **errp);
  48    void (*set)(S390TODState *td, const S390TOD *tod, Error **errp);
  49};
  50
  51void s390_init_tod(void);
  52S390TODState *s390_get_todstate(void);
  53
  54#endif
  55