socsvn commit: r269237 - soc2014/mihai/lapic_test
mihai at FreeBSD.org
mihai at FreeBSD.org
Sat Jun 7 21:36:52 UTC 2014
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);
More information about the svn-soc-all
mailing list