Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 7 Jun 2014 21:36:51 GMT
From:      mihai@FreeBSD.org
To:        svn-soc-all@FreeBSD.org
Subject:   socsvn commit: r269237 - soc2014/mihai/lapic_test
Message-ID:  <201406072136.s57LapBO068133@socsvn.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: mihai
Date: Sat Jun  7 21:36:51 2014
New Revision: 269237
URL: http://svnweb.FreeBSD.org/socsvn/?view=rev&rev=269237

Log:
  sos2014: mihai: add lapic_test module

Added:
  soc2014/mihai/lapic_test/
  soc2014/mihai/lapic_test/Makefile
  soc2014/mihai/lapic_test/lapic_test.c

Added: soc2014/mihai/lapic_test/Makefile
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ soc2014/mihai/lapic_test/Makefile	Sat Jun  7 21:36:51 2014	(r269237)
@@ -0,0 +1,14 @@
+# Note: It is important to make sure you include the <bsd.kmod.mk> makefile after declaring the KMOD and SRCS variables.
+
+# Declare Name of kernel module
+KMOD =   lapic_test
+# Enumerate Source files for kernel module
+SRCS =   lapic_test.c
+
+# Include kernel module makefile
+# /usr/src/share/mk/bsd.kmod.mk
+.include <bsd.kmod.mk>
+
+# Not really necessary, 'make clean' will work fine
+realclean: clean
+	rm -f @ machine *~ *core

Added: soc2014/mihai/lapic_test/lapic_test.c
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ soc2014/mihai/lapic_test/lapic_test.c	Sat Jun  7 21:36:51 2014	(r269237)
@@ -0,0 +1,51 @@
+#include <sys/cdefs.h>
+#include <sys/param.h>
+#include <sys/module.h>
+#include <sys/kernel.h>
+#include <sys/systm.h>
+
+extern int	lapic_id(void);
+
+
+#define NO_ITERATIONS 1000000
+static void lapic_test(void)
+{
+	uint32_t i, x;
+	uint64_t before, after, ticks_per_exit;
+
+	x = 0;
+
+	before = rdtsc();
+	for (i = 0; i < NO_ITERATIONS; i++)
+		    x += lapic_id();
+	after = rdtsc();
+
+	ticks_per_exit = (after - before) / NO_ITERATIONS;
+	uprintf("lapic_test ticks_per_exit %lu\n", ticks_per_exit);
+}
+
+/* The function called at load/unload. */
+static int event_handler(struct module *module, int event, void *arg) {
+    int e = 0; /* Error, 0 for normal return status */
+
+    switch (event) {
+    case MOD_LOAD:
+	lapic_test();
+        break;
+    case MOD_UNLOAD:
+        break;
+    default:
+        e = EOPNOTSUPP; /* Error, Operation Not Supported */
+        break;
+    }
+
+    return(e);
+}
+
+static moduledata_t lapic_test_conf = {
+    "lapic_test",    /* module name */
+     event_handler,  /* event handler */
+     NULL            /* extra data */
+};
+
+DECLARE_MODULE(lapic_test, lapic_test_conf, SI_SUB_DRIVERS, SI_ORDER_MIDDLE);



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201406072136.s57LapBO068133>