svn commit: r267706 - head/sys/cddl/dev/sdt

Mark Johnston markj at FreeBSD.org
Sat Jun 21 19:29:41 UTC 2014


Author: markj
Date: Sat Jun 21 19:29:40 2014
New Revision: 267706
URL: http://svnweb.freebsd.org/changeset/base/267706

Log:
  Allow creation of SDT probes from a module in which no providers are
  defined. This ensures that the sdt:zfs:: probes appear despite the fact
  the sdt provider is defined in the kernel rather than in zfs.ko.
  
  Reported by:	hiren
  Tested by:	hiren
  MFC after:	2 weeks

Modified:
  head/sys/cddl/dev/sdt/sdt.c

Modified: head/sys/cddl/dev/sdt/sdt.c
==============================================================================
--- head/sys/cddl/dev/sdt/sdt.c	Sat Jun 21 18:47:30 2014	(r267705)
+++ head/sys/cddl/dev/sdt/sdt.c	Sat Jun 21 19:29:40 2014	(r267706)
@@ -257,27 +257,28 @@ sdt_kld_load(void *arg __unused, struct 
 	struct sdt_probe **probe, **p_begin, **p_end;
 	struct sdt_argtype **argtype, **a_begin, **a_end;
 
-	if (linker_file_lookup_set(lf, "sdt_providers_set", &begin, &end, NULL))
-		return;
-	for (prov = begin; prov < end; prov++)
-		sdt_create_provider(*prov);
+	if (linker_file_lookup_set(lf, "sdt_providers_set", &begin, &end,
+	    NULL) == 0) {
+		for (prov = begin; prov < end; prov++)
+			sdt_create_provider(*prov);
+	}
 
 	if (linker_file_lookup_set(lf, "sdt_probes_set", &p_begin, &p_end,
-	    NULL))
-		return;
-	for (probe = p_begin; probe < p_end; probe++) {
-		(*probe)->sdtp_lf = lf;
-		sdt_create_probe(*probe);
-		TAILQ_INIT(&(*probe)->argtype_list);
+	    NULL) == 0) {
+		for (probe = p_begin; probe < p_end; probe++) {
+			(*probe)->sdtp_lf = lf;
+			sdt_create_probe(*probe);
+			TAILQ_INIT(&(*probe)->argtype_list);
+		}
 	}
 
 	if (linker_file_lookup_set(lf, "sdt_argtypes_set", &a_begin, &a_end,
-	    NULL))
-		return;
-	for (argtype = a_begin; argtype < a_end; argtype++) {
-		(*argtype)->probe->n_args++;
-		TAILQ_INSERT_TAIL(&(*argtype)->probe->argtype_list, *argtype,
-		    argtype_entry);
+	    NULL) == 0) {
+		for (argtype = a_begin; argtype < a_end; argtype++) {
+			(*argtype)->probe->n_args++;
+			TAILQ_INSERT_TAIL(&(*argtype)->probe->argtype_list,
+			    *argtype, argtype_entry);
+		}
 	}
 }
 


More information about the svn-src-all mailing list