#ifndef _FFB_LOCK_H #define _FFB_LOCK_H #include "ffb_context.h" extern void ffbXMesaUpdateState(ffbContextPtr fmesa); #define FFB_UPDATE_STATE(fmesa) ffbXMesaUpdateState(fmesa) /* Lock the hardware and validate our state. This hardware can only ever * exist on SPARC platforms. Don't bother building the real LOCK_HARDWARE and * UNLOCK_HARDWARE code on non-SPARC platforms. The only reason the driver * gets built on non-SPARC is to catch build breakages earlier. */ #if !defined(__sparc__) #define LOCK_HARDWARE(fmesa) #define UNLOCK_HARDWARE(fmesa) #else #define LOCK_HARDWARE(fmesa) \ do { \ DRM_CAS_RESULT(__ret); \ DRM_CAS(fmesa->driHwLock, fmesa->hHWContext, \ (DRM_LOCK_HELD | fmesa->hHWContext), __ret);\ if (__ret) { \ drmGetLock(fmesa->driFd, fmesa->hHWContext, 0); \ FFB_UPDATE_STATE(fmesa); \ } \ } while (0) /* Unlock the hardware. */ #define UNLOCK_HARDWARE(fmesa) \ DRM_UNLOCK(fmesa->driFd, fmesa->driHwLock, fmesa->hHWContext); #endif #endif /* !(_FFB_LOCK_H) */