Index: /trunk/Ohana/src/opihi/pcontrol/HostOps.c
===================================================================
--- /trunk/Ohana/src/opihi/pcontrol/HostOps.c	(revision 16456)
+++ /trunk/Ohana/src/opihi/pcontrol/HostOps.c	(revision 16457)
@@ -13,4 +13,20 @@
   HostPool_Down = InitStack ();
   HostPool_Off  = InitStack ();
+}
+
+void FreeHostStack (Stack *stack) {
+  Host *host;
+  while ((host = PullStackByLocation (stack, stack[0].Nobject - 1)) != NULL) {
+    DelHost (host);
+  }
+  FreeStack (stack);
+}
+
+void FreeHostStacks () {
+  FreeHostStack (HostPool_Idle);
+  FreeHostStack (HostPool_Busy);
+  FreeHostStack (HostPool_Done);
+  FreeHostStack (HostPool_Down);
+  FreeHostStack (HostPool_Off );
 }
 
Index: /trunk/Ohana/src/opihi/pcontrol/JobOps.c
===================================================================
--- /trunk/Ohana/src/opihi/pcontrol/JobOps.c	(revision 16456)
+++ /trunk/Ohana/src/opihi/pcontrol/JobOps.c	(revision 16457)
@@ -15,4 +15,21 @@
   JobPool_Exit    = InitStack ();
   JobPool_Crash   = InitStack ();
+}
+
+void FreeJobStack (Stack *stack) {
+  Job *job;
+  while ((job = PullStackByLocation (stack, stack[0].Nobject - 1)) != NULL) {
+    DelJob (job);
+  }
+  FreeStack (stack);
+}
+
+void FreeJobStacks () {
+  FreeJobStack (JobPool_Pending);
+  FreeJobStack (JobPool_Busy   );
+  FreeJobStack (JobPool_Done   );
+  FreeJobStack (JobPool_Kill   );
+  FreeJobStack (JobPool_Exit   );
+  FreeJobStack (JobPool_Crash  );
 }
 
