[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
- [PATCH] Avoid the casts in calls to queue function and macros,
Marin Ramesa <=