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. */
 };
 

Reply via email to