bos: convert struct bnode_type to use opr
authorChas Williams (CONTRACTOR) <chas@cmf.nrl.navy.mil>
Mon, 1 Oct 2012 14:08:36 +0000 (10:08 -0400)
committerDerrick Brashear <shadow@your-file-system.com>
Tue, 2 Oct 2012 20:19:20 +0000 (13:19 -0700)
Convert struct bnode_type to use the common linked list code from opr.

Change-Id: I21329aff81a91a79a1fcf525f4fdd3a22b33ec92
Reviewed-on: http://gerrit.openafs.org/8166
Tested-by: BuildBot <buildbot@rampaginggeek.com>
Reviewed-by: Derrick Brashear <shadow@your-file-system.com>

src/bozo/bnode.c
src/bozo/bnode_internal.h
src/bozo/cronbnodeops.c
src/bozo/ezbnodeops.c
src/bozo/fsbnodeops.c

index 9b0f40f..9faa992 100644 (file)
@@ -20,6 +20,7 @@
 #include <afs/audit.h>
 #include <afs/afsutil.h>
 #include <afs/fileutil.h>
+#include <opr/queue.h>
 
 #include "bnode.h"
 #include "bnode_internal.h"
@@ -36,7 +37,7 @@ int bnode_waiting = 0;
 static PROCESS bproc_pid;      /* pid of waker-upper */
 static struct bnode *allBnodes = 0;    /* list of all bnodes */
 static struct bnode_proc *allProcs = 0;        /* list of all processes for which we're waiting */
-static struct bnode_type *allTypes = 0;        /* list of registered type handlers */
+static struct opr_queue allTypes;      /**< List of all registered type handlers */
 
 static struct bnode_stats {
     int weirdPids;
@@ -320,28 +321,32 @@ bnode_FindInstance(char *aname)
 static struct bnode_type *
 FindType(char *aname)
 {
-    struct bnode_type *tt;
+    struct opr_queue *cursor;
+
+    for (opr_queue_Scan(&allTypes, cursor)) {
+       struct bnode_type *tt = opr_queue_Entry(cursor, struct bnode_type, q);
 
-    for (tt = allTypes; tt; tt = tt->next) {
        if (!strcmp(tt->name, aname))
            return tt;
     }
-    return (struct bnode_type *)0;
+    return NULL;
 }
 
 int
 bnode_Register(char *atype, struct bnode_ops *aprocs, int anparms)
 {
-    struct bnode_type *tt;
+    struct opr_queue *cursor;
+    struct bnode_type *tt = NULL;
 
-    for (tt = allTypes; tt; tt = tt->next) {
+    for (opr_queue_Scan(&allTypes, cursor), tt = NULL) {
+       tt = opr_queue_Entry(cursor, struct bnode_type, q);
        if (!strcmp(tt->name, atype))
            break;
     }
     if (!tt) {
        tt = calloc(1, sizeof(struct bnode_type));
-       tt->next = allTypes;
-       allTypes = tt;
+        opr_queue_Init(&tt->q);
+       opr_queue_Prepend(&allTypes, &tt->q);
        tt->name = atype;
     }
     tt->ops = aprocs;
@@ -849,6 +854,7 @@ bnode_Init(void)
     if (initDone)
        return 0;
     initDone = 1;
+    opr_queue_Init(&allTypes);
     memset(&bnode_stats, 0, sizeof(bnode_stats));
     LWP_InitializeProcessSupport(1, &junk);    /* just in case */
     IOMGR_Initialize();
index d397826..9b41192 100644 (file)
@@ -36,7 +36,7 @@ struct bnode_ops {
 };
 
 struct bnode_type {
-    struct bnode_type *next;
+    struct opr_queue q;
     char *name;
     struct bnode_ops *ops;
 };
index afb337e..c46bf8c 100644 (file)
@@ -18,6 +18,7 @@
 #include <lwp.h>
 #include <afs/ktime.h>
 #include <afs/afsutil.h>
+#include <opr/queue.h>
 
 #include "bnode.h"
 #include "bnode_internal.h"
index d640d4e..586b177 100644 (file)
@@ -17,6 +17,8 @@
 #include <rx/rx.h>
 
 #include <afs/afsutil.h>
+#include <opr/queue.h>
+
 #include "bnode.h"
 #include "bnode_internal.h"
 #include "bosprototypes.h"
index 2708118..c8ec532 100644 (file)
@@ -17,6 +17,7 @@
 #include <lwp.h>
 #include <rx/rx.h>
 #include <afs/afsutil.h>
+#include <opr/queue.h>
 
 #include "bnode.h"
 #include "bnode_internal.h"