diff --git a/lib/ChangeLog b/lib/ChangeLog
index 4293457..e544d04 100644
--- a/lib/ChangeLog
+++ b/lib/ChangeLog
@@ -1,5 +1,17 @@
 2005-11-14 Paul Jakma <paul.jakma@sun.com>
 
+	* (general) pass struct work-queue to callback functions.
+	* workqueue.h: (struct work_queue) move the state flag
+	  variables to end.
+	  Add an opaque pointer to spec, for user-data global to the
+	  queue.
+	  Pass reference to work_queue to all callbacks.
+	* workqueue.c: (work_queue_item_remove) pass ref to workqueue
+	  to user callbacks.
+	  (work_queue_run) ditto.
+
+2005-11-14 Paul Jakma <paul.jakma@sun.com>
+
 	* (general) Add state to detect queue floods.  There's no sense
 	  trying to be sparing of CPU resources, if the queue is
 	  flooding and using ever more memory resources. we should just
diff --git a/lib/workqueue.c b/lib/workqueue.c
index c2ff10d..0c61f5c 100644
--- a/lib/workqueue.c
+++ b/lib/workqueue.c
@@ -147,7 +147,7 @@
 
   /* call private data deletion callback if needed */  
   if (wq->spec.del_item_data)
-    wq->spec.del_item_data (item->data);
+    wq->spec.del_item_data (wq, item->data);
 
   list_delete_node (wq->items, ln);
   work_queue_item_free (item);
@@ -284,7 +284,7 @@
     /* run and take care of items that want to be retried immediately */
     do
       {
-        ret = wq->spec.workfunc (item->data);
+        ret = wq->spec.workfunc (wq, item->data);
         item->ran++;
       }
     while ((ret == WQ_RETRY_NOW) 
diff --git a/lib/workqueue.h b/lib/workqueue.h
index 15c72f6..0a398de 100644
--- a/lib/workqueue.h
+++ b/lib/workqueue.h
@@ -57,26 +57,31 @@
 
 struct work_queue
 {
-  /* Everything but the specification struct is private */
+  /* Everything but the specification struct is private
+   * the following may be read
+   */
   struct thread_master *master;       /* thread master */
   struct thread *thread;              /* thread, if one is active */
   char *name;                         /* work queue name */
-  char status;                        /* status */
-#define WQ_STATE_FLOODED	(1 << 0)
-  enum work_queue_flags flags;		/* flags */
   
   /* Specification for this work queue.
    * Public, must be set before use by caller. May be modified at will.
    */
   struct {
-    /* work function to process items with */
-    wq_item_status (*workfunc) (void *);
+    /* optional opaque user data, global to the queue. */
+    void *data;
+    
+    /* work function to process items with:
+     * First argument is the workqueue queue.
+     * Second argument is the item data
+     */
+    wq_item_status (*workfunc) (struct work_queue *, void *);
 
     /* error handling function, optional */
     void (*errorfunc) (struct work_queue *, struct work_queue_item *);
     
     /* callback to delete user specific item data */
-    void (*del_item_data) (void *);
+    void (*del_item_data) (struct work_queue *, void *);
     
     /* completion callback, called when queue is emptied, optional */
     void (*completion_func) (struct work_queue *);
@@ -110,6 +115,12 @@
     unsigned int granularity;
     unsigned long total;
   } cycles;	/* cycle counts */
+  
+  /* private state */
+  enum work_queue_flags flags;		/* user set flag */
+  char status;                          /* internal status */
+#define WQ_STATE_FLOODED	(1 << 0)
+  
 };
 
 /* User API */
