PERFORCE change 29695 for review
John Baldwin
jhb at FreeBSD.org
Fri Apr 25 09:14:57 PDT 2003
http://perforce.freebsd.org/chv.cgi?CH=29695
Change 29695 by jhb at jhb_laptop on 2003/04/25 09:14:36
IFC @29694.
Affected files ...
.. //depot/projects/smpng/sys/alpha/alpha/machdep.c#55 integrate
.. //depot/projects/smpng/sys/alpha/include/_limits.h#2 integrate
.. //depot/projects/smpng/sys/arm/include/_limits.h#2 integrate
.. //depot/projects/smpng/sys/compat/linux/linux_ioctl.c#26 integrate
.. //depot/projects/smpng/sys/compat/linux/linux_ioctl.h#7 integrate
.. //depot/projects/smpng/sys/conf/options#53 integrate
.. //depot/projects/smpng/sys/dev/drm/drmP.h#3 integrate
.. //depot/projects/smpng/sys/dev/drm/drm_bufs.h#3 integrate
.. //depot/projects/smpng/sys/dev/drm/drm_context.h#3 integrate
.. //depot/projects/smpng/sys/dev/drm/drm_dma.h#4 integrate
.. //depot/projects/smpng/sys/dev/drm/drm_drv.h#9 integrate
.. //depot/projects/smpng/sys/dev/drm/drm_fops.h#5 integrate
.. //depot/projects/smpng/sys/dev/drm/drm_init.h#3 delete
.. //depot/projects/smpng/sys/dev/drm/drm_ioctl.h#3 integrate
.. //depot/projects/smpng/sys/dev/drm/drm_lists.h#3 delete
.. //depot/projects/smpng/sys/dev/drm/drm_lock.h#3 integrate
.. //depot/projects/smpng/sys/dev/drm/drm_memory.h#5 integrate
.. //depot/projects/smpng/sys/dev/drm/drm_os_freebsd.h#7 integrate
.. //depot/projects/smpng/sys/dev/drm/drm_sysctl.h#3 integrate
.. //depot/projects/smpng/sys/dev/drm/drm_vm.h#5 integrate
.. //depot/projects/smpng/sys/dev/drm/mga_dma.c#4 integrate
.. //depot/projects/smpng/sys/dev/drm/mga_drv.c#3 integrate
.. //depot/projects/smpng/sys/dev/drm/mga_drv.h#4 integrate
.. //depot/projects/smpng/sys/dev/drm/mga_state.c#4 integrate
.. //depot/projects/smpng/sys/dev/drm/r128_cce.c#4 integrate
.. //depot/projects/smpng/sys/dev/drm/r128_drv.c#3 integrate
.. //depot/projects/smpng/sys/dev/drm/r128_drv.h#4 integrate
.. //depot/projects/smpng/sys/dev/drm/r128_state.c#4 integrate
.. //depot/projects/smpng/sys/dev/drm/radeon.h#3 integrate
.. //depot/projects/smpng/sys/dev/drm/radeon_cp.c#4 integrate
.. //depot/projects/smpng/sys/dev/drm/radeon_drm.h#3 integrate
.. //depot/projects/smpng/sys/dev/drm/radeon_drv.c#3 integrate
.. //depot/projects/smpng/sys/dev/drm/radeon_drv.h#4 integrate
.. //depot/projects/smpng/sys/dev/drm/radeon_irq.c#2 integrate
.. //depot/projects/smpng/sys/dev/drm/radeon_mem.c#2 integrate
.. //depot/projects/smpng/sys/dev/drm/radeon_state.c#4 integrate
.. //depot/projects/smpng/sys/dev/drm/tdfx_drv.c#3 integrate
.. //depot/projects/smpng/sys/dev/firewire/firewire.c#14 integrate
.. //depot/projects/smpng/sys/dev/firewire/fwohci.c#15 integrate
.. //depot/projects/smpng/sys/dev/firewire/fwohci_pci.c#11 integrate
.. //depot/projects/smpng/sys/dev/firewire/fwohcireg.h#6 integrate
.. //depot/projects/smpng/sys/dev/firewire/sbp.c#14 integrate
.. //depot/projects/smpng/sys/dev/fxp/if_fxp.c#33 integrate
.. //depot/projects/smpng/sys/dev/fxp/if_fxpvar.h#9 integrate
.. //depot/projects/smpng/sys/dev/iir/iir.c#6 integrate
.. //depot/projects/smpng/sys/dev/iir/iir.h#4 integrate
.. //depot/projects/smpng/sys/dev/iir/iir_ctrl.c#6 integrate
.. //depot/projects/smpng/sys/dev/iir/iir_pci.c#6 integrate
.. //depot/projects/smpng/sys/dev/pccard/pccardvar.h#13 integrate
.. //depot/projects/smpng/sys/dev/sr/if_sr.c#9 integrate
.. //depot/projects/smpng/sys/dev/sr/if_sr_isa.c#3 integrate
.. //depot/projects/smpng/sys/dev/sr/if_sr_pci.c#3 integrate
.. //depot/projects/smpng/sys/dev/sr/if_srregs.h#3 integrate
.. //depot/projects/smpng/sys/fs/msdosfs/msdosfs_vfsops.c#17 integrate
.. //depot/projects/smpng/sys/geom/geom.h#26 integrate
.. //depot/projects/smpng/sys/geom/geom_bsd.c#28 integrate
.. //depot/projects/smpng/sys/geom/geom_disk.c#23 integrate
.. //depot/projects/smpng/sys/geom/geom_dump.c#18 integrate
.. //depot/projects/smpng/sys/geom/geom_event.c#16 integrate
.. //depot/projects/smpng/sys/geom/geom_int.h#11 integrate
.. //depot/projects/smpng/sys/geom/geom_kern.c#14 integrate
.. //depot/projects/smpng/sys/geom/geom_mbr.c#19 integrate
.. //depot/projects/smpng/sys/geom/geom_pc98.c#17 integrate
.. //depot/projects/smpng/sys/geom/geom_slice.c#20 integrate
.. //depot/projects/smpng/sys/geom/geom_slice.h#12 integrate
.. //depot/projects/smpng/sys/geom/geom_subr.c#25 integrate
.. //depot/projects/smpng/sys/geom/geom_sunlabel.c#20 integrate
.. //depot/projects/smpng/sys/i386/conf/NOTES#56 integrate
.. //depot/projects/smpng/sys/i386/i386/machdep.c#58 integrate
.. //depot/projects/smpng/sys/i386/i386/pmap.c#36 integrate
.. //depot/projects/smpng/sys/i386/i386/trap.c#54 integrate
.. //depot/projects/smpng/sys/i386/include/_limits.h#2 integrate
.. //depot/projects/smpng/sys/ia64/ia32/ia32_proto.h#7 integrate
.. //depot/projects/smpng/sys/ia64/ia32/ia32_syscall.h#7 integrate
.. //depot/projects/smpng/sys/ia64/ia32/ia32_sysent.c#7 integrate
.. //depot/projects/smpng/sys/ia64/ia32/syscalls.master#10 integrate
.. //depot/projects/smpng/sys/ia64/ia64/machdep.c#52 integrate
.. //depot/projects/smpng/sys/ia64/include/_limits.h#2 integrate
.. //depot/projects/smpng/sys/kern/kern_context.c#4 integrate
.. //depot/projects/smpng/sys/kern/kern_mac.c#23 integrate
.. //depot/projects/smpng/sys/kern/kern_proc.c#50 integrate
.. //depot/projects/smpng/sys/kern/kern_sig.c#62 integrate
.. //depot/projects/smpng/sys/kern/kern_thread.c#30 integrate
.. //depot/projects/smpng/sys/kern/vfs_mount.c#13 integrate
.. //depot/projects/smpng/sys/kern/vfs_subr.c#49 integrate
.. //depot/projects/smpng/sys/kern/vfs_syscalls.c#54 integrate
.. //depot/projects/smpng/sys/net/if_ethersubr.c#31 integrate
.. //depot/projects/smpng/sys/nfsclient/nfs_vfsops.c#21 integrate
.. //depot/projects/smpng/sys/nfsclient/nfs_vnops.c#28 integrate
.. //depot/projects/smpng/sys/nfsserver/nfs_serv.c#27 integrate
.. //depot/projects/smpng/sys/pc98/conf/NOTES#5 integrate
.. //depot/projects/smpng/sys/pc98/i386/machdep.c#52 integrate
.. //depot/projects/smpng/sys/pccard/cardinfo.h#6 integrate
.. //depot/projects/smpng/sys/pccard/pccard.c#19 integrate
.. //depot/projects/smpng/sys/pccard/pccard_nbk.c#10 integrate
.. //depot/projects/smpng/sys/pccard/slot.h#7 integrate
.. //depot/projects/smpng/sys/powerpc/include/_limits.h#2 integrate
.. //depot/projects/smpng/sys/powerpc/powerpc/machdep.c#36 integrate
.. //depot/projects/smpng/sys/sparc64/include/_limits.h#2 integrate
.. //depot/projects/smpng/sys/sparc64/sparc64/machdep.c#48 integrate
.. //depot/projects/smpng/sys/sys/limits.h#1 branch
.. //depot/projects/smpng/sys/sys/proc.h#84 integrate
.. //depot/projects/smpng/sys/sys/ucontext.h#7 integrate
.. //depot/projects/smpng/sys/vm/swap_pager.h#8 integrate
.. //depot/projects/smpng/sys/vm/vm_contig.c#13 integrate
.. //depot/projects/smpng/sys/vm/vm_map.c#34 integrate
.. //depot/projects/smpng/sys/vm/vm_object.c#31 integrate
.. //depot/projects/smpng/sys/vm/vm_page.c#36 integrate
.. //depot/projects/smpng/sys/vm/vm_pageout.c#28 integrate
.. //depot/projects/smpng/sys/vm/vm_pageout.h#8 integrate
.. //depot/projects/smpng/sys/x86_64/include/_limits.h#2 integrate
Differences ...
==== //depot/projects/smpng/sys/alpha/alpha/machdep.c#55 (text+ko) ====
@@ -23,7 +23,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $FreeBSD: src/sys/alpha/alpha/machdep.c,v 1.200 2003/04/18 20:09:03 jhb Exp $
+ * $FreeBSD: src/sys/alpha/alpha/machdep.c,v 1.201 2003/04/25 01:50:28 deischen Exp $
*/
/*-
* Copyright (c) 1998 The NetBSD Foundation, Inc.
@@ -1977,13 +1977,17 @@
}
int
-get_mcontext(struct thread *td, mcontext_t *mcp)
+get_mcontext(struct thread *td, mcontext_t *mcp, int clear_ret)
{
/*
* Use a trapframe for getsetcontext, so just copy the
* threads trapframe.
*/
- bcopy(&td->td_frame, &mcp->mc_regs, sizeof(td->td_frame));
+ bcopy(td->td_frame, &mcp->mc_regs, sizeof(struct trapframe));
+ if (clear_ret != 0) {
+ mcp->mc_regs[FRAME_V0] = 0;
+ mcp->mc_regs[FRAME_A4] = 0;
+ }
/*
* When the thread is the current thread, the user stack pointer
@@ -2029,7 +2033,7 @@
* The context is a trapframe, so just copy it over the
* threads frame.
*/
- bcopy(&mcp->mc_regs, &td->td_frame, sizeof(td->td_frame));
+ bcopy(&mcp->mc_regs, td->td_frame, sizeof(struct trapframe));
}
return (0);
}
==== //depot/projects/smpng/sys/alpha/include/_limits.h#2 (text+ko) ====
@@ -32,76 +32,61 @@
*
* @(#)limits.h 8.3 (Berkeley) 1/4/94
* From: NetBSD: limits.h,v 1.3 1997/04/06 08:47:31 cgd Exp
- * $FreeBSD: src/sys/alpha/include/_limits.h,v 1.10 2002/12/22 06:38:44 tjr Exp $
+ * $FreeBSD: src/sys/alpha/include/_limits.h,v 1.11 2003/04/23 21:41:58 kan Exp $
*/
-#ifndef _MACHINE_LIMITS_H_
-#define _MACHINE_LIMITS_H_
+#ifndef _MACHINE__LIMITS_H_
+#define _MACHINE__LIMITS_H_
-#define CHAR_BIT 8 /* number of bits in a char */
+#define __CHAR_BIT 8 /* number of bits in a char */
-/*
- * According to ANSI (section 2.2.4.2), the values below must be usable by
- * #if preprocessing directives. Additionally, the expression must have the
- * same type as would an expression that is an object of the corresponding
- * type converted according to the integral promotions. The subtraction for
- * INT_MIN, etc., is so the value is not unsigned; e.g., 0x80000000 is an
- * unsigned int for 32-bit two's complement ANSI compilers (section 3.1.3.2).
- * These numbers are for the default configuration of gcc. They work for
- * some other compilers as well, but this should not be depended on.
- */
-#define SCHAR_MAX 0x7f /* max value for a signed char */
-#define SCHAR_MIN (-0x7f-1) /* min value for a signed char */
+#define __SCHAR_MAX 0x7f /* max value for a signed char */
+#define __SCHAR_MIN (-0x7f-1) /* min value for a signed char */
-#define UCHAR_MAX 0xffU /* max value for an unsigned char */
-#define CHAR_MAX 0x7f /* max value for a char */
-#define CHAR_MIN (-0x7f-1) /* min value for a char */
+#define __UCHAR_MAX 0xffU /* max value for an unsigned char */
+#define __CHAR_MAX 0x7f /* max value for a char */
+#define __CHAR_MIN (-0x7f-1) /* min value for a char */
-#define USHRT_MAX 0xffffU /* max value for an unsigned short */
-#define SHRT_MAX 0x7fff /* max value for a short */
-#define SHRT_MIN (-0x7fff-1) /* min value for a short */
+#define __USHRT_MAX 0xffffU /* max value for an unsigned short */
+#define __SHRT_MAX 0x7fff /* max value for a short */
+#define __SHRT_MIN (-0x7fff-1) /* min value for a short */
-#define UINT_MAX 0xffffffffU /* max value for an unsigned int */
-#define INT_MAX 0x7fffffff /* max value for an int */
-#define INT_MIN (-0x7fffffff-1) /* min value for an int */
+#define __UINT_MAX 0xffffffffU /* max value for an unsigned int */
+#define __INT_MAX 0x7fffffff /* max value for an int */
+#define __INT_MIN (-0x7fffffff-1) /* min value for an int */
-#define ULONG_MAX 0xffffffffffffffffUL /* max for an unsigned long */
-#define LONG_MAX 0x7fffffffffffffffL /* max for a long */
-#define LONG_MIN (-0x7fffffffffffffffL-1) /* min for a long */
+#define __ULONG_MAX 0xffffffffffffffffUL /* max for an unsigned long */
+#define __LONG_MAX 0x7fffffffffffffffL /* max for a long */
+#define __LONG_MIN (-0x7fffffffffffffffL-1) /* min for a long */
/* Long longs and longs are the same size on the alpha. */
/* max for an unsigned long long */
-#define ULLONG_MAX 0xffffffffffffffffULL
-#define LLONG_MAX 0x7fffffffffffffffLL /* max for a long long */
-#define LLONG_MIN (-0x7fffffffffffffffLL-1) /* min for a long long */
+#define __ULLONG_MAX 0xffffffffffffffffULL
+#define __LLONG_MAX 0x7fffffffffffffffLL /* max for a long long */
+#define __LLONG_MIN (-0x7fffffffffffffffLL-1) /* min for a long long */
-#if !defined(_ANSI_SOURCE)
-#define SSIZE_MAX LONG_MAX /* max value for a ssize_t */
+#define __SSIZE_MAX __LONG_MAX /* max value for a ssize_t */
-#if !defined(_POSIX_SOURCE) && !defined(_XOPEN_SOURCE)
-#define SIZE_T_MAX ULONG_MAX /* max value for a size_t */
+#define __SIZE_T_MAX __ULONG_MAX /* max value for a size_t */
-#define OFF_MAX LONG_MAX /* max value for a off_t */
-#define OFF_MIN LONG_MIN /* min value for a off_t */
+#define __OFF_MAX __LONG_MAX /* max value for a off_t */
+#define __OFF_MIN __LONG_MIN /* min value for a off_t */
/* Quads and longs are the same on the alpha. Ensure they stay in sync. */
-#define UQUAD_MAX (ULONG_MAX) /* max value for a uquad_t */
-#define QUAD_MAX (LONG_MAX) /* max value for a quad_t */
-#define QUAD_MIN (LONG_MIN) /* min value for a quad_t */
-#endif /* !_POSIX_SOURCE && !_XOPEN_SOURCE */
-#endif /* !_ANSI_SOURCE */
+#define __UQUAD_MAX (__ULONG_MAX) /* max value for a uquad_t */
+#define __QUAD_MAX (__LONG_MAX) /* max value for a quad_t */
+#define __QUAD_MIN (__LONG_MIN) /* min value for a quad_t */
-#if (!defined(_ANSI_SOURCE)&&!defined(_POSIX_SOURCE)) || defined(_XOPEN_SOURCE)
-#define LONG_BIT 64
-#define WORD_BIT 32
+#define __LONG_BIT 64
+#define __WORD_BIT 32
-#define DBL_DIG 15
-#define DBL_MAX 1.7976931348623157E+308
-#define DBL_MIN 2.2250738585072014E-308
+#define __DBL_DIG 15
+#define __DBL_MAX 1.7976931348623157E+308
+#define __DBL_MIN 2.2250738585072014E-308
-#define FLT_DIG 6
-#define FLT_MAX 3.40282347E+38F
-#define FLT_MIN 1.17549435E-38F
+#define __FLT_DIG 6
+#define __FLT_MAX 3.40282347E+38F
+#define __FLT_MIN 1.17549435E-38F
#endif
-#endif /* !_MACHINE_LIMITS_H_ */
+#endif /* !_MACHINE__LIMITS_H_ */
==== //depot/projects/smpng/sys/arm/include/_limits.h#2 (text+ko) ====
@@ -31,75 +31,68 @@
* SUCH DAMAGE.
*
* @(#)limits.h 8.3 (Berkeley) 1/4/94
- * $FreeBSD: src/sys/arm/include/_limits.h,v 1.3 2002/12/22 06:38:44 tjr Exp $
+ * $FreeBSD: src/sys/arm/include/_limits.h,v 1.4 2003/04/23 21:41:58 kan Exp $
*/
-#ifndef _MACHINE_LIMITS_H_
-#define _MACHINE_LIMITS_H_
+#ifndef _MACHINE__LIMITS_H_
+#define _MACHINE__LIMITS_H_
-#define CHAR_BIT 8 /* number of bits in a char */
+#define __CHAR_BIT 8 /* number of bits in a char */
-/*
- * According to ANSI (section 2.2.4.2), the values below must be usable by
- * #if preprocessing directives. Additionally, the expression must have the
- * same type as would an expression that is an object of the corresponding
- * type converted according to the integral promotions. The subtraction for
- * INT_MIN, etc., is so the value is not unsigned; e.g., 0x80000000 is an
- * unsigned int for 32-bit two's complement ANSI compilers (section 3.1.3.2).
- * These numbers are for the default configuration of gcc. They work for
- * some other compilers as well, but this should not be depended on.
- */
-#define SCHAR_MAX 0x7f /* max value for a signed char */
-#define SCHAR_MIN (-0x7f - 1) /* min value for a signed char */
+#define __SCHAR_MAX 0x7f /* max value for a signed char */
+#define __SCHAR_MIN (-0x7f - 1) /* min value for a signed char */
-#define UCHAR_MAX 0xff /* max value for an unsigned char */
+#define __UCHAR_MAX 0xff /* max value for an unsigned char */
-#ifdef __CHAR_UNSIGNED__
-#define CHAR_MAX UCHAR_MAX /* max value for a char */
-#define CHAR_MIN 0 /* min value for a char */
-#else
-#define CHAR_MAX SCHAR_MAX /* max value for a char */
-#define CHAR_MIN SCHAR_MIN /* min value for a char */
-#endif
+#define __USHRT_MAX 0xffff /* max value for an unsigned short */
+#define __SHRT_MAX 0x7fff /* max value for a short */
+#define __SHRT_MIN (-0x7fff - 1) /* min value for a short */
-#define USHRT_MAX 0xffff /* max value for an unsigned short */
-#define SHRT_MAX 0x7fff /* max value for a short */
-#define SHRT_MIN (-0x7fff - 1) /* min value for a short */
-
-#define UINT_MAX 0xffffffffU /* max value for an unsigned int */
-#define INT_MAX 0x7fffffff /* max value for an int */
-#define INT_MIN (-0x7fffffff - 1) /* min value for an int */
+#define __UINT_MAX 0xffffffffU /* max value for an unsigned int */
+#define __INT_MAX 0x7fffffff /* max value for an int */
+#define __INT_MIN (-0x7fffffff - 1) /* min value for an int */
/* Bad hack for gcc configured to give 64-bit longs. */
#ifdef _LARGE_LONG
-#define ULONG_MAX 0xffffffffffffffffUL
-#define LONG_MAX 0x7fffffffffffffffL
-#define LONG_MIN (-0x7fffffffffffffffL - 1)
+#define __ULONG_MAX 0xffffffffffffffffUL
+#define __LONG_MAX 0x7fffffffffffffffL
+#define __LONG_MIN (-0x7fffffffffffffffL - 1)
#else
-#define ULONG_MAX 0xffffffffUL /* max value for an unsigned long */
-#define LONG_MAX 0x7fffffffL /* max value for a long */
-#define LONG_MIN (-0x7fffffffL - 1) /* min value for a long */
+#define __ULONG_MAX 0xffffffffUL /* max value for an unsigned long */
+#define __LONG_MAX 0x7fffffffL /* max value for a long */
+#define __LONG_MIN (-0x7fffffffL - 1) /* min value for a long */
#endif
/* max value for an unsigned long long */
-#define ULLONG_MAX 0xffffffffffffffffULL
-#define LLONG_MAX 0x7fffffffffffffffLL /* max value for a long long */
-#define LLONG_MIN (-0x7fffffffffffffffLL - 1) /* min for a long long */
+#define __ULLONG_MAX 0xffffffffffffffffULL
+#define __LLONG_MAX 0x7fffffffffffffffLL /* max value for a long long */
+#define __LLONG_MIN (-0x7fffffffffffffffLL - 1) /* min for a long long */
-#if !defined(_ANSI_SOURCE)
-#define SSIZE_MAX INT_MAX /* max value for a ssize_t */
+#define __SSIZE_MAX __INT_MAX /* max value for a ssize_t */
-#if !defined(_POSIX_SOURCE)
-#define SIZE_T_MAX UINT_MAX /* max value for a size_t */
+#define __SIZE_T_MAX __UINT_MAX /* max value for a size_t */
-#define OFF_MAX LLONG_MAX /* max value for a off_t */
-#define OFF_MIN LLONG_MIN /* min value for a off_t */
+#define __OFF_MAX __LLONG_MAX /* max value for a off_t */
+#define __OFF_MIN __LLONG_MIN /* min value for a off_t */
/* Quads and long longs are the same size. Ensure they stay in sync. */
-#define UQUAD_MAX ULLONG_MAX /* max value for a uquad_t */
-#define QUAD_MAX LLONG_MAX /* max value for a quad_t */
-#define QUAD_MIN LLONG_MIN /* min value for a quad_t */
-#endif /* !_POSIX_SOURCE */
-#endif /* !_ANSI_SOURCE */
+#define __UQUAD_MAX __ULLONG_MAX /* max value for a uquad_t */
+#define __QUAD_MAX __LLONG_MAX /* max value for a quad_t */
+#define __QUAD_MIN __LLONG_MIN /* min value for a quad_t */
+
+#ifdef _LARGE_LONG
+#define __LONG_BIT 64
+#else
+#define __LONG_BIT 32
+#endif
+#define __WORD_BIT 32
+
+#define __DBL_DIG 15
+#define __DBL_MAX 1.7976931348623157E+308
+#define __DBL_MIN 2.2250738585072014E-308
+
+#define __FLT_DIG 6
+#define __FLT_MAX 3.40282347E+38F
+#define __FLT_MIN 1.17549435E-38F
-#endif /* !_MACHINE_LIMITS_H_ */
+#endif /* !_MACHINE__LIMITS_H_ */
==== //depot/projects/smpng/sys/compat/linux/linux_ioctl.c#26 (text+ko) ====
@@ -25,7 +25,7 @@
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
- * $FreeBSD: src/sys/compat/linux/linux_ioctl.c,v 1.106 2003/04/16 20:57:35 phk Exp $
+ * $FreeBSD: src/sys/compat/linux/linux_ioctl.c,v 1.107 2003/04/24 23:36:35 anholt Exp $
*/
#include <sys/param.h>
@@ -69,6 +69,7 @@
static linux_ioctl_function_t linux_ioctl_sound;
static linux_ioctl_function_t linux_ioctl_termio;
static linux_ioctl_function_t linux_ioctl_private;
+static linux_ioctl_function_t linux_ioctl_drm;
static linux_ioctl_function_t linux_ioctl_special;
static struct linux_ioctl_handler cdrom_handler =
@@ -87,6 +88,8 @@
{ linux_ioctl_termio, LINUX_IOCTL_TERMIO_MIN, LINUX_IOCTL_TERMIO_MAX };
static struct linux_ioctl_handler private_handler =
{ linux_ioctl_private, LINUX_IOCTL_PRIVATE_MIN, LINUX_IOCTL_PRIVATE_MAX };
+static struct linux_ioctl_handler drm_handler =
+{ linux_ioctl_drm, LINUX_IOCTL_DRM_MIN, LINUX_IOCTL_DRM_MAX };
DATA_SET(linux_ioctl_handler_set, cdrom_handler);
DATA_SET(linux_ioctl_handler_set, vfat_handler);
@@ -96,6 +99,7 @@
DATA_SET(linux_ioctl_handler_set, sound_handler);
DATA_SET(linux_ioctl_handler_set, termio_handler);
DATA_SET(linux_ioctl_handler_set, private_handler);
+DATA_SET(linux_ioctl_handler_set, drm_handler);
struct handler_element
{
@@ -2331,6 +2335,16 @@
}
/*
+ * DRM ioctl handler (sys/dev/drm)
+ */
+static int
+linux_ioctl_drm(struct thread *td, struct linux_ioctl_args *args)
+{
+ args->cmd = SETDIR(args->cmd);
+ return ioctl(td, (struct ioctl_args *)args);
+}
+
+/*
* Special ioctl handler
*/
static int
==== //depot/projects/smpng/sys/compat/linux/linux_ioctl.h#7 (text+ko) ====
@@ -25,7 +25,7 @@
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
- * $FreeBSD: src/sys/compat/linux/linux_ioctl.h,v 1.15 2002/10/11 11:43:08 sobomax Exp $
+ * $FreeBSD: src/sys/compat/linux/linux_ioctl.h,v 1.16 2003/04/24 23:36:35 anholt Exp $
*/
#ifndef _LINUX_IOCTL_H_
@@ -667,6 +667,9 @@
#define LINUX_ASYNC_CALLOUT_NOHUP 0x0400
#define LINUX_ASYNC_FLAGS 0x0FFF
+#define LINUX_IOCTL_DRM_MIN 0x6400
+#define LINUX_IOCTL_DRM_MAX 0x64ff
+
/*
* This doesn't really belong here, but I can't think of a better
* place to put it.
==== //depot/projects/smpng/sys/conf/options#53 (text+ko) ====
@@ -1,4 +1,4 @@
-# $FreeBSD: src/sys/conf/options,v 1.391 2003/04/15 20:59:43 jhb Exp $
+# $FreeBSD: src/sys/conf/options,v 1.392 2003/04/25 01:18:45 anholt Exp $
#
# On the handling of kernel options
#
@@ -394,7 +394,6 @@
NETGRAPH_VJC opt_netgraph.h
# DRM options
-DRM_LINUX opt_drm.h
DRM_DEBUG opt_drm.h
ZERO_COPY_SOCKETS opt_zero.h
==== //depot/projects/smpng/sys/dev/drm/drmP.h#3 (text+ko) ====
@@ -27,7 +27,7 @@
* Authors:
* Rickard E. (Rik) Faith <faith at valinux.com>
* Gareth Hughes <gareth at valinux.com>
- * $FreeBSD: src/sys/dev/drm/drmP.h,v 1.3 2003/03/09 02:08:28 anholt Exp $
+ * $FreeBSD: src/sys/dev/drm/drmP.h,v 1.4 2003/04/25 01:18:46 anholt Exp $
*/
#ifndef _DRM_P_H_
@@ -52,15 +52,6 @@
#ifndef __HAVE_DMA_IRQ
#define __HAVE_DMA_IRQ 0
#endif
-#ifndef __HAVE_DMA_WAITLIST
-#define __HAVE_DMA_WAITLIST 0
-#endif
-#ifndef __HAVE_DMA_FREELIST
-#define __HAVE_DMA_FREELIST 0
-#endif
-#ifndef __HAVE_DMA_HISTOGRAM
-#define __HAVE_DMA_HISTOGRAM 0
-#endif
#define DRM_DEBUG_CODE 0 /* Include debugging code (if > 1, then
also include looping detection. */
@@ -83,12 +74,8 @@
#define DRM_HASH_SIZE 16 /* Size of key hash table */
#define DRM_KERNEL_CONTEXT 0 /* Change drm_resctx if changed */
#define DRM_RESERVED_CONTEXTS 1 /* Change drm_resctx if changed */
-#define DRM_LOOPING_LIMIT 5000000
-#define DRM_BSZ 1024 /* Buffer size for /dev/drm? output */
-#define DRM_LOCK_SLICE 1 /* Time slice for lock, in jiffies */
#define DRM_FLAG_DEBUG 0x01
-#define DRM_FLAG_NOCTX 0x02
#define DRM_MEM_DMA 0
#define DRM_MEM_SAREA 1
@@ -96,30 +83,23 @@
#define DRM_MEM_MAGIC 3
#define DRM_MEM_IOCTLS 4
#define DRM_MEM_MAPS 5
-#define DRM_MEM_VMAS 6
-#define DRM_MEM_BUFS 7
-#define DRM_MEM_SEGS 8
-#define DRM_MEM_PAGES 9
-#define DRM_MEM_FILES 10
-#define DRM_MEM_QUEUES 11
-#define DRM_MEM_CMDS 12
-#define DRM_MEM_MAPPINGS 13
-#define DRM_MEM_BUFLISTS 14
-#define DRM_MEM_AGPLISTS 15
-#define DRM_MEM_TOTALAGP 16
-#define DRM_MEM_BOUNDAGP 17
-#define DRM_MEM_CTXBITMAP 18
-#define DRM_MEM_STUB 19
-#define DRM_MEM_SGLISTS 20
+#define DRM_MEM_BUFS 6
+#define DRM_MEM_SEGS 7
+#define DRM_MEM_PAGES 8
+#define DRM_MEM_FILES 9
+#define DRM_MEM_QUEUES 10
+#define DRM_MEM_CMDS 11
+#define DRM_MEM_MAPPINGS 12
+#define DRM_MEM_BUFLISTS 13
+#define DRM_MEM_AGPLISTS 14
+#define DRM_MEM_TOTALAGP 15
+#define DRM_MEM_BOUNDAGP 16
+#define DRM_MEM_CTXBITMAP 17
+#define DRM_MEM_STUB 18
+#define DRM_MEM_SGLISTS 19
#define DRM_MAX_CTXBITMAP (PAGE_SIZE * 8)
- /* Backward compatibility section */
- /* _PAGE_WT changed to _PAGE_PWT in 2.2.6 */
-#ifndef _PAGE_PWT
-#define _PAGE_PWT _PAGE_WT
-#endif
-
/* Mapping helper macros */
#define DRM_IOREMAP(map) \
(map)->handle = DRM(ioremap)( dev, map )
@@ -147,22 +127,12 @@
} while(0)
-typedef struct drm_pci_list {
- u16 vendor;
- u16 device;
-} drm_pci_list_t;
-
typedef struct drm_ioctl_desc {
- d_ioctl_t *func;
+ int (*func)(DRM_IOCTL_ARGS);
int auth_needed;
int root_only;
} drm_ioctl_desc_t;
-typedef struct drm_devstate {
- pid_t owner; /* X server pid holding x_lock */
-
-} drm_devstate_t;
-
typedef struct drm_magic_entry {
drm_magic_t magic;
struct drm_file *priv;
@@ -174,12 +144,6 @@
struct drm_magic_entry *tail;
} drm_magic_head_t;
-typedef struct drm_vma_entry {
- struct vm_area_struct *vma;
- struct drm_vma_entry *next;
- pid_t pid;
-} drm_vma_entry_t;
-
typedef struct drm_buf {
int idx; /* Index into master buflist */
int total; /* Buffer size */
@@ -189,12 +153,9 @@
void *address; /* Address of buffer */
unsigned long bus_address; /* Bus address of buffer */
struct drm_buf *next; /* Kernel-only: used for free list */
- __volatile__ int waiting; /* On kernel DMA queue */
__volatile__ int pending; /* On hardware DMA queue */
- wait_queue_head_t dma_wait; /* Processes waiting */
- pid_t pid; /* PID of holding process */
+ DRMFILE filp; /* Unique identifier of holding process */
int context; /* Kernel queue for this buffer */
- int while_locked;/* Dispatch this buffer while locked */
enum {
DRM_LIST_NONE = 0,
DRM_LIST_FREE = 1,
@@ -204,39 +165,10 @@
DRM_LIST_RECLAIM = 5
} list; /* Which list we're on */
-#if DRM_DMA_HISTOGRAM
- cycles_t time_queued; /* Queued to kernel DMA queue */
- cycles_t time_dispatched; /* Dispatched to hardware */
- cycles_t time_completed; /* Completed by hardware */
- cycles_t time_freed; /* Back on freelist */
-#endif
-
int dev_priv_size; /* Size of buffer private stoarge */
void *dev_private; /* Per-buffer private storage */
} drm_buf_t;
-#if DRM_DMA_HISTOGRAM
-#define DRM_DMA_HISTOGRAM_SLOTS 9
-#define DRM_DMA_HISTOGRAM_INITIAL 10
-#define DRM_DMA_HISTOGRAM_NEXT(current) ((current)*10)
-typedef struct drm_histogram {
- atomic_t total;
-
- atomic_t queued_to_dispatched[DRM_DMA_HISTOGRAM_SLOTS];
- atomic_t dispatched_to_completed[DRM_DMA_HISTOGRAM_SLOTS];
- atomic_t completed_to_freed[DRM_DMA_HISTOGRAM_SLOTS];
-
- atomic_t queued_to_completed[DRM_DMA_HISTOGRAM_SLOTS];
- atomic_t queued_to_freed[DRM_DMA_HISTOGRAM_SLOTS];
-
- atomic_t dma[DRM_DMA_HISTOGRAM_SLOTS];
- atomic_t schedule[DRM_DMA_HISTOGRAM_SLOTS];
- atomic_t ctx[DRM_DMA_HISTOGRAM_SLOTS];
- atomic_t lacq[DRM_DMA_HISTOGRAM_SLOTS];
- atomic_t lhld[DRM_DMA_HISTOGRAM_SLOTS];
-} drm_histogram_t;
-#endif
-
/* bufs is one longer than it has to be */
typedef struct drm_waitlist {
int count; /* Number of possible buffers */
@@ -253,10 +185,8 @@
atomic_t count; /* Number of free buffers */
drm_buf_t *next; /* End pointer */
- wait_queue_head_t waiting; /* Processes waiting on free bufs */
int low_mark; /* Low water mark */
int high_mark; /* High water mark */
- atomic_t wfh; /* If waiting for high mark */
DRM_SPINTYPE lock;
} drm_freelist_t;
@@ -289,48 +219,14 @@
struct drm_device *devXX;
};
-typedef struct drm_queue {
- atomic_t use_count; /* Outstanding uses (+1) */
- atomic_t finalization; /* Finalization in progress */
- atomic_t block_count; /* Count of processes waiting */
- atomic_t block_read; /* Queue blocked for reads */
- wait_queue_head_t read_queue; /* Processes waiting on block_read */
- atomic_t block_write; /* Queue blocked for writes */
- wait_queue_head_t write_queue; /* Processes waiting on block_write */
-#if 1
- atomic_t total_queued; /* Total queued statistic */
- atomic_t total_flushed;/* Total flushes statistic */
- atomic_t total_locks; /* Total locks statistics */
-#endif
- drm_ctx_flags_t flags; /* Context preserving and 2D-only */
- drm_waitlist_t waitlist; /* Pending buffers */
- wait_queue_head_t flush_queue; /* Processes waiting until flush */
-} drm_queue_t;
-
typedef struct drm_lock_data {
drm_hw_lock_t *hw_lock; /* Hardware lock */
- pid_t pid; /* PID of lock holder (0=kernel) */
+ DRMFILE filp; /* Unique identifier of holding process (NULL is kernel)*/
wait_queue_head_t lock_queue; /* Queue of blocked processes */
unsigned long lock_time; /* Time of last lock in jiffies */
} drm_lock_data_t;
typedef struct drm_device_dma {
-#if 0
- /* Performance Counters */
- atomic_t total_prio; /* Total DRM_DMA_PRIORITY */
- atomic_t total_bytes; /* Total bytes DMA'd */
- atomic_t total_dmas; /* Total DMA buffers dispatched */
-
- atomic_t total_missed_dma; /* Missed drm_do_dma */
- atomic_t total_missed_lock; /* Missed lock in drm_do_dma */
- atomic_t total_missed_free; /* Missed drm_free_this_buffer */
- atomic_t total_missed_sched;/* Missed drm_dma_schedule */
-
- atomic_t total_tried; /* Tried next_buffer */
- atomic_t total_hit; /* Sent next_buffer */
- atomic_t total_lost; /* Lost interrupt */
-#endif
-
drm_buf_entry_t bufs[DRM_MAX_ORDER+1];
int buf_count;
drm_buf_t **buflist; /* Vector of pointers info bufs */
@@ -346,8 +242,6 @@
/* DMA support */
drm_buf_t *this_buffer; /* Buffer being sent */
drm_buf_t *next_buffer; /* Selected buffer to send */
- drm_queue_t *next_queue; /* Queue from which buffer selected*/
- wait_queue_head_t waiting; /* Processes waiting on free bufs */
} drm_device_dma_t;
#if __REALLY_HAVE_AGP
@@ -381,11 +275,6 @@
dma_addr_t *busaddr;
} drm_sg_mem_t;
-typedef struct drm_sigdata {
- int context;
- drm_hw_lock_t *lock;
-} drm_sigdata_t;
-
typedef struct drm_local_map {
unsigned long offset; /* Physical address (0 for SAREA)*/
unsigned long size; /* Physical size (bytes) */
@@ -424,21 +313,16 @@
device_t device; /* Device instance from newbus */
#endif
dev_t devnode; /* Device number for mknod */
- char *devname; /* For /proc/interrupts */
- int blocked; /* Blocked due to VC switch? */
int flags; /* Flags to open(2) */
- int writable; /* Opened with FWRITE */
/* Locks */
- DRM_SPINTYPE count_lock; /* For inuse, open_count, buf_use */
+ DRM_SPINTYPE count_lock; /* For open_count, buf_use, buf_alloc */
struct lock dev_lock; /* For others */
/* Usage Counters */
int open_count; /* Outstanding files open */
- atomic_t ioctl_count; /* Outstanding IOCTLs pending */
- atomic_t vma_count; /* Outstanding vma areas open */
int buf_use; /* Buffers in use -- cannot alloc */
- atomic_t buf_alloc; /* Buffer allocation in progress */
+ int buf_alloc; /* Buffer allocation in progress */
/* Performance counters */
unsigned long counters;
@@ -451,19 +335,13 @@
/* Memory management */
drm_map_list_t *maplist; /* Linked list of regions */
- int map_count; /* Number of mappable regions */
drm_local_map_t **context_sareas;
int max_context;
- drm_vma_entry_t *vmalist; /* List of vmas (for debugging) */
drm_lock_data_t lock; /* Information on hardware lock */
/* DMA queues (contexts) */
- int queue_count; /* Number of active DMA queues */
- int queue_reserved; /* Number of reserved DMA queues */
- int queue_slots; /* Actual length of queuelist */
- drm_queue_t **queuelist; /* Vector of pointers to DMA queues */
drm_device_dma_t *dma; /* Optional pointer for DMA support */
/* Context support */
@@ -477,45 +355,25 @@
#endif
void *irqh; /* Handle from bus_setup_intr */
atomic_t context_flag; /* Context swapping flag */
- atomic_t interrupt_flag; /* Interruption handler flag */
- atomic_t dma_flag; /* DMA dispatch flag */
struct callout timer; /* Timer for delaying ctx switch */
- wait_queue_head_t context_wait; /* Processes waiting on ctx switch */
- int last_checked; /* Last context checked for DMA */
int last_context; /* Last current context */
- unsigned long last_switch; /* jiffies at last context switch */
#if __FreeBSD_version >= 400005
struct task task;
#endif
#if __HAVE_VBL_IRQ
wait_queue_head_t vbl_queue; /* vbl wait channel */
atomic_t vbl_received;
-#if 0 /* vbl signals are untested, ntested */
+#if 0 /* vbl signals are untested */
struct drm_vbl_sig_list vbl_sig_list;
DRM_SPINTYPE vbl_lock;
#endif
#endif
- cycles_t ctx_start;
- cycles_t lck_start;
-#if __HAVE_DMA_HISTOGRAM
- drm_histogram_t histo;
-#endif
- /* Callback to X server for context switch
- and for heavy-handed reset. */
- char buf[DRM_BSZ]; /* Output buffer */
- char *buf_rp; /* Read pointer */
- char *buf_wp; /* Write pointer */
- char *buf_end; /* End pointer */
#ifdef __FreeBSD__
struct sigio *buf_sigio; /* Processes waiting for SIGIO */
#elif defined(__NetBSD__)
pid_t buf_pgid;
#endif
- struct selinfo buf_sel; /* Workspace for select/poll */
- int buf_selecting;/* True if poll sleeper */
- wait_queue_head_t buf_readers; /* Processes waiting to read */
- wait_queue_head_t buf_writers; /* Processes waiting to ctx switch */
/* Sysctl support */
struct drm_sysctl_info *sysctl;
@@ -526,13 +384,9 @@
drm_sg_mem_t *sg; /* Scatter gather memory */
atomic_t *ctx_bitmap;
void *dev_private;
- drm_sigdata_t sigdata; /* For block_all_signals */
- sigset_t sigmask;
};
extern int DRM(flags);
-extern void DRM(parse_options)( char *s );
-extern int DRM(cpu_valid)( void );
/* Authentication (drm_auth.h) */
extern int DRM(add_magic)(drm_device_t *dev, drm_file_t *priv,
@@ -541,7 +395,6 @@
/* Driver support (drm_drv.h) */
extern int DRM(version)( DRM_IOCTL_ARGS );
-extern int DRM(write_string)(drm_device_t *dev, const char *s);
/* Memory management support (drm_memory.h) */
extern void DRM(mem_init)(void);
@@ -582,11 +435,6 @@
extern int DRM(lock_free)(drm_device_t *dev,
__volatile__ unsigned int *lock,
unsigned int context);
-extern int DRM(flush_unblock)(drm_device_t *dev, int context,
- drm_lock_flags_t flags);
-extern int DRM(flush_block_and_flush)(drm_device_t *dev, int context,
- drm_lock_flags_t flags);
-extern int DRM(notifier)(void *priv);
/* Buffer management support (drm_bufs.h) */
extern int DRM(order)( unsigned long size );
@@ -596,16 +444,7 @@
extern int DRM(dma_setup)(drm_device_t *dev);
extern void DRM(dma_takedown)(drm_device_t *dev);
extern void DRM(free_buffer)(drm_device_t *dev, drm_buf_t *buf);
-extern void DRM(reclaim_buffers)(drm_device_t *dev, pid_t pid);
-#if __HAVE_OLD_DMA
-/* GH: This is a dirty hack for now...
- */
-extern void DRM(clear_next_buffer)(drm_device_t *dev);
-extern int DRM(select_queue)(drm_device_t *dev,
- void (*wrapper)(unsigned long));
-extern int DRM(dma_enqueue)(drm_device_t *dev, drm_dma_t *dma);
-extern int DRM(dma_get_buffers)(drm_device_t *dev, drm_dma_t *dma);
-#endif
+extern void DRM(reclaim_buffers)(drm_device_t *dev, DRMFILE filp);
#if __HAVE_DMA_IRQ
extern int DRM(irq_install)( drm_device_t *dev, int irq );
extern int DRM(irq_uninstall)( drm_device_t *dev );
@@ -617,10 +456,6 @@
extern void DRM(dma_immediate_bh)( DRM_TASKQUEUE_ARGS );
#endif
#endif
-#if DRM_DMA_HISTOGRAM
-extern int DRM(histogram_slot)(unsigned long count);
-extern void DRM(histogram_compute)(drm_device_t *dev, drm_buf_t *buf);
-#endif
/* Buffer list support (drm_lists.h) */
#if __HAVE_DMA_WAITLIST
@@ -629,13 +464,6 @@
extern int DRM(waitlist_put)(drm_waitlist_t *bl, drm_buf_t *buf);
extern drm_buf_t *DRM(waitlist_get)(drm_waitlist_t *bl);
#endif
-#if __HAVE_DMA_FREELIST
-extern int DRM(freelist_create)(drm_freelist_t *bl, int count);
-extern int DRM(freelist_destroy)(drm_freelist_t *bl);
-extern int DRM(freelist_put)(drm_device_t *dev, drm_freelist_t *bl,
- drm_buf_t *buf);
-extern drm_buf_t *DRM(freelist_get)(drm_freelist_t *bl, int block);
-#endif
#endif /* __HAVE_DMA */
#if __HAVE_VBL_IRQ
extern int DRM(vblank_wait)(drm_device_t *dev, unsigned int *vbl_seq);
@@ -668,5 +496,75 @@
dma_addr_t bus_addr);
#endif
+/* Locking IOCTL support (drm_drv.h) */
+extern int DRM(lock)(DRM_IOCTL_ARGS);
+extern int DRM(unlock)(DRM_IOCTL_ARGS);
+
+/* Misc. IOCTL support (drm_ioctl.h) */
+extern int DRM(irq_busid)(DRM_IOCTL_ARGS);
+extern int DRM(getunique)(DRM_IOCTL_ARGS);
+extern int DRM(setunique)(DRM_IOCTL_ARGS);
+extern int DRM(getmap)(DRM_IOCTL_ARGS);
+extern int DRM(getclient)(DRM_IOCTL_ARGS);
+extern int DRM(getstats)(DRM_IOCTL_ARGS);
+extern int DRM(noop)(DRM_IOCTL_ARGS);
+
+/* Context IOCTL support (drm_context.h) */
+extern int DRM(resctx)(DRM_IOCTL_ARGS);
+extern int DRM(addctx)(DRM_IOCTL_ARGS);
+extern int DRM(modctx)(DRM_IOCTL_ARGS);
+extern int DRM(getctx)(DRM_IOCTL_ARGS);
+extern int DRM(switchctx)(DRM_IOCTL_ARGS);
+extern int DRM(newctx)(DRM_IOCTL_ARGS);
+extern int DRM(rmctx)(DRM_IOCTL_ARGS);
+extern int DRM(setsareactx)(DRM_IOCTL_ARGS);
+extern int DRM(getsareactx)(DRM_IOCTL_ARGS);
+
+/* Drawable IOCTL support (drm_drawable.h) */
+extern int DRM(adddraw)(DRM_IOCTL_ARGS);
+extern int DRM(rmdraw)(DRM_IOCTL_ARGS);
+
+/* Authentication IOCTL support (drm_auth.h) */
+extern int DRM(getmagic)(DRM_IOCTL_ARGS);
+extern int DRM(authmagic)(DRM_IOCTL_ARGS);
+
+/* Buffer management support (drm_bufs.h) */
+extern int DRM(addmap)(DRM_IOCTL_ARGS);
+extern int DRM(rmmap)(DRM_IOCTL_ARGS);
+#if __HAVE_DMA
+extern int DRM(addbufs)(DRM_IOCTL_ARGS);
+extern int DRM(infobufs)(DRM_IOCTL_ARGS);
+extern int DRM(markbufs)(DRM_IOCTL_ARGS);
+extern int DRM(freebufs)(DRM_IOCTL_ARGS);
+extern int DRM(mapbufs)(DRM_IOCTL_ARGS);
+#endif
+
+/* DMA support (drm_dma.h) */
+#if __HAVE_DMA
+extern int DRM(control)(DRM_IOCTL_ARGS);
+#endif
+#if __HAVE_VBL_IRQ
+extern int DRM(wait_vblank)(DRM_IOCTL_ARGS);
+#endif
+
+/* AGP/GART support (drm_agpsupport.h) */
+#if __REALLY_HAVE_AGP
+extern int DRM(agp_acquire)(DRM_IOCTL_ARGS);
+extern int DRM(agp_release)(DRM_IOCTL_ARGS);
+extern int DRM(agp_enable)(DRM_IOCTL_ARGS);
+extern int DRM(agp_info)(DRM_IOCTL_ARGS);
+extern int DRM(agp_alloc)(DRM_IOCTL_ARGS);
+extern int DRM(agp_free)(DRM_IOCTL_ARGS);
+extern int DRM(agp_unbind)(DRM_IOCTL_ARGS);
+extern int DRM(agp_bind)(DRM_IOCTL_ARGS);
+#endif
+
+/* Scatter Gather Support (drm_scatter.h) */
+#if __HAVE_SG
+extern int DRM(sg_alloc)(DRM_IOCTL_ARGS);
+extern int DRM(sg_free)(DRM_IOCTL_ARGS);
+#endif
+
+
#endif /* __KERNEL__ */
#endif /* _DRM_P_H_ */
==== //depot/projects/smpng/sys/dev/drm/drm_bufs.h#3 (text+ko) ====
>>> TRUNCATED FOR MAIL (1000 lines) <<<
More information about the p4-projects
mailing list