[PATCH] formal/dyntickrcu: Mitigate ugliness of tall inline snippets

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



>From 8f49523f66fb2281b4337ce57f6502400f0dcb9c Mon Sep 17 00:00:00 2001
From: Akira Yokosawa <akiyks@xxxxxxxxx>
Date: Sat, 6 Apr 2019 08:53:12 +0900
Subject: [PATCH] formal/dyntickrcu: Mitigate ugliness of tall inline snippets

In two-column layout, frames around snippets by \VerbatimN cause
column breaks of snippets look somewhat ugly.

As a mitigation, disable frame of \VerbatimN in this particular
section. Also use \VerbatimU for patch snippets to prevent
them from breaking other inline snippets in one-column layout.

Signed-off-by: Akira Yokosawa <akiyks@xxxxxxxxx>
---
Hi Paul,

I know this is not ideal for you, but in one-column layout, the
column breaks of long snippets does not disturb me so much.

So this patch disables frame around \VerbatimN for two-column layout
to restore the looks in the old scheme.

Isn't this approach acceptable to you, at least as a workaround?

        Thanks, Akira
--
 formal/dyntickrcu.tex | 67 ++++++++++++++++++++++++-------------------
 1 file changed, 38 insertions(+), 29 deletions(-)

diff --git a/formal/dyntickrcu.tex b/formal/dyntickrcu.tex
index c73cdd2f..94093ee9 100644
--- a/formal/dyntickrcu.tex
+++ b/formal/dyntickrcu.tex
@@ -1,5 +1,14 @@
 % formal/dyntickrcu.tex
 
+% Disable frame around VerbatimN in two-column layout
+\IfTwoColumn{
+\RecustomVerbatimEnvironment{VerbatimN}{Verbatim}%
+{numbers=left,numbersep=5pt,xleftmargin=10pt,xrightmargin=0pt,frame=none}
+\AtBeginEnvironment{VerbatimN}{%
+\renewcommand{\lnlbl}[1]{\raisebox{0pt}{\phantomsection\label{\lnlblbase:#1}}}%
+}
+}{}
+
 \subsection{Promela Parable: dynticks and Preemptible RCU}
 \label{sec:formal:Promela Parable: dynticks and Preemptible RCU}
 
@@ -1114,10 +1123,19 @@ states, passing without errors.
 
 \subsubsection{Lessons (Re)Learned}
 \label{sec:formal:Lessons (Re)Learned}
-\NoIndentAfterThis
 
-\begin{listing}[tbp]
-\begin{VerbatimL}[numbers=none]
+This effort provided some lessons (re)learned:
+
+\begin{enumerate}
+\item	{\bf Promela and Spin can verify interrupt\slash NMI\-/handler
+	interactions.}
+\item	{\bf Documenting code can help locate bugs.}
+	In this case, the documentation effort located
+	a misplaced memory barrier in
+	\co{rcu_enter_nohz()} and \co{rcu_exit_nohz()},
+	as shown by the following patch.
+
+\begin{VerbatimU}
  static inline void rcu_enter_nohz(void)
  {
 +       mb();
@@ -1131,38 +1149,20 @@ states, passing without errors.
         __get_cpu_var(dynticks_progress_counter)++;
 +       mb();
  }
-\end{VerbatimL}
-\caption{Memory-Barrier Fix Patch}
-\label{lst:formal:Memory-Barrier Fix Patch}
-\end{listing}
-
-\begin{listing}[tbp]
-\begin{VerbatimL}[numbers=none]
--       if ((curr - snap) > 2 || (snap & 0x1) == 0)
-+       if ((curr - snap) > 2 || (curr & 0x1) == 0)
-\end{VerbatimL}
-\caption{Variable-Name-Typo Fix Patch}
-\label{lst:formal:Variable-Name-Typo Fix Patch}
-\end{listing}
-
-This effort provided some lessons (re)learned:
+\end{VerbatimU}
 
-\begin{enumerate}
-\item	{\bf Promela and Spin can verify interrupt\slash NMI\-/handler
-	interactions.}
-\item	{\bf Documenting code can help locate bugs.}
-	In this case, the documentation effort located
-	a misplaced memory barrier in
-	\co{rcu_enter_nohz()} and \co{rcu_exit_nohz()},
-	as shown by the patch in
-	Listing~\ref{lst:formal:Memory-Barrier Fix Patch}.
 \item	{\bf Validate your code early, often, and up to the point
 	of destruction.}
 	This effort located one subtle bug in
 	\co{rcu_try_flip_waitack_needed()}
 	that would have been quite difficult to test or debug, as
-	shown by the patch in
-	Listing~\ref{lst:formal:Variable-Name-Typo Fix Patch}.
+	shown by the following patch.
+
+\begin{VerbatimU}
+-       if ((curr - snap) > 2 || (snap & 0x1) == 0)
++       if ((curr - snap) > 2 || (curr & 0x1) == 0)
+\end{VerbatimU}
+
 \item	{\bf Always verify your verification code.}
 	The usual way to do this is to insert a deliberate bug
 	and verify that the verification code catches it.  Of course,
@@ -1621,3 +1621,12 @@ where an NMI might change shared state at any point during execution of
 the \IRQ\ functions.
 
 Verification can be a good thing, but simplicity is even better.
+
+% Restore frame around VerbatimN in two-column layout
+\IfTwoColumn{
+\RecustomVerbatimEnvironment{VerbatimN}{Verbatim}%
+{numbers=left,numbersep=3pt,xleftmargin=5pt,xrightmargin=5pt,frame=single}
+\AtBeginEnvironment{VerbatimN}{%
+\renewcommand{\lnlbl}[1]{\raisebox{9pt}{\phantomsection\label{\lnlblbase:#1}}}%
+}
+}{}
-- 
2.17.1




[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Linux NFS]     [Linux NILFS]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux