rng-random.c (2d3b7c0164e1b9287304bc70dd6ed071ba3e8dfc) rng-random.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 *

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

30 * This backend exposes an additional "filename" property that can be used to
31 * set the filename to use to open the backend.
32 */
33
34static void entropy_available(void *opaque)
35{
36 RndRandom *s = RNG_RANDOM(opaque);
37
1/*
2 * QEMU Random Number Generator Backend
3 *
4 * Copyright IBM, Corp. 2012
5 *
6 * Authors:
7 * Anthony Liguori <aliguori@us.ibm.com>
8 *

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

30 * This backend exposes an additional "filename" property that can be used to
31 * set the filename to use to open the backend.
32 */
33
34static void entropy_available(void *opaque)
35{
36 RndRandom *s = RNG_RANDOM(opaque);
37
38 while (s->parent.requests != NULL) {
39 RngRequest *req = s->parent.requests->data;
38 while (!QSIMPLEQ_EMPTY(&s->parent.requests)) {
39 RngRequest *req = QSIMPLEQ_FIRST(&s->parent.requests);
40 ssize_t len;
41
42 len = read(s->fd, req->data, req->size);
43 if (len < 0 && errno == EAGAIN) {
44 return;
45 }
46 g_assert(len != -1);
47

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

53 /* We've drained all requests, the fd handler can be reset. */
54 qemu_set_fd_handler(s->fd, NULL, NULL, NULL);
55}
56
57static void rng_random_request_entropy(RngBackend *b, RngRequest *req)
58{
59 RndRandom *s = RNG_RANDOM(b);
60
40 ssize_t len;
41
42 len = read(s->fd, req->data, req->size);
43 if (len < 0 && errno == EAGAIN) {
44 return;
45 }
46 g_assert(len != -1);
47

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

53 /* We've drained all requests, the fd handler can be reset. */
54 qemu_set_fd_handler(s->fd, NULL, NULL, NULL);
55}
56
57static void rng_random_request_entropy(RngBackend *b, RngRequest *req)
58{
59 RndRandom *s = RNG_RANDOM(b);
60
61 if (s->parent.requests == NULL) {
61 if (QSIMPLEQ_EMPTY(&s->parent.requests)) {
62 /* If there are no pending requests yet, we need to
63 * install our fd handler. */
64 qemu_set_fd_handler(s->fd, entropy_available, NULL, s);
65 }
66}
67
68static void rng_random_opened(RngBackend *b, Error **errp)
69{

--- 83 unchanged lines hidden ---
62 /* If there are no pending requests yet, we need to
63 * install our fd handler. */
64 qemu_set_fd_handler(s->fd, entropy_available, NULL, s);
65 }
66}
67
68static void rng_random_opened(RngBackend *b, Error **errp)
69{

--- 83 unchanged lines hidden ---