<?xml version="1.0" encoding="UTF-8"?>

<rdf:RDF 
  xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
  xmlns="http://purl.org/rss/1.0/"
  xmlns:dc="http://purl.org/dc/elements/1.1/"
  xmlns:syn="http://purl.org/rss/1.0/modules/syndication/"
>

  <channel rdf:about="http://lwn.net/headlines/264090/">
    <title>LWN: Comments on "RCU part 3: the RCU API"</title>
    <link>http://lwn.net/Articles/264090/</link>
    <description>
This is a special feed containing comments posted
to the individual LWN article titled &quot;RCU part 3: the RCU API&quot;.

    </description>

    <syn:updatePeriod>hourly</syn:updatePeriod>
    <syn:updateFrequency>2</syn:updateFrequency>
    <items>
      <rdf:Seq>
	<rdf:li resource="http://lwn.net/Articles/267279/rss" />
	<rdf:li resource="http://lwn.net/Articles/267240/rss" />
	<rdf:li resource="http://lwn.net/Articles/267237/rss" />
	<rdf:li resource="http://lwn.net/Articles/266388/rss" />
      
      </rdf:Seq>
    </items>

  </channel>
    <item rdf:about="http://lwn.net/Articles/267279/rss">
      <title>RCU part 3: the RCU API</title>
      <link>http://lwn.net/Articles/267279/rss</link>
      <dc:date>2008-01-31T11:18:49+00:00</dc:date>
      <dc:creator>PaulMcKenney</dc:creator>
      <description>
      &lt;div class=&quot;FormattedComment&quot;&gt;&lt;pre&gt;
Thank you very much!!!
&lt;/pre&gt;&lt;/div&gt;

      
      </description>
    </item>
    <item rdf:about="http://lwn.net/Articles/267240/rss">
      <title>RCU part 3: the RCU API</title>
      <link>http://lwn.net/Articles/267240/rss</link>
      <dc:date>2008-01-31T02:34:59+00:00</dc:date>
      <dc:creator>ris</dc:creator>
      <description>
      &lt;div class=&quot;FormattedComment&quot;&gt;&lt;pre&gt;
&lt;font class=&quot;QuotedText&quot;&gt;&amp;gt; Good catch! s/an the/the/&lt;/font&gt;

Fixed!
&lt;/pre&gt;&lt;/div&gt;

      
      </description>
    </item>
    <item rdf:about="http://lwn.net/Articles/267237/rss">
      <title>RCU part 3: the RCU API</title>
      <link>http://lwn.net/Articles/267237/rss</link>
      <dc:date>2008-01-31T02:04:44+00:00</dc:date>
      <dc:creator>PaulMcKenney</dc:creator>
      <description>
      Good questions!  Point-by-point answers:
&lt;OL&gt;
&lt;LI&gt; Your example might or might not be legal, depending on what
	primitive you used to wait for a grace period.	If you are using
	&lt;code&gt;call_rcu()&lt;/code&gt; or &lt;code&gt;synchronize_rcu()&lt;/code&gt;,
	your example is technically illegal for Classic RCU
	and prone to failure for realtime RCU.	If you are
	using &lt;code&gt;synchronize_srcu()&lt;/code&gt;, your example
	is technically illegal, but will work given the current
	implementation.  If you are using &lt;code&gt;call_rcu_bh()&lt;/code&gt;
	or &lt;code&gt;synchronize_qrcu()&lt;/code&gt;, your example is
	illegal and prone to failure.  Finally, if you are using
	&lt;code&gt;synchronize_sched()&lt;/code&gt;, your example is entirely
	legal, because &lt;code&gt;preempt_disable()&lt;/code&gt; introduces an RCU
	read-side critical section.  You could create a similar list for
	your &lt;code&gt;_ bh&lt;/code&gt; example.  But please note that if I see
	anyone submitting a patch in the &quot;technically illegal but works&quot;
	category, I will NACK it.
&lt;LI&gt; One could indeed have listed more things in that cell: no _bh
	enabling, no blocking, and, as you say, no softirq enabling.
	The reason that there is not yet an rcu_bh_barrier() is that
	there has not been a clear need for it yet -- which might change
	if someone needs call_rcu_bh() in a module.
&lt;LI&gt; Good catch!  s/an the/the/
&lt;/OL&gt;

      
      </description>
    </item>
    <item rdf:about="http://lwn.net/Articles/266388/rss">
      <title>RCU part 3: the RCU API</title>
      <link>http://lwn.net/Articles/266388/rss</link>
      <dc:date>2008-01-24T09:46:39+00:00</dc:date>
      <dc:creator>jarkao2</dc:creator>
      <description>
      &lt;div class=&quot;FormattedComment&quot;&gt;&lt;pre&gt;
Hi, here are my doubts and suggestions of tiny fixes:

1. Probably in part 1 there was mention of using RCU pointers after their read-side block
being illegal; maybe it was explained later, but I would like to be sure about such cases:

  RCU Classic
================
preempt_disable()
or spin_lock()
    ...
rcu_read_lock()
    ...
p = rcu_dereference()
    ...
rcu_read_unlock()
    ...
rcu_read_lock()
    ...
r = p-&amp;gt;something
    ...
rcu_read_unlock()
    ...
preempt_enable()
or spin_unlock()

(this code could be divided between 2 functions, BTW)

or similarly with RCU BH, but with local_bh_disable/enable() instead of
preempt_disable/enable() and with rcu_read_lock/unlock_bh()

So, is it 'legal' if we don't care about RT problems with this?

2. In the first table here for RCU BH shouldn't this be &quot;No soft irq enabling&quot;? (And why
rcu_barrier() missing?)

3. And traditionally 'an' fix proposal: (under second table) &quot;but incur an the overhead&quot;.
(Quick Quiz 10?)

Many thanks again!
&lt;/pre&gt;&lt;/div&gt;

      
      </description>
    </item>
</rdf:RDF>

