diff --git a/ChangeLog b/ChangeLog
index 48b7ede..c08f83d 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,10 @@
 2012-09-25  Petr Machata  <pmachata@redhat.com>
 
+	* callback.h: New file.
+	* proc.h (enum callback_status): Move to callback.h.
+
+2012-09-25  Petr Machata  <pmachata@redhat.com>
+
 	* sysdeps/linux-gnu/x86/arch.h (FORK_EXEC_SYSCALLS): Remove.
 
 2012-09-22  Petr Machata  <pmachata@redhat.com>
diff --git a/Makefile.am b/Makefile.am
index 177a498..47161f8 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -85,6 +85,7 @@
 	type.h \
 	value.h \
 	value_dict.h \
+	callback.h \
 	expr.h \
 	fetch.h \
 	vect.h \
diff --git a/callback.h b/callback.h
new file mode 100644
index 0000000..31e5c8f
--- /dev/null
+++ b/callback.h
@@ -0,0 +1,50 @@
+/*
+ * This file is part of ltrace.
+ * Copyright (C) 2011,2012 Petr Machata, Red Hat Inc.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation; either version 2 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA
+ */
+
+#ifndef _CALLBACK_H_
+#define _CALLBACK_H_
+
+/* Notes on the iteration interface used across ltrace.  Typically the
+ * iteration function looks something like this:
+ *
+ *   foo *each_foo(foo *start_after,
+ *                 enum callback_status (*cb)(foo *f, void *data),
+ *                 void *data);
+ *
+ * The iteration starts after the element designated by START_AFTER,
+ * or at the first element if START_AFTER is NULL.  CB is then called
+ * for each element of the collection.  DATA is passed verbatim to CB.
+ * If CB returns CBS_STOP, the iteration stops and the current element
+ * is returned.  That element can then be passed as START_AFTER to
+ * restart the iteration.  NULL is returned when iteration ends.
+ *
+ * CBS_FAIL is not currently handled, and essentially means the same
+ * thing as CBS_STOP.  There's no provision for returning error
+ * states.  Errors need to be signaled to the caller via DATA,
+ * together with any other data that the callback needs.
+ */
+enum callback_status {
+	CBS_STOP, /* The iteration should stop.  */
+	CBS_CONT, /* The iteration should continue.  */
+	CBS_FAIL, /* There was an error.  The iteration should stop
+		   * and return error.  */
+};
+
+#endif /* _CALLBACK_H_ */
diff --git a/filter.c b/filter.c
index 003010d..bf77b76 100644
--- a/filter.c
+++ b/filter.c
@@ -25,6 +25,7 @@
 
 #include "filter.h"
 #include "library.h"
+#include "callback.h"
 
 void
 filter_init(struct filter *filt)
diff --git a/library.c b/library.c
index 2ce3427..cbd4a35 100644
--- a/library.c
+++ b/library.c
@@ -25,8 +25,9 @@
 #include <assert.h>
 
 #include "library.h"
-#include "proc.h" // for enum callback_status
+#include "callback.h"
 #include "debug.h"
+#include "dict.h"
 #include "backend.h" // for arch_library_symbol_init, arch_library_init
 
 #ifndef ARCH_HAVE_LIBRARY_DATA
diff --git a/library.h b/library.h
index 876a533..f207502 100644
--- a/library.h
+++ b/library.h
@@ -23,6 +23,7 @@
 #define _LIBRARY_H_
 
 #include <stdint.h>
+#include "callback.h"
 #include "sysdep.h"
 
 struct Process;
@@ -144,9 +145,8 @@
 void library_set_pathname(struct library *lib,
 			  const char *new_name, int own_name);
 
-/* Iterate through list of symbols of library LIB.  Restarts are
- * supported via START_AFTER (see each_process for details of
- * iteration interface).  */
+/* Iterate through list of symbols of library LIB.  See callback.h for
+ * notes on this interface.  */
 struct library_symbol *library_each_symbol
 	(struct library *lib, struct library_symbol *start_after,
 	 enum callback_status (*cb)(struct library_symbol *, void *),
diff --git a/proc.h b/proc.h
index 64c37a9..b61e420 100644
--- a/proc.h
+++ b/proc.h
@@ -34,20 +34,11 @@
 #include "ltrace.h"
 #include "dict.h"
 #include "sysdep.h"
+#include "callback.h"
 
 struct library;
 struct breakpoint;
 
-/* XXX Move this somewhere where it makes sense.  When the mess in
- * common.h is disentangled, that would actually be a good place for
- * this.  */
-enum callback_status {
-	CBS_STOP, /* The iteration should stop.  */
-	CBS_CONT, /* The iteration should continue.  */
-	CBS_FAIL, /* There was an error.  The iteration should stop
-		   * and return error.  */
-};
-
 struct event_handler {
 	/* Event handler that overrides the default one.  Should
 	 * return NULL if the event was handled, otherwise the
@@ -184,28 +175,16 @@
  * Returns 0 on success or a negative value on failure.  */
 int process_clone(struct Process *retp, struct Process *proc, pid_t pid);
 
-/* Iterate through the processes that ltrace currently traces.  CB is
- * called for each process.  Tasks are considered to be processes for
- * the purpose of this iterator.
- *
- * Notes on this iteration interface: The iteration starts after the
- * process designated by START_AFTER, or at the first process if
- * START_AFTER is NULL.  DATA is passed verbatim to CB.  If CB returns
- * CBS_STOP, the iteration stops and the current iterator is returned.
- * That iterator can then be used to restart the iteration.  NULL is
- * returned when iteration ends.
- *
- * There's no provision for returning error states.  Errors need to be
- * signaled to the caller via DATA, together with any other data that
- * the callback needs.  */
+/* Iterate through the processes that ltrace currently traces.  Tasks
+ * are considered to be processes for the purpose of this iterator.
+ * See callback.h for notes on iteration interfaces.  */
 Process *each_process(Process *start_after,
 		      enum callback_status (*cb)(struct Process *proc,
 						 void *data),
 		      void *data);
 
-/* Iterate through list of tasks of given process PROC.  Restarts are
- * supported via START_AFTER (see each_process for details of
- * iteration interface).  */
+/* Iterate through list of tasks of given process PROC.  See
+ * callback.h for notes on iteration interfaces.  */
 Process *each_task(struct Process *proc, struct Process *start_after,
 		   enum callback_status (*cb)(struct Process *proc,
 					      void *data),
@@ -227,8 +206,8 @@
  * was found and unlinked, otherwise returns a negative value.  */
 int proc_remove_library(struct Process *proc, struct library *lib);
 
-/* Iterate through the libraries of PROC.  See each_process for
- * detailed description of the iteration interface.  */
+/* Iterate through the libraries of PROC.  See callback.h for notes on
+ * iteration interfaces.  */
 struct library *proc_each_library(struct Process *proc, struct library *start,
 				  enum callback_status (*cb)(struct Process *p,
 							     struct library *l,
@@ -242,8 +221,8 @@
  * does not find BP in PROC, it's hard error guarded by assertion.  */
 void proc_remove_breakpoint(struct Process *proc, struct breakpoint *bp);
 
-/* Iterate through the libraries of PROC.  See each_process for
- * detailed description of the iteration interface.  */
+/* Iterate through the breakpoints of PROC.  See callback.h for notes
+ * on iteration interfaces.  */
 void *proc_each_breakpoint(struct Process *proc, void *start,
 			   enum callback_status (*cb)(struct Process *proc,
 						      struct breakpoint *bp,
