blob: c2e79409e9dcf98b549dd28dc791f8f2dcf2bf8b [file] [log] [blame]
// Copyright 2018 The Fuchsia Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef GARNET_BIN_GUEST_VMM_DEVICE_STREAM_BASE_H_
#define GARNET_BIN_GUEST_VMM_DEVICE_STREAM_BASE_H_
#include "garnet/bin/guest/vmm/device/virtio_queue.h"
// Abstracts out the queue handling logic into a stream.
class StreamBase {
public:
void Init(const PhysMem& phys_mem, VirtioQueue::InterruptFn interrupt) {
queue_.set_phys_mem(&phys_mem);
queue_.set_interrupt(std::move(interrupt));
}
void Configure(uint16_t size, zx_gpaddr_t desc, zx_gpaddr_t avail,
zx_gpaddr_t used) {
queue_.Configure(size, desc, avail, used);
}
uint32_t* Used() { return chain_.Used(); }
protected:
VirtioQueue queue_;
VirtioChain chain_;
VirtioDescriptor desc_;
};
#endif // GARNET_BIN_GUEST_VMM_DEVICE_STREAM_BASE_H_