Module Name:    src
Committed By:   christos
Date:           Sun Mar  3 18:16:35 UTC 2013

Modified Files:
        src/external/cddl/osnet/dev/dtrace: dtrace_ioctl.c

Log Message:
autoload tracing modules.


To generate a diff of this commit:
cvs rdiff -u -r1.3 -r1.4 src/external/cddl/osnet/dev/dtrace/dtrace_ioctl.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/external/cddl/osnet/dev/dtrace/dtrace_ioctl.c
diff -u src/external/cddl/osnet/dev/dtrace/dtrace_ioctl.c:1.3 src/external/cddl/osnet/dev/dtrace/dtrace_ioctl.c:1.4
--- src/external/cddl/osnet/dev/dtrace/dtrace_ioctl.c:1.3	Wed Aug 31 17:57:16 2011
+++ src/external/cddl/osnet/dev/dtrace/dtrace_ioctl.c	Sun Mar  3 13:16:35 2013
@@ -1,4 +1,4 @@
-/*	$NetBSD: dtrace_ioctl.c,v 1.3 2011/08/31 21:57:16 christos Exp $	*/
+/*	$NetBSD: dtrace_ioctl.c,v 1.4 2013/03/03 18:16:35 christos Exp $	*/
 
 /*
  * CDDL HEADER START
@@ -647,6 +647,8 @@ dtrace_ioctl(struct file *fp, u_long cmd
 		DTRACE_IOCTL_PRINTF("%s(%d): DTRACEIOC_PROVIDER\n",__func__,__LINE__);
 
 		pvd->dtvd_name[DTRACE_PROVNAMELEN - 1] = '\0';
+		error = 0;
+again:
 		mutex_enter(&dtrace_provider_lock);
 
 		for (pvp = dtrace_provider; pvp != NULL; pvp = pvp->dtpv_next) {
@@ -656,6 +658,13 @@ dtrace_ioctl(struct file *fp, u_long cmd
 
 		mutex_exit(&dtrace_provider_lock);
 
+		if (pvp == NULL && error == 0) {
+			error = module_autoload(pvd->dtvd_name,
+			    MODULE_CLASS_MISC);
+			if (error == 0)
+				goto again;
+		}
+
 		if (pvp == NULL)
 			return (ESRCH);
 
@@ -758,16 +767,15 @@ dtrace_ioctl(struct file *fp, u_long cmd
 		return (0);
 	}
 	case DTRACEIOC_STOP: {
-		int rval;
 		processorid_t *cpuid = (processorid_t *) addr;
 
 		DTRACE_IOCTL_PRINTF("%s(%d): DTRACEIOC_STOP\n",__func__,__LINE__);
 
 		mutex_enter(&dtrace_lock);
-		rval = dtrace_state_stop(state, cpuid);
+		error = dtrace_state_stop(state, cpuid);
 		mutex_exit(&dtrace_lock);
 
-		return (rval);
+		return (error);
 	}
 	default:
 		error = ENOTTY;

Reply via email to