blob: 1fd3eb551259c0b6e753b561b038c4ef05b81ef2 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
|
#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) */
|