Loading include/linux/cgroup.h +1 −1 Original line number Diff line number Diff line Loading @@ -108,7 +108,7 @@ static inline bool css_tryget(struct cgroup_subsys_state *css) { if (css->flags & CSS_ROOT) return true; return percpu_ref_tryget(&css->refcnt); return percpu_ref_tryget_live(&css->refcnt); } /** Loading include/linux/percpu-refcount.h +33 −1 Original line number Diff line number Diff line Loading @@ -121,6 +121,36 @@ static inline void percpu_ref_get(struct percpu_ref *ref) * percpu_ref_tryget - try to increment a percpu refcount * @ref: percpu_ref to try-get * * Increment a percpu refcount unless its count already reached zero. * Returns %true on success; %false on failure. * * The caller is responsible for ensuring that @ref stays accessible. */ static inline bool percpu_ref_tryget(struct percpu_ref *ref) { unsigned __percpu *pcpu_count; int ret = false; rcu_read_lock_sched(); pcpu_count = ACCESS_ONCE(ref->pcpu_count); if (likely(REF_STATUS(pcpu_count) == PCPU_REF_PTR)) { __this_cpu_inc(*pcpu_count); ret = true; } else { ret = atomic_inc_not_zero(&ref->count); } rcu_read_unlock_sched(); return ret; } /** * percpu_ref_tryget_live - try to increment a live percpu refcount * @ref: percpu_ref to try-get * * Increment a percpu refcount unless it has already been killed. Returns * %true on success; %false on failure. * Loading @@ -128,8 +158,10 @@ static inline void percpu_ref_get(struct percpu_ref *ref) * will fail. For such guarantee, percpu_ref_kill_and_confirm() should be * used. After the confirm_kill callback is invoked, it's guaranteed that * no new reference will be given out by percpu_ref_tryget(). * * The caller is responsible for ensuring that @ref stays accessible. */ static inline bool percpu_ref_tryget(struct percpu_ref *ref) static inline bool percpu_ref_tryget_live(struct percpu_ref *ref) { unsigned __percpu *pcpu_count; int ret = false; Loading include/linux/percpu.h +1 −1 Original line number Diff line number Diff line Loading @@ -29,7 +29,7 @@ */ #define get_cpu_var(var) (*({ \ preempt_disable(); \ &__get_cpu_var(var); })) this_cpu_ptr(&var); })) /* * The weird & is necessary because sparse considers (void)(var) to be Loading Loading
include/linux/cgroup.h +1 −1 Original line number Diff line number Diff line Loading @@ -108,7 +108,7 @@ static inline bool css_tryget(struct cgroup_subsys_state *css) { if (css->flags & CSS_ROOT) return true; return percpu_ref_tryget(&css->refcnt); return percpu_ref_tryget_live(&css->refcnt); } /** Loading
include/linux/percpu-refcount.h +33 −1 Original line number Diff line number Diff line Loading @@ -121,6 +121,36 @@ static inline void percpu_ref_get(struct percpu_ref *ref) * percpu_ref_tryget - try to increment a percpu refcount * @ref: percpu_ref to try-get * * Increment a percpu refcount unless its count already reached zero. * Returns %true on success; %false on failure. * * The caller is responsible for ensuring that @ref stays accessible. */ static inline bool percpu_ref_tryget(struct percpu_ref *ref) { unsigned __percpu *pcpu_count; int ret = false; rcu_read_lock_sched(); pcpu_count = ACCESS_ONCE(ref->pcpu_count); if (likely(REF_STATUS(pcpu_count) == PCPU_REF_PTR)) { __this_cpu_inc(*pcpu_count); ret = true; } else { ret = atomic_inc_not_zero(&ref->count); } rcu_read_unlock_sched(); return ret; } /** * percpu_ref_tryget_live - try to increment a live percpu refcount * @ref: percpu_ref to try-get * * Increment a percpu refcount unless it has already been killed. Returns * %true on success; %false on failure. * Loading @@ -128,8 +158,10 @@ static inline void percpu_ref_get(struct percpu_ref *ref) * will fail. For such guarantee, percpu_ref_kill_and_confirm() should be * used. After the confirm_kill callback is invoked, it's guaranteed that * no new reference will be given out by percpu_ref_tryget(). * * The caller is responsible for ensuring that @ref stays accessible. */ static inline bool percpu_ref_tryget(struct percpu_ref *ref) static inline bool percpu_ref_tryget_live(struct percpu_ref *ref) { unsigned __percpu *pcpu_count; int ret = false; Loading
include/linux/percpu.h +1 −1 Original line number Diff line number Diff line Loading @@ -29,7 +29,7 @@ */ #define get_cpu_var(var) (*({ \ preempt_disable(); \ &__get_cpu_var(var); })) this_cpu_ptr(&var); })) /* * The weird & is necessary because sparse considers (void)(var) to be Loading