Module Name:    src
Committed By:   christos
Date:           Sun Oct  4 23:25:32 UTC 2015

Modified Files:
        src/external/cddl/osnet/dist/lib/libdtrace/common: dt_module.c

Log Message:
put back module filename finding code.


To generate a diff of this commit:
cvs rdiff -u -r1.9 -r1.10 \
    src/external/cddl/osnet/dist/lib/libdtrace/common/dt_module.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/dist/lib/libdtrace/common/dt_module.c
diff -u src/external/cddl/osnet/dist/lib/libdtrace/common/dt_module.c:1.9 src/external/cddl/osnet/dist/lib/libdtrace/common/dt_module.c:1.10
--- src/external/cddl/osnet/dist/lib/libdtrace/common/dt_module.c:1.9	Thu Sep 24 10:25:29 2015
+++ src/external/cddl/osnet/dist/lib/libdtrace/common/dt_module.c	Sun Oct  4 19:25:32 2015
@@ -1169,6 +1169,36 @@ dt_module_update(dtrace_hdl_t *dtp, stru
 
 	(void) strlcpy(name, k_stat->name, sizeof(name));
 	(void) strlcpy(fname, k_stat->pathname, sizeof(fname));
+#elif defined(__NetBSD__)
+	int mib_osrel[2] = { CTL_KERN, KERN_OSRELEASE };
+	int mib_mach[2] = { CTL_HW, HW_MACHINE };
+	char osrel[64];
+	char machine[64];
+	size_t len;
+
+	if (strcmp("netbsd", name) == 0) {
+		/* want the kernel */
+		strncpy(fname, "/netbsd", sizeof(fname));
+	} else {
+
+		/* build stand module path from system */
+		len = sizeof(osrel);
+		if (sysctl(mib_osrel, 2, osrel, &len, NULL, 0) == -1) {
+			dt_dprintf("sysctl osrel failed: %s\n",
+				strerror(errno));
+		    return;
+		}
+
+		len = sizeof(machine);
+		if (sysctl(mib_mach, 2, machine, &len, NULL, 0) == -1) {
+			dt_dprintf("sysctl machine failed: %s\n",
+				strerror(errno));
+		    return;
+		}
+
+		(void) snprintf(fname, sizeof (fname),
+		    "/stand/%s/%s/modules/%s/%s.kmod", machine, osrel, name, name);
+	}
 #endif
 
 	if ((fd = open(fname, O_RDONLY)) == -1 || fstat64(fd, &st) == -1 ||

Reply via email to