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>