bug-hurd
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[PATCH] Avoid the casts in calls to queue function and macros


From: Marin Ramesa
Subject: [PATCH] Avoid the casts in calls to queue function and macros
Date: Fri, 20 Dec 2013 19:41:14 +0100

Avoid the casts by specifying addresses of queue_chain_t members. If the
order of members in the structures ever changes, the code will be correct.

---
 device/net_io.c   |  4 ++--
 kern/mach_clock.c | 10 +++++-----
 kern/processor.c  |  2 +-
 kern/sched_prim.c | 14 +++++++-------
 kern/task.c       |  4 ++--
 kern/thread.c     |  2 +-
 vm/vm_object.c    |  6 +++---
 7 files changed, 21 insertions(+), 21 deletions(-)

diff --git a/device/net_io.c b/device/net_io.c
index 68dcc09..dc43bdd 100644
--- a/device/net_io.c
+++ b/device/net_io.c
@@ -345,7 +345,7 @@ decl_simple_lock_data(,net_hash_header_lock)
 
 #define HASH_ITERATE(head, elt) (elt) = (net_hash_entry_t) (head); do {
 #define HASH_ITERATE_END(head, elt) \
-       (elt) = (net_hash_entry_t) queue_next((queue_entry_t) (elt));      \
+       (elt) = (net_hash_entry_t) queue_next(&((elt)->chain));    \
        } while ((elt) != (head));
 
 #define FILTER_ITERATE(if_port_list, fp, nextfp, chain)        \
@@ -2070,7 +2070,7 @@ hash_ent_remove (ifp, hp, used, head, entp, dead_p)
                }
        }
 
-       remqueue((queue_t)*head, (queue_entry_t)entp);
+       remqueue((queue_t)*head, &(entp->chain));
        ENQUEUE_DEAD(*dead_p, entp, chain);
        return FALSE;
 }    
diff --git a/kern/mach_clock.c b/kern/mach_clock.c
index c68b460..7815b32 100644
--- a/kern/mach_clock.c
+++ b/kern/mach_clock.c
@@ -292,7 +292,7 @@ void softclock(void)
            fcn = telt->fcn;
            param = telt->param;
 
-           remqueue(&timer_head.chain, (queue_entry_t)telt);
+           remqueue(&timer_head.chain, &(telt->chain));
            telt->set = TELT_UNSET;
            simple_unlock(&timer_lock);
            splx(s);
@@ -323,7 +323,7 @@ void set_timeout(telt, interval)
 
        for (next = (timer_elt_t)queue_first(&timer_head.chain);
             ;
-            next = (timer_elt_t)queue_next((queue_entry_t)next)) {
+            next = (timer_elt_t)queue_next(&(next->chain))) {
 
            if (next->ticks > interval)
                break;
@@ -333,7 +333,7 @@ void set_timeout(telt, interval)
         * Insert new timer element before 'next'
         * (after 'next'->prev)
         */
-       insque((queue_entry_t) telt, ((queue_entry_t)next)->prev);
+       insque(&(telt->chain), *(&(next->chain).prev));
        telt->set = TELT_SET;
        simple_unlock(&timer_lock);
        splx(s);
@@ -347,7 +347,7 @@ boolean_t reset_timeout(telt)
        s = splsched();
        simple_lock(&timer_lock);
        if (telt->set) {
-           remqueue(&timer_head.chain, (queue_entry_t)telt);
+           remqueue(&timer_head.chain, &(telt->chain));
            telt->set = TELT_UNSET;
            simple_unlock(&timer_lock);
            splx(s);
@@ -569,7 +569,7 @@ boolean_t untimeout(fcn, param)
                /*
                 *      Found it.
                 */
-               remqueue(&timer_head.chain, (queue_entry_t)elt);
+               remqueue(&timer_head.chain, &(elt->chain));
                elt->set = TELT_UNSET;
 
                simple_unlock(&timer_lock);
diff --git a/kern/processor.c b/kern/processor.c
index 865c324..9af48a7 100644
--- a/kern/processor.c
+++ b/kern/processor.c
@@ -919,7 +919,7 @@ processor_set_things(
                        thread_reference(thread);
                        threads[i] = thread;
                }
-               assert(queue_end(&pset->threads, (queue_entry_t) thread));
+               assert(queue_end(&pset->threads, &(thread->links)));
                break;
            }
        }
diff --git a/kern/sched_prim.c b/kern/sched_prim.c
index 1d2e14e..a3ce5b4 100644
--- a/kern/sched_prim.c
+++ b/kern/sched_prim.c
@@ -310,7 +310,7 @@ void clear_wait(
                 */
                thread_lock(thread);
                if (thread->wait_event == event) {
-                       remqueue(q, (queue_entry_t)thread);
+                       remqueue(q, &(thread->links));
                        thread->wait_event = 0;
                        event = 0;              /* cause to run below */
                }
@@ -389,12 +389,12 @@ void thread_wakeup_prim(
        lock = &wait_lock[index];
        simple_lock(lock);
        thread = (thread_t) queue_first(q);
-       while (!queue_end(q, (queue_entry_t)thread)) {
+       while (!queue_end(q, &(thread->links))) {
                next_th = (thread_t) queue_next((queue_t) thread);
 
                if (thread->wait_event == event) {
                        thread_lock(thread);
-                       remqueue(q, (queue_entry_t) thread);
+                       remqueue(q, &(thread->links));
                        thread->wait_event = 0;
                        reset_timeout_check(&thread->timer);
 
@@ -1448,7 +1448,7 @@ struct run_queue *rem_runq(
                        checkrq(rq, "rem_runq: before removing thread");
                        thread_check(th, rq);
 #endif /* DEBUG */
-                       remqueue(&rq->runq[0], (queue_entry_t) th);
+                       remqueue(&rq->runq[0], &(th->links));
                        rq->count--;
 #if    DEBUG
                        checkrq(rq, "rem_runq: after removing thread");
@@ -1889,7 +1889,7 @@ do_runq_scan(
            q = runq->runq + runq->low;
            while (count > 0) {
                thread = (thread_t) queue_first(q);
-               while (!queue_end(q, (queue_entry_t) thread)) {
+               while (!queue_end(q, &(thread->links))) {
                    /*
                     *  Get the next thread now, since we may
                     *  remove this thread from the run queue.
@@ -1920,7 +1920,7 @@ do_runq_scan(
                             *  see it.  So we remove the thread
                             *  from the runq to make it safe.
                             */
-                           remqueue(q, (queue_entry_t) thread);
+                           remqueue(q, &(thread->links));
                            runq->count--;
                            thread->runq = RUN_QUEUE_NULL;
 
@@ -2037,7 +2037,7 @@ void thread_check(
                whichq = NRQS-1;
        }
        if ((th->links.next == &rq->runq[whichq]) &&
-               (rq->runq[whichq].prev != (queue_entry_t)th))
+               (rq->runq[whichq].prev != &(th->links)))
                        panic("thread_check");
 }
 #endif /* DEBUG */
diff --git a/kern/task.c b/kern/task.c
index 13b3c76..fa7cf65 100644
--- a/kern/task.c
+++ b/kern/task.c
@@ -508,7 +508,7 @@ kern_return_t task_release(
         */
        list = &task->thread_list;
        thread = (thread_t) queue_first(list);
-       while (!queue_end(list, (queue_entry_t) thread)) {
+       while (!queue_end(list, &(thread->links))) {
                next = (thread_t) queue_next(&thread->thread_list);
                thread_release(thread);
                thread = next;
@@ -575,7 +575,7 @@ kern_return_t task_threads(
                thread_reference(thread);
                threads[i] = thread;
        }
-       assert(queue_end(&task->thread_list, (queue_entry_t) thread));
+       assert(queue_end(&task->thread_list, &(thread->links)));
 
        /* can unlock task now that we've got the thread refs */
        task_unlock(task);
diff --git a/kern/thread.c b/kern/thread.c
index 8474950..b15bfbd 100644
--- a/kern/thread.c
+++ b/kern/thread.c
@@ -2502,7 +2502,7 @@ kern_return_t processor_set_stack_usage(
                thread_reference(tmp_thread);
                threads[i] = tmp_thread;
        }
-       assert(queue_end(&pset->threads, (queue_entry_t) tmp_thread));
+       assert(queue_end(&pset->threads, &(tmp_thread->links)));
 
        /* can unlock processor set now that we have the thread refs */
        pset_unlock(pset);
diff --git a/vm/vm_object.c b/vm/vm_object.c
index 582487e..3051558 100644
--- a/vm/vm_object.c
+++ b/vm/vm_object.c
@@ -755,7 +755,7 @@ void vm_object_abort_activity(
         */
 
        p = (vm_page_t) queue_first(&object->memq);
-       while (!queue_end(&object->memq, (queue_entry_t) p)) {
+       while (!queue_end(&object->memq, &(p->pageq))) {
                next = (vm_page_t) queue_next(&p->listq);
 
                /*
@@ -2750,7 +2750,7 @@ void vm_object_page_remove(
                vm_object_page_remove_iterate++;
 
                p = (vm_page_t) queue_first(&object->memq);
-               while (!queue_end(&object->memq, (queue_entry_t) p)) {
+               while (!queue_end(&object->memq, &(p->pageq))) {
                        next = (vm_page_t) queue_next(&p->listq);
                        if ((start <= p->offset) && (p->offset < end)) {
                                if (!p->fictitious)
@@ -2986,7 +2986,7 @@ void vm_object_print(
        if (vm_object_print_pages) {
                count = 0;
                p = (vm_page_t) queue_first(&object->memq);
-               while (!queue_end(&object->memq, (queue_entry_t) p)) {
+               while (!queue_end(&object->memq, &(p->pageq))) {
                        if (count == 0) iprintf("memory:=");
                        else if (count == 4) {printf("\n"); iprintf(" ..."); 
count = 0;}
                        else printf(",");
-- 
1.8.1.4




reply via email to

[Prev in Thread] Current Thread [Next in Thread]