Re: [RFC 1/6] Framework

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

 



On Sat, 10 Dec 2005, Andi Kleen wrote:

> > +#define global_page_state(__x) atomic_long_read(&vm_stat[__x])
> > +#define zone_page_state(__z,__x) atomic_long_read(&(__z)->vm_stat[__x])
> > +extern unsigned long node_page_state(int node, enum zone_stat_item);
> > +
> > +/*
> > + * For use when we know that interrupts are disabled.
> 
> Why do you need to disable interupts for atomic_t ? 

Interrupts need to be disabled because the processing of the byte sized 
differential could be interrupted.

> If you just want to prevent switching CPUs that could be 
> done with get_cpu(), but alternatively you could just ignore
> that race (it wouldn't be a big issue to still increment
> the counter on the old CPU)

There is no increment or decrement right now. We add an offset and that 
offset could easily burst the limits of a byte sized differential. A check 
needs to happen before the differential is updated.

> And why atomic and not just local_t?  On x86/x86-64 local_t
> would be much cheaper at least. It's not long, but that could
> be as well added.

local_t is long on ia64. 

The atomics are used for global updates of counters in struct zone and the 
vm_stats array. local_t wont help there.

local_t could be used for the differentials. Special functions for 
increment and decrement could use the non-interruptible nature of inc/decs 
on i386 and x86_64.

There is no byte sized local_t though so its difficult to use local_t 
here. I think this whole local_t stuff is not too useful after all. 
Could we add an incp/decp macro that is like cmpxchg? That macro should 
be able to operation on various sizes of counters.
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

[Index of Archives]     [Kernel Newbies]     [Netfilter]     [Bugtraq]     [Photo]     [Stuff]     [Gimp]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Video 4 Linux]     [Linux for the blind]     [Linux Resources]
  Powered by Linux