doc: Take tail recursion into account in RCU requirements
authorPaul E. McKenney <paulmck@linux.vnet.ibm.com>
Thu, 27 Apr 2017 20:25:41 +0000 (13:25 -0700)
committerPaul E. McKenney <paulmck@linux.vnet.ibm.com>
Thu, 8 Jun 2017 15:25:34 +0000 (08:25 -0700)
This commit classifies tail recursion as an alternative way to write
a loop, with similar limitations.

Signed-off-by: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
Documentation/RCU/Design/Requirements/Requirements.html

index 8bbf0bb1838956372d50a6c5d68466cbfa78b1ad..cb614f2a69c2c063966487923fb131f27134c2d8 100644 (file)
@@ -1849,7 +1849,8 @@ mass storage, or user patience, whichever comes first.
 If the nesting is not visible to the compiler, as is the case with
 mutually recursive functions each in its own translation unit,
 stack overflow will result.
-If the nesting takes the form of loops, either the control variable
+If the nesting takes the form of loops, perhaps in the guise of tail
+recursion, either the control variable
 will overflow or (in the Linux kernel) you will get an RCU CPU stall warning.
 Nevertheless, this class of RCU implementations is one
 of the most composable constructs in existence.