On Fri, Aug 12, 2016 at 10:55:46AM +0300, Joonas Lahtinen wrote: > On pe, 2016-08-12 at 07:54 +0100, Chris Wilson wrote: > > A simple little macro to clear a pointer and return the old value. This > > is useful for writing > > > > value = *ptr; > > if (!value) > > return; > > > > *ptr = 0; > > ... > > free(value); > > > > in a slightly more concise form: > > > > value = fetch_and_zero(ptr); > > if (!value) > > return; > > > > ... > > free(value); > > > > with the idea that this establishes a pattern that may be extended for > > atomic use (using xchg or cmpxchg) i.e. atomic_fetch_and_zero() and > > similar to llist. > > > > Signed-off-by: Chris Wilson <chris@xxxxxxxxxxxxxxxxxx> > > Cc: Joonas Lahtinen <joonas.lahtinen@xxxxxxxxxxxxxxx> > > Cc: Daniel Vetter <daniel.vetter@xxxxxxxx> > > --- > > drivers/gpu/drm/i915/i915_drv.h | 6 ++++++ > > 1 file changed, 6 insertions(+) > > > > diff --git a/drivers/gpu/drm/i915/i915_drv.h b/drivers/gpu/drm/i915/i915_drv.h > > index a4203ff0cf7f..731c67fc9796 100644 > > --- a/drivers/gpu/drm/i915/i915_drv.h > > +++ b/drivers/gpu/drm/i915/i915_drv.h > > @@ -3903,4 +3903,10 @@ static inline bool __i915_request_irq_complete(struct drm_i915_gem_request *req) > > return false; > > } > > > > +#define fetch_and_zero(ptr) ({ \ > > + typeof(*ptr) T__ = *(ptr); \ > > Looking at container_of etc. it's always __ as prefix. The advice to use the suffix is from gcc's manual iirc, and there are a few macros that do dotted around the place, but it looks overwhelmingly in favour of the prefix. -Chris -- Chris Wilson, Intel Open Source Technology Centre _______________________________________________ Intel-gfx mailing list Intel-gfx@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/intel-gfx