From: Jack Lange <jacklange@cs.pitt.edu> Date: Wed, 20 Apr 2011 03:20:49 +0000 (-0500) Subject: queue updates X-Git-Url: http://v3vee.org/palacios/gitweb/gitweb.cgi?a=commitdiff_plain;h=43cf194456fcf1cc7bf4850aa0200a50e7a27920;p=palacios.git queue updates --- diff --git a/palacios/include/palacios/vmm_queue.h b/palacios/include/palacios/vmm_queue.h index e88329f..811f19d 100644 --- a/palacios/include/palacios/vmm_queue.h +++ b/palacios/include/palacios/vmm_queue.h @@ -28,30 +28,26 @@ #include <palacios/vmm_lock.h> -/* IMPORTANT: - * This implementation currently does no locking, and as such is not - * SMP/thread/interrupt safe - */ -struct queue_entry { +struct v3_queue_entry { addr_t entry; struct list_head entry_list; }; -struct gen_queue { +struct v3_queue { uint_t num_entries; struct list_head entries; v3_lock_t lock; }; -struct gen_queue * v3_create_queue(); -void v3_init_queue(struct gen_queue * queue); +struct v3_queue * v3_create_queue(); +void v3_init_queue(struct v3_queue * queue); -void v3_enqueue(struct gen_queue * queue, addr_t entry); -addr_t v3_dequeue(struct gen_queue * queue); +void v3_enqueue(struct v3_queue * queue, addr_t entry); +addr_t v3_dequeue(struct v3_queue * queue); diff --git a/palacios/src/palacios/vmm_queue.c b/palacios/src/palacios/vmm_queue.c index b06ff73..03cfb6d 100644 --- a/palacios/src/palacios/vmm_queue.c +++ b/palacios/src/palacios/vmm_queue.c @@ -19,20 +19,20 @@ #include <palacios/vmm_queue.h> -void v3_init_queue(struct gen_queue * queue) { +void v3_init_queue(struct v3_queue * queue) { queue->num_entries = 0; INIT_LIST_HEAD(&(queue->entries)); v3_lock_init(&queue->lock); } -struct gen_queue * v3_create_queue() { - struct gen_queue * tmp_queue = V3_Malloc(sizeof(struct gen_queue)); +struct v3_queue * v3_create_queue() { + struct v3_queue * tmp_queue = V3_Malloc(sizeof(struct v3_queue)); v3_init_queue(tmp_queue); return tmp_queue; } -void v3_enqueue(struct gen_queue * queue, addr_t entry) { - struct queue_entry * q_entry = V3_Malloc(sizeof(struct queue_entry)); +void v3_enqueue(struct v3_queue * queue, addr_t entry) { + struct v3_queue_entry * q_entry = V3_Malloc(sizeof(struct v3_queue_entry)); v3_lock(queue->lock); q_entry->entry = entry; @@ -42,13 +42,13 @@ void v3_enqueue(struct gen_queue * queue, addr_t entry) { } -addr_t v3_dequeue(struct gen_queue * queue) { +addr_t v3_dequeue(struct v3_queue * queue) { addr_t entry_val = 0; v3_lock(queue->lock); if (!list_empty(&(queue->entries))) { struct list_head * q_entry = queue->entries.next; - struct queue_entry * tmp_entry = list_entry(q_entry, struct queue_entry, entry_list); + struct v3_queue_entry * tmp_entry = list_entry(q_entry, struct v3_queue_entry, entry_list); entry_val = tmp_entry->entry; list_del(q_entry);