* [Qemu-devel] [PULL 0/1] rng: use simpleq instead of gslist
@ 2016-03-08 10:54 Amit Shah
2016-03-08 10:54 ` [Qemu-devel] [PULL 1/1] rng: switch request queue to QSIMPLEQ Amit Shah
2016-03-09 0:44 ` [Qemu-devel] [PULL 0/1] rng: use simpleq instead of gslist Peter Maydell
0 siblings, 2 replies; 3+ messages in thread
From: Amit Shah @ 2016-03-08 10:54 UTC (permalink / raw)
To: Peter Maydell; +Cc: Amit Shah, qemu list
The following changes since commit 97556fe80e4f7252300b3498b3477fb4295153a3:
Merge remote-tracking branch 'remotes/bonzini/tags/for-upstream' into staging (2016-03-08 04:53:37 +0000)
are available in the git repository at:
https://git.kernel.org/pub/scm/virt/qemu/amit/virtio-rng.git tags/rng-for-2.6-2
for you to fetch changes up to 443590c2044968a97f5e7cddd35100c6075856a4:
rng: switch request queue to QSIMPLEQ (2016-03-08 12:54:14 +0530)
----------------------------------------------------------------
rng: use simpleq instead of gslist
----------------------------------------------------------------
Ladi Prosek (1):
rng: switch request queue to QSIMPLEQ
backends/rng-egd.c | 9 ++++-----
backends/rng-random.c | 6 +++---
backends/rng.c | 17 ++++++++++-------
include/sysemu/rng.h | 3 ++-
4 files changed, 19 insertions(+), 16 deletions(-)
--
2.5.0
^ permalink raw reply [flat|nested] 3+ messages in thread
* [Qemu-devel] [PULL 1/1] rng: switch request queue to QSIMPLEQ
2016-03-08 10:54 [Qemu-devel] [PULL 0/1] rng: use simpleq instead of gslist Amit Shah
@ 2016-03-08 10:54 ` Amit Shah
2016-03-09 0:44 ` [Qemu-devel] [PULL 0/1] rng: use simpleq instead of gslist Peter Maydell
1 sibling, 0 replies; 3+ messages in thread
From: Amit Shah @ 2016-03-08 10:54 UTC (permalink / raw)
To: Peter Maydell; +Cc: Amit Shah, Ladi Prosek, qemu list
From: Ladi Prosek <lprosek@redhat.com>
QSIMPLEQ supports appending to tail in O(1) and is intrusive so
it doesn't require extra memory allocations for the bookkeeping
data.
Suggested-by: Paolo Bonzini <pbonzini@redhat.com>
Signed-off-by: Ladi Prosek <lprosek@redhat.com>
Reviewed-by: Paolo Bonzini <pbonzini@redhat.com>
Reviewed-by: Amit Shah <amit.shah@redhat.com>
Message-Id: <1457010971-24771-1-git-send-email-lprosek@redhat.com>
Signed-off-by: Amit Shah <amit.shah@redhat.com>
---
backends/rng-egd.c | 9 ++++-----
backends/rng-random.c | 6 +++---
backends/rng.c | 17 ++++++++++-------
include/sysemu/rng.h | 3 ++-
4 files changed, 19 insertions(+), 16 deletions(-)
diff --git a/backends/rng-egd.c b/backends/rng-egd.c
index 30332ed..6e0ba22 100644
--- a/backends/rng-egd.c
+++ b/backends/rng-egd.c
@@ -49,11 +49,10 @@ static void rng_egd_request_entropy(RngBackend *b, RngRequest *req)
static int rng_egd_chr_can_read(void *opaque)
{
RngEgd *s = RNG_EGD(opaque);
- GSList *i;
+ RngRequest *req;
int size = 0;
- for (i = s->parent.requests; i; i = i->next) {
- RngRequest *req = i->data;
+ QSIMPLEQ_FOREACH(req, &s->parent.requests, next) {
size += req->size - req->offset;
}
@@ -65,8 +64,8 @@ static void rng_egd_chr_read(void *opaque, const uint8_t *buf, int size)
RngEgd *s = RNG_EGD(opaque);
size_t buf_offset = 0;
- while (size > 0 && s->parent.requests) {
- RngRequest *req = s->parent.requests->data;
+ while (size > 0 && !QSIMPLEQ_EMPTY(&s->parent.requests)) {
+ RngRequest *req = QSIMPLEQ_FIRST(&s->parent.requests);
int len = MIN(size, req->size - req->offset);
memcpy(req->data + req->offset, buf + buf_offset, len);
diff --git a/backends/rng-random.c b/backends/rng-random.c
index a6cb385..122e8d4 100644
--- a/backends/rng-random.c
+++ b/backends/rng-random.c
@@ -35,8 +35,8 @@ static void entropy_available(void *opaque)
{
RndRandom *s = RNG_RANDOM(opaque);
- while (s->parent.requests != NULL) {
- RngRequest *req = s->parent.requests->data;
+ while (!QSIMPLEQ_EMPTY(&s->parent.requests)) {
+ RngRequest *req = QSIMPLEQ_FIRST(&s->parent.requests);
ssize_t len;
len = read(s->fd, req->data, req->size);
@@ -58,7 +58,7 @@ static void rng_random_request_entropy(RngBackend *b, RngRequest *req)
{
RndRandom *s = RNG_RANDOM(b);
- if (s->parent.requests == NULL) {
+ if (QSIMPLEQ_EMPTY(&s->parent.requests)) {
/* If there are no pending requests yet, we need to
* install our fd handler. */
qemu_set_fd_handler(s->fd, entropy_available, NULL, s);
diff --git a/backends/rng.c b/backends/rng.c
index 277a41b..e57e2b4 100644
--- a/backends/rng.c
+++ b/backends/rng.c
@@ -33,7 +33,7 @@ void rng_backend_request_entropy(RngBackend *s, size_t size,
k->request_entropy(s, req);
- s->requests = g_slist_append(s->requests, req);
+ QSIMPLEQ_INSERT_TAIL(&s->requests, req, next);
}
}
@@ -83,24 +83,27 @@ static void rng_backend_free_request(RngRequest *req)
static void rng_backend_free_requests(RngBackend *s)
{
- GSList *i;
+ RngRequest *req, *next;
- for (i = s->requests; i; i = i->next) {
- rng_backend_free_request(i->data);
+ QSIMPLEQ_FOREACH_SAFE(req, &s->requests, next, next) {
+ rng_backend_free_request(req);
}
- g_slist_free(s->requests);
- s->requests = NULL;
+ QSIMPLEQ_INIT(&s->requests);
}
void rng_backend_finalize_request(RngBackend *s, RngRequest *req)
{
- s->requests = g_slist_remove(s->requests, req);
+ QSIMPLEQ_REMOVE(&s->requests, req, RngRequest, next);
rng_backend_free_request(req);
}
static void rng_backend_init(Object *obj)
{
+ RngBackend *s = RNG_BACKEND(obj);
+
+ QSIMPLEQ_INIT(&s->requests);
+
object_property_add_bool(obj, "opened",
rng_backend_prop_get_opened,
rng_backend_prop_set_opened,
diff --git a/include/sysemu/rng.h b/include/sysemu/rng.h
index 4fffd68..45629c4 100644
--- a/include/sysemu/rng.h
+++ b/include/sysemu/rng.h
@@ -39,6 +39,7 @@ struct RngRequest
void *opaque;
size_t offset;
size_t size;
+ QSIMPLEQ_ENTRY(RngRequest) next;
};
struct RngBackendClass
@@ -56,7 +57,7 @@ struct RngBackend
/*< protected >*/
bool opened;
- GSList *requests;
+ QSIMPLEQ_HEAD(requests, RngRequest) requests;
};
--
2.5.0
^ permalink raw reply related [flat|nested] 3+ messages in thread
* Re: [Qemu-devel] [PULL 0/1] rng: use simpleq instead of gslist
2016-03-08 10:54 [Qemu-devel] [PULL 0/1] rng: use simpleq instead of gslist Amit Shah
2016-03-08 10:54 ` [Qemu-devel] [PULL 1/1] rng: switch request queue to QSIMPLEQ Amit Shah
@ 2016-03-09 0:44 ` Peter Maydell
1 sibling, 0 replies; 3+ messages in thread
From: Peter Maydell @ 2016-03-09 0:44 UTC (permalink / raw)
To: Amit Shah; +Cc: qemu list
On 8 March 2016 at 17:54, Amit Shah <amit.shah@redhat.com> wrote:
> The following changes since commit 97556fe80e4f7252300b3498b3477fb4295153a3:
>
> Merge remote-tracking branch 'remotes/bonzini/tags/for-upstream' into staging (2016-03-08 04:53:37 +0000)
>
> are available in the git repository at:
>
> https://git.kernel.org/pub/scm/virt/qemu/amit/virtio-rng.git tags/rng-for-2.6-2
>
> for you to fetch changes up to 443590c2044968a97f5e7cddd35100c6075856a4:
>
> rng: switch request queue to QSIMPLEQ (2016-03-08 12:54:14 +0530)
>
> ----------------------------------------------------------------
> rng: use simpleq instead of gslist
>
> ----------------------------------------------------------------
>
> Ladi Prosek (1):
> rng: switch request queue to QSIMPLEQ
>
Applied, thanks.
-- PMM
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2016-03-09 0:44 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2016-03-08 10:54 [Qemu-devel] [PULL 0/1] rng: use simpleq instead of gslist Amit Shah
2016-03-08 10:54 ` [Qemu-devel] [PULL 1/1] rng: switch request queue to QSIMPLEQ Amit Shah
2016-03-09 0:44 ` [Qemu-devel] [PULL 0/1] rng: use simpleq instead of gslist Peter Maydell
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.