diff options
Diffstat (limited to 'bsd/drm_os_freebsd.h')
-rw-r--r-- | bsd/drm_os_freebsd.h | 17 |
1 files changed, 15 insertions, 2 deletions
diff --git a/bsd/drm_os_freebsd.h b/bsd/drm_os_freebsd.h index 70ca60a6..a0ec9e3c 100644 --- a/bsd/drm_os_freebsd.h +++ b/bsd/drm_os_freebsd.h @@ -139,6 +139,21 @@ do { \ } \ } while (0) +#define DRM_HZ hz + +#define DRM_WAIT_ON( ret, queue, timeout, condition ) \ +do { \ + if (condition) \ + break; \ + ret = tsleep( &(queue), PZERO | PCATCH, "rdnirq", (timeout) ); \ + if ( (ret == EWOULDBLOCK) || (ret == EINTR) ) \ + return DRM_ERR(EBUSY); \ +} while (1) + +#define DRM_WAKEUP( queue ) wakeup( queue ) +#define DRM_WAKEUP_INT( queue ) wakeup( queue ) +#define DRM_INIT_WAITQUEUE( queue ) do {} while (0) + #define DRM_COPY_TO_USER_IOCTL(user, kern, size) \ if ( IOCPARM_LEN(cmd) != size) \ return EINVAL; \ @@ -173,8 +188,6 @@ do { \ __asm __volatile("" : : : "memory"); \ } while (0) -#define DRM_WAKEUP(w) wakeup(w) -#define DRM_WAKEUP_INT(w) wakeup(w) #define PAGE_ALIGN(addr) round_page(addr) |