···9898#define __local_add(i,l) ((l)->a.counter+=(i))9999#define __local_sub(i,l) ((l)->a.counter-=(i))100100101101-/* Use these for per-cpu local_t variables: on some archs they are102102- * much more efficient than these naive implementations. Note they take103103- * a variable, not an address.104104- */105105-#define cpu_local_read(l) local_read(&__get_cpu_var(l))106106-#define cpu_local_set(l, i) local_set(&__get_cpu_var(l), (i))107107-108108-#define cpu_local_inc(l) local_inc(&__get_cpu_var(l))109109-#define cpu_local_dec(l) local_dec(&__get_cpu_var(l))110110-#define cpu_local_add(i, l) local_add((i), &__get_cpu_var(l))111111-#define cpu_local_sub(i, l) local_sub((i), &__get_cpu_var(l))112112-113113-#define __cpu_local_inc(l) __local_inc(&__get_cpu_var(l))114114-#define __cpu_local_dec(l) __local_dec(&__get_cpu_var(l))115115-#define __cpu_local_add(i, l) __local_add((i), &__get_cpu_var(l))116116-#define __cpu_local_sub(i, l) __local_sub((i), &__get_cpu_var(l))117117-118101#endif /* _ALPHA_LOCAL_H */
-25
arch/m32r/include/asm/local.h
···338338 * a variable, not an address.339339 */340340341341-/* Need to disable preemption for the cpu local counters otherwise we could342342- still access a variable of a previous CPU in a non local way. */343343-#define cpu_local_wrap_v(l) \344344- ({ local_t res__; \345345- preempt_disable(); \346346- res__ = (l); \347347- preempt_enable(); \348348- res__; })349349-#define cpu_local_wrap(l) \350350- ({ preempt_disable(); \351351- l; \352352- preempt_enable(); }) \353353-354354-#define cpu_local_read(l) cpu_local_wrap_v(local_read(&__get_cpu_var(l)))355355-#define cpu_local_set(l, i) cpu_local_wrap(local_set(&__get_cpu_var(l), (i)))356356-#define cpu_local_inc(l) cpu_local_wrap(local_inc(&__get_cpu_var(l)))357357-#define cpu_local_dec(l) cpu_local_wrap(local_dec(&__get_cpu_var(l)))358358-#define cpu_local_add(i, l) cpu_local_wrap(local_add((i), &__get_cpu_var(l)))359359-#define cpu_local_sub(i, l) cpu_local_wrap(local_sub((i), &__get_cpu_var(l)))360360-361361-#define __cpu_local_inc(l) cpu_local_inc(l)362362-#define __cpu_local_dec(l) cpu_local_dec(l)363363-#define __cpu_local_add(i, l) cpu_local_add((i), (l))364364-#define __cpu_local_sub(i, l) cpu_local_sub((i), (l))365365-366341#endif /* __M32R_LOCAL_H */
-25
arch/mips/include/asm/local.h
···193193#define __local_add(i, l) ((l)->a.counter+=(i))194194#define __local_sub(i, l) ((l)->a.counter-=(i))195195196196-/* Need to disable preemption for the cpu local counters otherwise we could197197- still access a variable of a previous CPU in a non atomic way. */198198-#define cpu_local_wrap_v(l) \199199- ({ local_t res__; \200200- preempt_disable(); \201201- res__ = (l); \202202- preempt_enable(); \203203- res__; })204204-#define cpu_local_wrap(l) \205205- ({ preempt_disable(); \206206- l; \207207- preempt_enable(); }) \208208-209209-#define cpu_local_read(l) cpu_local_wrap_v(local_read(&__get_cpu_var(l)))210210-#define cpu_local_set(l, i) cpu_local_wrap(local_set(&__get_cpu_var(l), (i)))211211-#define cpu_local_inc(l) cpu_local_wrap(local_inc(&__get_cpu_var(l)))212212-#define cpu_local_dec(l) cpu_local_wrap(local_dec(&__get_cpu_var(l)))213213-#define cpu_local_add(i, l) cpu_local_wrap(local_add((i), &__get_cpu_var(l)))214214-#define cpu_local_sub(i, l) cpu_local_wrap(local_sub((i), &__get_cpu_var(l)))215215-216216-#define __cpu_local_inc(l) cpu_local_inc(l)217217-#define __cpu_local_dec(l) cpu_local_dec(l)218218-#define __cpu_local_add(i, l) cpu_local_add((i), (l))219219-#define __cpu_local_sub(i, l) cpu_local_sub((i), (l))220220-221196#endif /* _ARCH_MIPS_LOCAL_H */
-25
arch/powerpc/include/asm/local.h
···172172#define __local_add(i,l) ((l)->a.counter+=(i))173173#define __local_sub(i,l) ((l)->a.counter-=(i))174174175175-/* Need to disable preemption for the cpu local counters otherwise we could176176- still access a variable of a previous CPU in a non atomic way. */177177-#define cpu_local_wrap_v(l) \178178- ({ local_t res__; \179179- preempt_disable(); \180180- res__ = (l); \181181- preempt_enable(); \182182- res__; })183183-#define cpu_local_wrap(l) \184184- ({ preempt_disable(); \185185- l; \186186- preempt_enable(); }) \187187-188188-#define cpu_local_read(l) cpu_local_wrap_v(local_read(&__get_cpu_var(l)))189189-#define cpu_local_set(l, i) cpu_local_wrap(local_set(&__get_cpu_var(l), (i)))190190-#define cpu_local_inc(l) cpu_local_wrap(local_inc(&__get_cpu_var(l)))191191-#define cpu_local_dec(l) cpu_local_wrap(local_dec(&__get_cpu_var(l)))192192-#define cpu_local_add(i, l) cpu_local_wrap(local_add((i), &__get_cpu_var(l)))193193-#define cpu_local_sub(i, l) cpu_local_wrap(local_sub((i), &__get_cpu_var(l)))194194-195195-#define __cpu_local_inc(l) cpu_local_inc(l)196196-#define __cpu_local_dec(l) cpu_local_dec(l)197197-#define __cpu_local_add(i, l) cpu_local_add((i), (l))198198-#define __cpu_local_sub(i, l) cpu_local_sub((i), (l))199199-200175#endif /* _ARCH_POWERPC_LOCAL_H */
-37
arch/x86/include/asm/local.h
···195195#define __local_add(i, l) local_add((i), (l))196196#define __local_sub(i, l) local_sub((i), (l))197197198198-/* Use these for per-cpu local_t variables: on some archs they are199199- * much more efficient than these naive implementations. Note they take200200- * a variable, not an address.201201- *202202- * X86_64: This could be done better if we moved the per cpu data directly203203- * after GS.204204- */205205-206206-/* Need to disable preemption for the cpu local counters otherwise we could207207- still access a variable of a previous CPU in a non atomic way. */208208-#define cpu_local_wrap_v(l) \209209-({ \210210- local_t res__; \211211- preempt_disable(); \212212- res__ = (l); \213213- preempt_enable(); \214214- res__; \215215-})216216-#define cpu_local_wrap(l) \217217-({ \218218- preempt_disable(); \219219- (l); \220220- preempt_enable(); \221221-}) \222222-223223-#define cpu_local_read(l) cpu_local_wrap_v(local_read(&__get_cpu_var((l))))224224-#define cpu_local_set(l, i) cpu_local_wrap(local_set(&__get_cpu_var((l)), (i)))225225-#define cpu_local_inc(l) cpu_local_wrap(local_inc(&__get_cpu_var((l))))226226-#define cpu_local_dec(l) cpu_local_wrap(local_dec(&__get_cpu_var((l))))227227-#define cpu_local_add(i, l) cpu_local_wrap(local_add((i), &__get_cpu_var((l))))228228-#define cpu_local_sub(i, l) cpu_local_wrap(local_sub((i), &__get_cpu_var((l))))229229-230230-#define __cpu_local_inc(l) cpu_local_inc((l))231231-#define __cpu_local_dec(l) cpu_local_dec((l))232232-#define __cpu_local_add(i, l) cpu_local_add((i), (l))233233-#define __cpu_local_sub(i, l) cpu_local_sub((i), (l))234234-235198#endif /* _ASM_X86_LOCAL_H */
-19
include/asm-generic/local.h
···5252#define __local_add(i,l) local_set((l), local_read(l) + (i))5353#define __local_sub(i,l) local_set((l), local_read(l) - (i))54545555-/* Use these for per-cpu local_t variables: on some archs they are5656- * much more efficient than these naive implementations. Note they take5757- * a variable (eg. mystruct.foo), not an address.5858- */5959-#define cpu_local_read(l) local_read(&__get_cpu_var(l))6060-#define cpu_local_set(l, i) local_set(&__get_cpu_var(l), (i))6161-#define cpu_local_inc(l) local_inc(&__get_cpu_var(l))6262-#define cpu_local_dec(l) local_dec(&__get_cpu_var(l))6363-#define cpu_local_add(i, l) local_add((i), &__get_cpu_var(l))6464-#define cpu_local_sub(i, l) local_sub((i), &__get_cpu_var(l))6565-6666-/* Non-atomic increments, ie. preemption disabled and won't be touched6767- * in interrupt, etc. Some archs can optimize this case well.6868- */6969-#define __cpu_local_inc(l) __local_inc(&__get_cpu_var(l))7070-#define __cpu_local_dec(l) __local_dec(&__get_cpu_var(l))7171-#define __cpu_local_add(i, l) __local_add((i), &__get_cpu_var(l))7272-#define __cpu_local_sub(i, l) __local_sub((i), &__get_cpu_var(l))7373-7455#endif /* _ASM_GENERIC_LOCAL_H */