On Fri, Feb 29, 2008 at 1:34 AM, Peter Teoh <[EMAIL PROTECTED]> wrote:
> Sorry this part really puzzled me....
>
>  On Sat, Feb 9, 2008 at 8:10 AM, Rene Herman <[EMAIL PROTECTED]> wrote:
>  >  In the CPU's ALU. inode->i_size is a 64_bit integer, and access to it is
>  >  atomic on 64-bit. On a 32-bit arch though, a 64-bit load will be split in
>  >  two 32-bit ones where you can get an incoherent value if you're 
> interrupted
>  >  between getting the low and the high 32-bit.
>  >
>  >  Rene.
>  >
>  I understood what u are saying, as i_size is loff_t, and loff_t is
>  defined as "long long".   But the fact is this, of the thousands of
>  assembly instructions in the kernel, in between any two, it can always
>  be interrupted, so long as u ensure that the interrupt handler ensure
>  that all the registers that it modified has been restored back to its
>  original value upon returning.   So I don't quite understand why it
>  cannot be interrupted between the upper and lower half of the 32bit
>  processing.

Interrupts are used for many things. What if a timer interrupt occurs
and it changes the current task? Then a different task can change the
variable before control is resumed in the original task. I hope this
explains your question.

Vegard

--
To unsubscribe from this list: send an email with
"unsubscribe kernelnewbies" to [EMAIL PROTECTED]
Please read the FAQ at http://kernelnewbies.org/FAQ

Reply via email to