diff options
author | Timos Ampelikiotis <t.ampelikiotis@virtualopensystems.com> | 2022-09-21 15:36:21 +0200 |
---|---|---|
committer | Angelos Mouzakitis <a.mouzakitis@virtualopensystems.com> | 2023-10-03 15:18:54 +0300 |
commit | 346f9c0f4a72945795b2bf203d2294ff00f25148 (patch) | |
tree | 46107a4c094fefb92ee2362c8297368d7d1e9ac8 /virtio_rng.h | |
parent | c5abd7c9c809e21d8c41353c57049a7ec1c60436 (diff) |
Virtio-loopback-adapter Alpha release:
- The virtio-loopback-adapter is part of the Virtio Loopback
architecture detailed in the following link:
https://git.virtualopensystems.com/virtio-loopback/docs
Signed-off-by: Timos Ampelikiotis <t.ampelikiotis@virtualopensystems.com>
Diffstat (limited to 'virtio_rng.h')
-rw-r--r-- | virtio_rng.h | 58 |
1 files changed, 58 insertions, 0 deletions
diff --git a/virtio_rng.h b/virtio_rng.h new file mode 100644 index 0000000..042f0fd --- /dev/null +++ b/virtio_rng.h @@ -0,0 +1,58 @@ +/* + * Copyright 2022 Virtual Open Systems SAS. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software Foundation, + * Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + */ + +#ifndef VIRTIO_RNG +#define VIRTIO_RNG + +#include "virtio_loopback.h" + +extern const char test_str[64]; + +typedef void RngBackend; + +typedef struct VirtIORNGConf { + RngBackend *rng; + uint64_t max_bytes; + uint32_t period_ms; +} VirtIORNGConf; + +typedef struct VirtIORNG { + VirtIODevice *parent_obj; + + /* Only one vq - guest puts buffer(s) on it when it needs entropy */ + VirtQueue *vq; + VirtIORNGConf conf; + RngBackend *rng; + + /* We purposefully don't migrate this state. The quota will reset on the + * destination as a result. Rate limiting is host state, not guest state. + */ + int64_t quota_remaining; + bool activate_timer; + +} VirtIORNG; + +bool is_guest_ready(VirtIORNG *vrng); +size_t get_request_size(VirtQueue *vq, unsigned quota); +void virtio_rng_set_status(VirtIODevice *vdev, uint8_t status); +void virtio_rng_process(VirtIORNG *vrng); +void chr_read(VirtIORNG *vrng, const void *buf, size_t size); +void virtio_rng_realize(void); +void virtio_rng_init(VirtIODevice *vdev); + +#endif /* VIRTIO_RNG */ |