added documentation for thread_foreach functions
authorGodmar Back <godmar@gmail.com>
Fri, 17 Oct 2008 03:26:23 +0000 (03:26 +0000)
committerGodmar Back <godmar@gmail.com>
Fri, 17 Oct 2008 03:26:23 +0000 (03:26 +0000)
doc/debug.texi
doc/reference.texi

index aa833acbc07111d24c6126052f023958dd206d36..402ede606345d07785666614a18748f6c3c114eb 100644 (file)
@@ -99,6 +99,8 @@ of how your program got where it is, as a list of addresses inside the
 functions that were running at the time of the panic.  You can also
 insert a call to @func{debug_backtrace}, prototyped in
 @file{<debug.h>}, to print a backtrace at any point in your code.
+@func{debug_backtrace_all}, also declared in @file{<debug.h>}, 
+prints backtraces of all threads.
 
 The addresses in a backtrace are listed as raw hexadecimal numbers,
 which are difficult to interpret.  We provide a tool called
index bcdcd63324bca3b01efc4c32ba796de1bb9c1d0b..924fd7815bdcc8fa4fe9bcf25e2fa36f5e2fa511 100644 (file)
@@ -325,6 +325,13 @@ Pintos as provided ignores thread priorities, but you will implement
 priority scheduling in project 1 (@pxref{Priority Scheduling}).
 @end deftypecv
 
+@deftypecv {Member} {@struct{thread}} {@struct{list_elem}} allelem
+This ``list element'' is used to link the thread into the list of all
+threads.  Each thread is inserted into this list when it is created
+and removed when it exits.  The @func{thread_foreach} function should 
+be used to iterate over all threads.
+@end deftypecv
+
 @deftypecv {Member} {@struct{thread}} {@struct{list_elem}} elem
 A ``list element'' used to put the thread into doubly linked lists,
 either @code{ready_list} (the list of threads ready to run) or a list of
@@ -446,6 +453,16 @@ function to keep this thread from running for any particular length of
 time.
 @end deftypefun
 
+@deftypefun void thread_foreach (thread_action_func *@var{action}, void *@var{aux})
+Iterates over all threads @var{t} and invokes @code{action(t, aux)} on each.
+@var{action} must refer to a function that matches the signature 
+given by @func{thread_action_func}:
+
+@deftp {Type} {void thread_action_func (struct thread *@var{thread}, void *@var{aux})}
+Performs some action on a thread, given @var{aux}.
+@end deftp
+@end deftypefun
+
 @deftypefun int thread_get_priority (void)
 @deftypefunx void thread_set_priority (int @var{new_priority})
 Stub to set and get thread priority.  @xref{Priority Scheduling}.