From 85729c2c44a615c8ae17f5a5da15ceb1c86318ec Mon Sep 17 00:00:00 2001 From: Juli Mallett Date: Fri, 9 Mar 2012 22:30:54 +0000 Subject: Export intrcnt correctly when running under 32-bit compatibility. Reviewed by: gonzo, nwhitehorn --- sys/kern/kern_intr.c | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) (limited to 'sys/kern/kern_intr.c') diff --git a/sys/kern/kern_intr.c b/sys/kern/kern_intr.c index 72313b5e8430..a578084d28cd 100644 --- a/sys/kern/kern_intr.c +++ b/sys/kern/kern_intr.c @@ -1881,6 +1881,24 @@ SYSCTL_PROC(_hw, OID_AUTO, intrnames, CTLTYPE_OPAQUE | CTLFLAG_RD, static int sysctl_intrcnt(SYSCTL_HANDLER_ARGS) { +#ifdef SCTL_MASK32 + uint32_t *intrcnt32; + unsigned i; + int error; + + if (req->flags & SCTL_MASK32) { + if (!req->oldptr) + return (sysctl_handle_opaque(oidp, NULL, sintrcnt / 2, req)); + intrcnt32 = malloc(sintrcnt / 2, M_TEMP, M_NOWAIT); + if (intrcnt32 == NULL) + return (ENOMEM); + for (i = 0; i < sintrcnt / sizeof (u_long); i++) + intrcnt32[i] = intrcnt[i]; + error = sysctl_handle_opaque(oidp, intrcnt32, sintrcnt / 2, req); + free(intrcnt32, M_TEMP); + return (error); + } +#endif return (sysctl_handle_opaque(oidp, intrcnt, sintrcnt, req)); } -- cgit v1.2.3