rng-egd.c (2d3b7c0164e1b9287304bc70dd6ed071ba3e8dfc) rng-egd.c (443590c2044968a97f5e7cddd35100c6075856a4)
1/*
2 * QEMU Random Number Generator Backend
3 *
4 * Copyright IBM, Corp. 2012
5 *
6 * Authors:
7 * Anthony Liguori <aliguori@us.ibm.com>
8 *

--- 35 unchanged lines hidden (view full) ---

44
45 size -= len;
46 }
47}
48
49static int rng_egd_chr_can_read(void *opaque)
50{
51 RngEgd *s = RNG_EGD(opaque);
1/*
2 * QEMU Random Number Generator Backend
3 *
4 * Copyright IBM, Corp. 2012
5 *
6 * Authors:
7 * Anthony Liguori <aliguori@us.ibm.com>
8 *

--- 35 unchanged lines hidden (view full) ---

44
45 size -= len;
46 }
47}
48
49static int rng_egd_chr_can_read(void *opaque)
50{
51 RngEgd *s = RNG_EGD(opaque);
52 GSList *i;
52 RngRequest *req;
53 int size = 0;
54
53 int size = 0;
54
55 for (i = s->parent.requests; i; i = i->next) {
56 RngRequest *req = i->data;
55 QSIMPLEQ_FOREACH(req, &s->parent.requests, next) {
57 size += req->size - req->offset;
58 }
59
60 return size;
61}
62
63static void rng_egd_chr_read(void *opaque, const uint8_t *buf, int size)
64{
65 RngEgd *s = RNG_EGD(opaque);
66 size_t buf_offset = 0;
67
56 size += req->size - req->offset;
57 }
58
59 return size;
60}
61
62static void rng_egd_chr_read(void *opaque, const uint8_t *buf, int size)
63{
64 RngEgd *s = RNG_EGD(opaque);
65 size_t buf_offset = 0;
66
68 while (size > 0 && s->parent.requests) {
69 RngRequest *req = s->parent.requests->data;
67 while (size > 0 && !QSIMPLEQ_EMPTY(&s->parent.requests)) {
68 RngRequest *req = QSIMPLEQ_FIRST(&s->parent.requests);
70 int len = MIN(size, req->size - req->offset);
71
72 memcpy(req->data + req->offset, buf + buf_offset, len);
73 buf_offset += len;
74 req->offset += len;
75 size -= len;
76
77 if (req->offset == req->size) {

--- 100 unchanged lines hidden ---
69 int len = MIN(size, req->size - req->offset);
70
71 memcpy(req->data + req->offset, buf + buf_offset, len);
72 buf_offset += len;
73 req->offset += len;
74 size -= len;
75
76 if (req->offset == req->size) {

--- 100 unchanged lines hidden ---