public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
From: Robert Love <rml@tech9.net>
To: Peter Benie <Peter.Benie@mvhi.com>
Cc: linux-kernel@vger.kernel.org
Subject: Re: Does cli() need to be called before reading avenrun?
Date: 01 Jan 2003 19:53:20 -0500	[thread overview]
Message-ID: <1041468799.1126.8.camel@icbm> (raw)
In-Reply-To: <15891.35418.412034.594225@server.axiom.internal>

On Wed, 2003-01-01 at 19:39, Peter Benie wrote:
> In kernel 2.4, in sys_sysinfo(), the code reads:
> 
>    cli();
>    val.uptime = jiffies / HZ;
> 
>    val.loads[0] = avenrun[0] << (SI_LOAD_SHIFT - FSHIFT);
>    val.loads[1] = avenrun[1] << (SI_LOAD_SHIFT - FSHIFT);
>    val.loads[2] = avenrun[2] << (SI_LOAD_SHIFT - FSHIFT);
> 
>    val.procs = nr_threads-1;
>    sti();
> 
> In loadavg_read_proc, the code is in essence the same, except that it
> isn't wrapped in cli/sti.  
> 
> Is there a reason for the cli?

Interrupts off protects the reading of avenrun[] - it is only written to
from the timer interrupt, so you can safely read it when interrupts are
disabled.

The reason we need some sort of protection is that there are the three
array entries, so we need to make sure we read all three atomically (not
that its a huge deal if we do not).

So I guess the proc code needs to disable interrupts, too.  I am on my
laptop and only have a 2.5 tree - sure it is not disabled somewhere in
there?

Note in 2.5 we replaced the cli() with a read_lock() on xtime_lock.

	Robert Love


  reply	other threads:[~2003-01-02  0:42 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2003-01-02  0:39 Does cli() need to be called before reading avenrun? Peter Benie
2003-01-02  0:53 ` Robert Love [this message]
2003-01-02 10:38   ` Peter Benie

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1041468799.1126.8.camel@icbm \
    --to=rml@tech9.net \
    --cc=Peter.Benie@mvhi.com \
    --cc=linux-kernel@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox