On Tue, Jul 21, 2015 at 05:49:59PM +0200, Peter Zijlstra wrote: > On Tue, Jul 21, 2015 at 05:43:27PM +0200, Thomas Gleixner wrote: > > On Tue, 21 Jul 2015, Peter Zijlstra wrote: > > > > > > -#endif /* _LINUX_JUMP_LABEL_H */ > > > > +static inline void static_key_enable(struct static_key *key) > > > > +{ > > > > + int count = static_key_count(key); > > > > + > > > > + WARN_ON_ONCE(count < 0 || count > 1); > > > > + > > > > + if (!count) > > > > + static_key_slow_inc(key); > > > > +} > > > > + > > > > +static inline void static_key_disable(struct static_key *key) > > > > +{ > > > > + int count = static_key_count(key); > > > > + > > > > + WARN_ON_ONCE(count < 0 || count > 1); > > > > + > > > > + if (count) > > > > + static_key_slow_dec(key); > > > > +} > > > > The functions above are not part of the interface which should be used > > in code, right? > > They are in fact. They make it easier to deal with the refcount thing > when all you want is boolean states.
That is, things like sched_feat_keys[] which is an array of static keys, the split types doesn't work -- an array can after all have only one type. In such cases you do have to be very careful to not wreck things. -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/