More fixes for FreeBSD-current.

This commit is contained in:
Doug Rabson 2001-05-04 12:22:52 +00:00
parent e1770afb48
commit 5c1d043535
10 changed files with 54 additions and 8 deletions

View file

@ -43,9 +43,13 @@
#define DRM_OS_LOCK lockmgr(&dev->dev_lock, LK_EXCLUSIVE, 0, curproc)
#define DRM_OS_UNLOCK lockmgr(&dev->dev_lock, LK_RELEASE, 0, curproc)
#if __FreeBSD_version >= 500000
#define DRM_OS_SPINTYPE struct mtx
#define DRM_OS_SPININIT(l,name) mtx_init(l, name, MTX_DEF)
#define DRM_OS_SPINLOCK(l) mtx_lock(l)
#define DRM_OS_SPINUNLOCK(u) mtx_unlock(u);
#else
#define DRM_OS_SPINTYPE struct simplelock
#define DRM_OS_SPININIT(l,name) simple_lock_init(l)
#define DRM_OS_SPINLOCK(l) simple_lock(l)
#define DRM_OS_SPINUNLOCK(u) simple_unlock(u);
#endif

View file

@ -43,9 +43,13 @@
#define DRM_OS_LOCK lockmgr(&dev->dev_lock, LK_EXCLUSIVE, 0, curproc)
#define DRM_OS_UNLOCK lockmgr(&dev->dev_lock, LK_RELEASE, 0, curproc)
#if __FreeBSD_version >= 500000
#define DRM_OS_SPINTYPE struct mtx
#define DRM_OS_SPININIT(l,name) mtx_init(l, name, MTX_DEF)
#define DRM_OS_SPINLOCK(l) mtx_lock(l)
#define DRM_OS_SPINUNLOCK(u) mtx_unlock(u);
#else
#define DRM_OS_SPINTYPE struct simplelock
#define DRM_OS_SPININIT(l,name) simple_lock_init(l)
#define DRM_OS_SPINLOCK(l) simple_lock(l)
#define DRM_OS_SPINUNLOCK(u) simple_unlock(u);
#endif

View file

@ -448,7 +448,7 @@ typedef struct drm_device {
struct semaphore struct_sem; /* For others */
#endif
#ifdef __FreeBSD__
struct simplelock count_lock; /* For inuse, open_count, buf_use */
DRM_OS_SPINTYPE count_lock; /* For inuse, open_count, buf_use */
struct lock dev_lock; /* For others */
#endif
/* Usage Counters */

View file

@ -123,11 +123,18 @@ int DRM(getmagic)(DRM_OS_IOCTL)
static spinlock_t lock = SPIN_LOCK_UNLOCKED;
#endif
#ifdef __FreeBSD__
static struct simplelock lock;
static DRM_OS_SPINTYPE lock;
static int first = 1;
#endif
DRM_OS_DEVICE;
DRM_OS_PRIV;
#ifdef __FreeBSD__
if (first) {
DRM_OS_SPININIT(&lock, "drm getmagic");
first = 0;
}
#endif
/* Find unique magic */
if (priv->magic) {

View file

@ -286,7 +286,11 @@ static struct cdevsw DRM( cdevsw) = {
/* dump */ nodump,
/* psize */ nopsize,
/* flags */ D_TTY | D_TRACKCLOSE,
#if __FreeBSD_version >= 500000
/* kqfilter */ 0
#else
/* bmaj */ -1
#endif
};
#endif
@ -387,7 +391,11 @@ static int DRM(setup)( drm_device_t *dev )
init_waitqueue_head( &dev->context_wait );
#endif
#ifdef __FreeBSD__
#if __FreeBSD_version >= 500000
callout_init( &dev->timer, 1 );
#else
callout_init( &dev->timer );
#endif
dev->context_wait = 0;
#endif
@ -638,7 +646,7 @@ static int DRM(init)( device_t nbdev )
#endif
#endif
#ifdef __FreeBSD__
simple_lock_init(&dev->count_lock);
DRM_OS_SPININIT(&dev->count_lock, "drm device");
lockinit(&dev->dev_lock, PZERO, "drmlk", 0, 0);
#endif

View file

@ -65,7 +65,7 @@ typedef struct drm_mem_stats {
static spinlock_t DRM(mem_lock) = SPIN_LOCK_UNLOCKED;
#endif
#ifdef __FreeBSD__
static struct simplelock DRM(mem_lock);
static DRM_OS_SPINTYPE DRM(mem_lock);
#endif
static unsigned long DRM(ram_available) = 0; /* In pages */
static unsigned long DRM(ram_used) = 0;
@ -101,6 +101,10 @@ void DRM(mem_init)(void)
struct sysinfo si;
#endif
#if defined(__FreeBSD__)
DRM_OS_SPININIT(&DRM(mem_lock), "drm memory");
#endif
for (mem = DRM(mem_stats); mem->name; ++mem) {
mem->succeed_count = 0;
mem->free_count = 0;

View file

@ -448,7 +448,7 @@ typedef struct drm_device {
struct semaphore struct_sem; /* For others */
#endif
#ifdef __FreeBSD__
struct simplelock count_lock; /* For inuse, open_count, buf_use */
DRM_OS_SPINTYPE count_lock; /* For inuse, open_count, buf_use */
struct lock dev_lock; /* For others */
#endif
/* Usage Counters */

View file

@ -123,11 +123,18 @@ int DRM(getmagic)(DRM_OS_IOCTL)
static spinlock_t lock = SPIN_LOCK_UNLOCKED;
#endif
#ifdef __FreeBSD__
static struct simplelock lock;
static DRM_OS_SPINTYPE lock;
static int first = 1;
#endif
DRM_OS_DEVICE;
DRM_OS_PRIV;
#ifdef __FreeBSD__
if (first) {
DRM_OS_SPININIT(&lock, "drm getmagic");
first = 0;
}
#endif
/* Find unique magic */
if (priv->magic) {

View file

@ -286,7 +286,11 @@ static struct cdevsw DRM( cdevsw) = {
/* dump */ nodump,
/* psize */ nopsize,
/* flags */ D_TTY | D_TRACKCLOSE,
#if __FreeBSD_version >= 500000
/* kqfilter */ 0
#else
/* bmaj */ -1
#endif
};
#endif
@ -387,7 +391,11 @@ static int DRM(setup)( drm_device_t *dev )
init_waitqueue_head( &dev->context_wait );
#endif
#ifdef __FreeBSD__
#if __FreeBSD_version >= 500000
callout_init( &dev->timer, 1 );
#else
callout_init( &dev->timer );
#endif
dev->context_wait = 0;
#endif
@ -638,7 +646,7 @@ static int DRM(init)( device_t nbdev )
#endif
#endif
#ifdef __FreeBSD__
simple_lock_init(&dev->count_lock);
DRM_OS_SPININIT(&dev->count_lock, "drm device");
lockinit(&dev->dev_lock, PZERO, "drmlk", 0, 0);
#endif

View file

@ -65,7 +65,7 @@ typedef struct drm_mem_stats {
static spinlock_t DRM(mem_lock) = SPIN_LOCK_UNLOCKED;
#endif
#ifdef __FreeBSD__
static struct simplelock DRM(mem_lock);
static DRM_OS_SPINTYPE DRM(mem_lock);
#endif
static unsigned long DRM(ram_available) = 0; /* In pages */
static unsigned long DRM(ram_used) = 0;
@ -101,6 +101,10 @@ void DRM(mem_init)(void)
struct sysinfo si;
#endif
#if defined(__FreeBSD__)
DRM_OS_SPININIT(&DRM(mem_lock), "drm memory");
#endif
for (mem = DRM(mem_stats); mem->name; ++mem) {
mem->succeed_count = 0;
mem->free_count = 0;