From d6804d3a6ac2b6bb750bb27c136a96eb6dfb3202 Mon Sep 17 00:00:00 2001 From: Christoph Hellwig <hch@cloudius-systems.com> Date: Wed, 22 May 2013 17:06:56 +0200 Subject: [PATCH] convert bio list to <sys/queue.h> --- drivers/ramdisk.c | 13 ++++++------- fs/vfs/kern_physio.c | 1 - include/osv/bio.h | 4 ++-- 3 files changed, 8 insertions(+), 10 deletions(-) diff --git a/drivers/ramdisk.c b/drivers/ramdisk.c index c6153d5f5..f3e64d390 100644 --- a/drivers/ramdisk.c +++ b/drivers/ramdisk.c @@ -39,7 +39,7 @@ struct ramdisk_softc { char *addr; /* base address of image */ size_t size; /* image size */ - struct list_head bio_list; + TAILQ_HEAD(, bio) bio_list; pthread_mutex_t bio_mutex; pthread_cond_t bio_wait; }; @@ -94,7 +94,7 @@ ramdisk_strategy(struct bio *bio) struct ramdisk_softc *sc = bio->bio_dev->private_data; pthread_mutex_lock(&sc->bio_mutex); - list_insert(sc->bio_list.prev, &bio->bio_list); + TAILQ_INSERT_TAIL(&sc->bio_list, bio, bio_list); pthread_cond_signal(&sc->bio_wait); pthread_mutex_unlock(&sc->bio_mutex); } @@ -121,11 +121,10 @@ static void *ramdisk_thread_fn(void *arg) pthread_mutex_lock(&sc->bio_mutex); for (;;) { - while (!list_empty(&sc->bio_list)) { - struct list_head *l = list_first(&sc->bio_list); - struct bio *bio = list_entry(l, struct bio, bio_list); + while (!TAILQ_EMPTY(&sc->bio_list)) { + struct bio *bio = TAILQ_FIRST(&sc->bio_list); - list_remove(&bio->bio_list); + TAILQ_REMOVE(&sc->bio_list, bio, bio_list); ramdisk_io(sc, bio); } pthread_cond_wait(&sc->bio_wait, &sc->bio_mutex); @@ -147,7 +146,7 @@ ramdisk_init(void) sc->size = 4 * 1024 * 1024; sc->addr = malloc(sc->size); - list_init(&sc->bio_list); + TAILQ_INIT(&sc->bio_list); pthread_mutex_init(&sc->bio_mutex, NULL); pthread_cond_init(&sc->bio_wait, NULL); diff --git a/fs/vfs/kern_physio.c b/fs/vfs/kern_physio.c index ad824d721..74e9bb886 100644 --- a/fs/vfs/kern_physio.c +++ b/fs/vfs/kern_physio.c @@ -14,7 +14,6 @@ alloc_bio(void) return NULL; memset(bio, 0, sizeof(*bio)); - list_init(&bio->bio_list); pthread_mutex_init(&bio->bio_mutex, NULL); pthread_cond_init(&bio->bio_wait, NULL); return bio; diff --git a/include/osv/bio.h b/include/osv/bio.h index 183746d6f..806f447db 100644 --- a/include/osv/bio.h +++ b/include/osv/bio.h @@ -42,7 +42,7 @@ #include <stdint.h> #include <pthread.h> #include <stdbool.h> -#include <osv/list.h> +#include <bsd/sys/sys/queue.h> __BEGIN_DECLS @@ -85,7 +85,7 @@ struct bio { void (*bio_done)(struct bio *); - struct list_head bio_list; + TAILQ_ENTRY(bio) bio_list; /* * I/O synchronization, probably should move out of the struct to -- GitLab