pkgsrc/sysutils/aperture/patches/patch-ad
tron d112515fd8 Make this build and work under NetBSD 3.99.20 and newer.
Bump package revision because of this fix.
2006-05-31 02:31:56 +00:00

157 lines
3.4 KiB
Text

$NetBSD: patch-ad,v 1.9 2006/05/31 02:31:56 tron Exp $
--- module/aperture.c.orig 2006-05-31 03:22:31.000000000 +0100
+++ module/aperture.c 2006-05-31 03:29:49.000000000 +0100
@@ -71,6 +71,14 @@
/* open counter */
static int xf86_open_count = 0;
+#if !defined(__NetBSD_Version__) || __NetBSD_Version__ < 399001400
+#define PROC
+#endif
+
+#if defined(__NetBSD_Version__) && __NetBSD_Version__ >= 399002000
+#include <sys/kauth.h>
+#endif
+
/* mem range descriptors */
struct mem_range_softc mem_range_softc;
@@ -78,16 +86,28 @@
* Open the device
*/
int
-xf86open(dev, oflags, devtype, p)
- dev_t dev;
- int oflags;
- int devtype;
- struct proc *p;
+xf86open(dev_t dev, int oflags, int devtype,
+#ifdef PROC
+ struct proc *p)
{
+#else
+ struct lwp *l)
+{
+ struct proc *p = l->l_proc;
+#endif
+#if !defined(__NetBSD_Version__) || __NetBSD_Version__ < 399002000
if (suser(p->p_ucred, &p->p_acflag) != 0) {
return(EPERM);
}
+#else
+ int error;
+
+ error = kauth_authorize_generic(p->p_cred, KAUTH_GENERIC_ISSUSER,
+ &p->p_acflag);
+ if (error != 0)
+ return error;
+#endif
/* authorize only one simultaneous open() */
if (xf86_open_count > 0) {
return(EPERM);
@@ -101,11 +121,13 @@
* Close the device
*/
int
-xf86close(dev, cflags, devtype, p)
- dev_t dev;
- int cflags;
- int devtype;
- struct proc *p;
+xf86close(dev_t dev, int cflags, int devtype,
+#ifdef PROC
+ struct proc *p
+#else
+ struct lwp *l
+#endif
+)
{
xf86_open_count--;
return(0);
@@ -117,19 +139,22 @@
* allow only section in the vga framebuffer and above main memory
* to be mapped
*/
+/*
+ * Technically, the change to the kernel mmap interface happened
+ * during 1.5A, but after the interface changed, the kernel version
+ * was inexplicably not bumped. Starting with 1.5B _and_ with the
+ * 1.5-branch releases, the change to the kernel mmap interface
+ * appears.
+ */
#if !defined(__NetBSD_Version__) || \
- (defined(__NetBSD_Version__) && (__NetBSD_Version__ < 105000000))
+ (defined(__NetBSD_Version__) && \
+ ((__NetBSD_Version__ < 105000000) || \
+ (__NetBSD_Version__ >= 105010000) && (__NetBSD_Version__ < 105020000)))
int
-xf86mmap(dev, offset, length)
- dev_t dev;
- int offset;
- int length;
+xf86mmap(dev_t dev, int offset, int length)
#else
paddr_t
-xf86mmap(dev, offset, length)
- dev_t dev;
- off_t offset;
- int length;
+xf86mmap(dev_t dev, off_t offset, int length)
#endif /* __NetBSD_Version__ */
{
@@ -144,19 +169,24 @@
&& (unsigned)offset <= HOLE16M_END)
#endif
)) {
+#if __NetBSD_Version__ >= 106160000
+ return x86_btop(offset);
+#else
return i386_btop(offset);
+#endif
} else {
return(-1);
}
}
int
-xf86ioctl(dev, cmd, data, flags, p)
- dev_t dev;
- u_long cmd;
- caddr_t data;
- int flags;
- struct proc *p;
+xf86ioctl(dev_t dev, u_long cmd, caddr_t data, int flags,
+#ifdef PROC
+ struct proc *p
+#else
+ struct lwp *l
+#endif
+)
{
int nd, error = 0;
struct mem_range_op *mo = (struct mem_range_op *)data;
@@ -212,9 +242,7 @@
* memory range attributes.
*/
int
-mem_range_attr_get(mrd, arg)
- struct mem_range_desc *mrd;
- int *arg;
+mem_range_attr_get(struct mem_range_desc *mrd, int *arg)
{
/* can we handle this? */
if (mem_range_softc.mr_op == NULL)
@@ -229,9 +257,7 @@
}
int
-mem_range_attr_set(mrd, arg)
- struct mem_range_desc *mrd;
- int *arg;
+mem_range_attr_set(struct mem_range_desc *mrd, int *arg)
{
/* can we handle this? */
if (mem_range_softc.mr_op == NULL)