Christoph Lameter <[EMAIL PROTECTED]> wrote: > > This patch extracts all the operations on counters protected by the > page table lock (currently rss and anon_rss) into definitions in > include/linux/sched.h. All rss operations are performed through > the following macros: > > get_mm_counter(mm, member) -> Obtain the value of a counter > set_mm_counter(mm, member, value) -> Set the value of a counter > update_mm_counter(mm, member, value) -> Add to a counter > inc_mm_counter(mm, member) -> Increment a counter > dec_mm_counter(mm, member) -> Decrement a counter
I spose it makes sense, if we'll be making scalability changes in there. > > +#define set_mm_counter(mm, member, value) (mm)->member = (value) > +#define get_mm_counter(mm, member) ((mm)->member) > +#define update_mm_counter(mm, member, value) (mm)->member += (value) > +#define inc_mm_counter(mm, member) (mm)->member++ > +#define dec_mm_counter(mm, member) (mm)->member-- > +#define MM_COUNTER_T unsigned long Would prefer `mm_counter_t' here. Why not a typedef? > @@ -231,9 +237,13 @@ struct mm_struct { > unsigned long start_code, end_code, start_data, end_data; > unsigned long start_brk, brk, start_stack; > unsigned long arg_start, arg_end, env_start, env_end; > - unsigned long rss, anon_rss, total_vm, locked_vm, shared_vm; > + unsigned long total_vm, locked_vm, shared_vm; > unsigned long exec_vm, stack_vm, reserved_vm, def_flags, nr_ptes; > > + /* Special counters protected by the page_table_lock */ > + MM_COUNTER_T rss; > + MM_COUNTER_T anon_rss; > + Why were only two counters converted? Could I suggest that you rename all these counters, so that code which fails to use the macros won't compile? That renaming can be hidden in the header file: add an underscore to the front of all the identifiers, paste that underscore back within the macros. - 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/