Module Name: src
Committed By: christos
Date: Sat Nov 23 22:52:40 UTC 2013
Modified Files:
src/sys/arch/atari/atari: stalloc.c stalloc.h
Log Message:
convert from CIRCLEQ to TAILQ; remove open coding.
To generate a diff of this commit:
cvs rdiff -u -r1.13 -r1.14 src/sys/arch/atari/atari/stalloc.c
cvs rdiff -u -r1.4 -r1.5 src/sys/arch/atari/atari/stalloc.h
Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.
Modified files:
Index: src/sys/arch/atari/atari/stalloc.c
diff -u src/sys/arch/atari/atari/stalloc.c:1.13 src/sys/arch/atari/atari/stalloc.c:1.14
--- src/sys/arch/atari/atari/stalloc.c:1.13 Tue Apr 13 07:22:22 2010
+++ src/sys/arch/atari/atari/stalloc.c Sat Nov 23 17:52:40 2013
@@ -1,4 +1,4 @@
-/* $NetBSD: stalloc.c,v 1.13 2010/04/13 11:22:22 tsutsui Exp $ */
+/* $NetBSD: stalloc.c,v 1.14 2013/11/23 22:52:40 christos Exp $ */
/*
* Copyright (c) 1995 Leo Weppelman (Atari modifications)
@@ -34,7 +34,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: stalloc.c,v 1.13 2010/04/13 11:22:22 tsutsui Exp $");
+__KERNEL_RCSID(0, "$NetBSD: stalloc.c,v 1.14 2013/11/23 22:52:40 christos Exp $");
#include <sys/types.h>
#include <sys/param.h>
@@ -53,8 +53,8 @@ extern u_long st_pool_size, st_pool_virt
#define PHYS_ADDR(virt) ((u_long)(virt) - st_pool_virt + st_pool_phys)
-static CIRCLEQ_HEAD(stlist, mem_node) st_list;
-static CIRCLEQ_HEAD(freelist, mem_node) free_list;
+static TAILQ_HEAD(stlist, mem_node) st_list;
+static TAILQ_HEAD(freelist, mem_node) free_list;
u_long stmem_total; /* total free. */
void
@@ -68,11 +68,11 @@ init_stmem(void)
mem = (struct mem_node *)st_pool_virt;
mem->size = st_pool_size - sizeof(*mem);
- CIRCLEQ_INIT(&st_list);
- CIRCLEQ_INIT(&free_list);
+ TAILQ_INIT(&st_list);
+ TAILQ_INIT(&free_list);
- CIRCLEQ_INSERT_HEAD(&st_list, mem, link);
- CIRCLEQ_INSERT_HEAD(&free_list, mem, free_link);
+ TAILQ_INSERT_HEAD(&st_list, mem, link);
+ TAILQ_INSERT_HEAD(&free_list, mem, free_link);
splx(s);
}
@@ -93,22 +93,22 @@ alloc_stmem(u_long size, void **phys_add
/*
* walk list of available nodes, finding the best-fit.
*/
- bfit = NULL;
- mn = free_list.cqh_first;
- for (; mn != (void *)&free_list; mn = mn->free_link.cqe_next) {
+ bfit = TAILQ_END(&free_list);
+ TAILQ_FOREACH(mn, &free_list, free_link) {
if (size <= mn->size) {
- if ((bfit != NULL) && (bfit->size < mn->size))
+ if ((bfit != TAILQ_END(&free_list)) &&
+ (bfit->size < mn->size))
continue;
bfit = mn;
}
}
- if (bfit != NULL)
+ if (bfit != TAILQ_END(&free_list))
mn = bfit;
- if (mn == (void *)&free_list) {
+ if (mn == TAILQ_END(&free_list)) {
printf("St-mem pool exhausted, binpatch 'st_pool_size'"
"to get more\n");
splx(s);
- return(NULL);
+ return NULL;
}
if ((mn->size - size) <= sizeof (*mn)) {
@@ -116,8 +116,8 @@ alloc_stmem(u_long size, void **phys_add
* our allocation would not leave room
* for a new node in between.
*/
- CIRCLEQ_REMOVE(&free_list, mn, free_link);
- mn->free_link.cqe_next = NULL;
+ TAILQ_REMOVE(&free_list, mn, free_link);
+ TAILQ_NEXT(mn, free_link) = TAILQ_END(&free_list);
size = mn->size; /* increase size. (or same) */
stmem_total -= mn->size;
splx(s);
@@ -137,8 +137,8 @@ alloc_stmem(u_long size, void **phys_add
* add split node to node list
* and mark as not on free list
*/
- CIRCLEQ_INSERT_AFTER(&st_list, new, mn, link);
- mn->free_link.cqe_next = NULL;
+ TAILQ_INSERT_AFTER(&st_list, new, mn, link);
+ TAILQ_NEXT(mn, free_link) = TAILQ_END(&free_list);
stmem_total -= size + sizeof(struct mem_node);
splx(s);
@@ -157,63 +157,67 @@ free_stmem(void *mem)
s = splhigh();
mn = (struct mem_node *)mem - 1;
- next = mn->link.cqe_next;
- prev = mn->link.cqe_prev;
+ next = TAILQ_NEXT(mn, link);
+ prev = TAILQ_PREV(mn, stlist, link);
/*
* check ahead of us.
*/
- if (next != (void *)&st_list && next->free_link.cqe_next) {
+ if (next != LIST_END(&st_list) &&
+ TAILQ_NEXT(next, free_link) != TAILQ_END(&free_list)) {
/*
* if next is: a valid node and a free node. ==> merge
*/
- CIRCLEQ_INSERT_BEFORE(&free_list, next, mn, free_link);
- CIRCLEQ_REMOVE(&st_list, next, link);
- CIRCLEQ_REMOVE(&st_list, next, free_link);
+ TAILQ_INSERT_BEFORE(next, mn, free_link);
+ TAILQ_REMOVE(&st_list, next, link);
+ TAILQ_REMOVE(&st_list, next, free_link);
stmem_total += mn->size + sizeof(struct mem_node);
mn->size += next->size + sizeof(struct mem_node);
}
- if (prev != (void *)&st_list && prev->free_link.cqe_prev) {
+ if (prev != LIST_END(&st_list) &&
+ TAILQ_PREV(prev, freelist, free_link) != TAILQ_END(&free_list)) {
/*
* if prev is: a valid node and a free node. ==> merge
*/
- if (mn->free_link.cqe_next == NULL)
+ if (TAILQ_NEXT(mn, free_link) == TAILQ_END(&free_list))
stmem_total += mn->size + sizeof(struct mem_node);
else {
/* already on free list */
- CIRCLEQ_REMOVE(&free_list, mn, free_link);
+ TAILQ_REMOVE(&free_list, mn, free_link);
stmem_total += sizeof(struct mem_node);
}
- CIRCLEQ_REMOVE(&st_list, mn, link);
+ TAILQ_REMOVE(&st_list, mn, link);
prev->size += mn->size + sizeof(struct mem_node);
- } else if (mn->free_link.cqe_next == NULL) {
+ } else if (TAILQ_NEXT(mn, free_link) == TAILQ_END(&free_list)) {
/*
* we still are not on free list and we need to be.
* <-- | -->
*/
- while (next != (void *)&st_list && prev != (void *)&st_list) {
- if (next->free_link.cqe_next) {
- CIRCLEQ_INSERT_BEFORE(&free_list, next, mn,
- free_link);
+ while (next != LIST_END(&st_list) &&
+ prev != LIST_END(&st_list)) {
+ if (TAILQ_NEXT(next, free_link) !=
+ TAILQ_END(&free_list)) {
+ TAILQ_INSERT_BEFORE(next, mn, free_link);
break;
}
- if (prev->free_link.cqe_next) {
- CIRCLEQ_INSERT_AFTER(&free_list, prev, mn,
+ if (TAILQ_NEXT(prev, free_link) !=
+ TAILQ_END(&free_list)) {
+ TAILQ_INSERT_AFTER(&free_list, prev, mn,
free_link);
break;
}
- prev = prev->link.cqe_prev;
- next = next->link.cqe_next;
+ prev = TAILQ_PREV(prev, stlist, link);
+ next = TAILQ_NEXT(next, link);
}
- if (mn->free_link.cqe_next == NULL) {
- if (next == (void *)&st_list) {
+ if (TAILQ_NEXT(mn, free_link) == TAILQ_END(&free_list)) {
+ if (next == LIST_END(&st_list)) {
/*
* we are not on list so we can add
* ourselves to the tail. (we walked to it.)
*/
- CIRCLEQ_INSERT_TAIL(&free_list,mn,free_link);
+ TAILQ_INSERT_TAIL(&free_list,mn,free_link);
} else {
- CIRCLEQ_INSERT_HEAD(&free_list,mn,free_link);
+ TAILQ_INSERT_HEAD(&free_list,mn,free_link);
}
}
stmem_total += mn->size;/* add our helpings to the pool. */
Index: src/sys/arch/atari/atari/stalloc.h
diff -u src/sys/arch/atari/atari/stalloc.h:1.4 src/sys/arch/atari/atari/stalloc.h:1.5
--- src/sys/arch/atari/atari/stalloc.h:1.4 Thu Mar 5 08:21:44 2009
+++ src/sys/arch/atari/atari/stalloc.h Sat Nov 23 17:52:40 2013
@@ -1,4 +1,4 @@
-/* $NetBSD: stalloc.h,v 1.4 2009/03/05 13:21:44 tsutsui Exp $ */
+/* $NetBSD: stalloc.h,v 1.5 2013/11/23 22:52:40 christos Exp $ */
/*
* Copyright (c) 1994 Christian E. Hopps (allocator stuff)
@@ -39,8 +39,8 @@
* St-mem allocator stuff.
*/
struct mem_node {
- CIRCLEQ_ENTRY(mem_node) link;
- CIRCLEQ_ENTRY(mem_node) free_link;
+ TAILQ_ENTRY(mem_node) link;
+ TAILQ_ENTRY(mem_node) free_link;
u_long size; /* size of memory following node. */
};