On Wed, 2009-04-01 at 17:16 +0200, Ingo Molnar wrote: > * Subrata Modak <[email protected]> wrote: > > > Hi Ingo, > > > > I picked up this simple testcases written by you from: > > > > http://lkml.org/lkml/2008/12/5/17, > > > > If you do not have any issue(s), we would like to include the same > > in LTP. The following patch does exactly that. > > > > May i request you to kindly let us know if you are developing any > > test case(s) for any kernel feature in future. Then kindly do, > > > > Cc: Subrata Modak <[email protected]>, > > Cc: ltp-list <[email protected]>, > > Ported-To-And-Tested-On-LTP-By: Subrata Modak <[email protected]>, > > Please be advised that the syscall ABI is still under development > and may change without notice. Aside that caveat, no objections from > me!
Ok. Thanks. Regards-- Subrata > > Ingo > > > --- > > > > --- ltp-full-20090331.orig/runalltests.sh 2009-04-01 17:35:09.000000000 > > +0530 > > +++ ltp-full-20090331/runalltests.sh 2009-04-01 17:51:42.000000000 > > +0530 > > @@ -197,6 +197,9 @@ export RUN_CONTROLLER_AREA_NETWORK_TESTS > > ## as both of them cannot be tested in the same running kernel > > export RUN_SMACK_SECURITY_TESTS=0 > > > > +##Set this to 1 if you wish to run the Basic PERFORMANCE COUNTER tests > > +export RUN_PERFORMANCE_COUNTERS_TESTS=0 > > + > > export LTP_VERSION=`./runltp -e` > > export TEST_START_TIME=`date +"%Y_%b_%d-%Hh_%Mm_%Ss"` > > export HARDWARE_TYPE=$(uname -i) > > @@ -538,3 +541,13 @@ then > > fi > > ## END => Test Series 28 ## > > > > +## The next one i plan to run the PERFORMANCE COUNTERS tests > > +## START => Test Series 29 ## > > +if [ $RUN_PERFORMANCE_COUNTERS_TESTS -eq 1 ] > > +then > > + (cd $LTPROOT/testcases/kernel/performance_counters; make && make > > install) > > + ./runltp -f perfcounters > > +fi > > +## END => Test Series 29 ## > > + > > + > > --- ltp-full-20090331.orig/runtest/perfcounters 1970-01-01 > > 05:30:00.000000000 +0530 > > +++ ltp-full-20090331/runtest/perfcounters 2009-04-01 17:48:30.000000000 > > +0530 > > @@ -0,0 +1,4 @@ > > +# Test some Basic Performance Counters > > + > > +performance_counter01 performance_counter01 > > + > > --- ltp-full-20090331.orig/testcases/kernel/performance_counters/Makefile > > 1970-01-01 05:30:00.000000000 +0530 > > +++ ltp-full-20090331/testcases/kernel/performance_counters/Makefile > > 2009-04-01 17:45:40.000000000 +0530 > > @@ -0,0 +1,31 @@ > > +# > > +# Copyright (c) International Business Machines Corp., 2009 > > +# > > +# This program is free software; you can redistribute it and/or modify > > +# it under the terms of the GNU General Public License as published by > > +# the Free Software Foundation; either version 2 of the License, or > > +# (at your option) any later version. > > +# > > +# This program is distributed in the hope that it will be useful, > > +# but WITHOUT ANY WARRANTY; without even the implied warranty of > > +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See > > +# the GNU General Public License for more details. > > +# > > +# You should have received a copy of the GNU General Public License > > +# along with this program; if not, write to the Free Software > > +# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 > > USA > > +# > > + > > +CFLAGS += -I../../../include -Wall > > +LDLIBS += -L../../../lib -lltp > > + > > +SRCS = $(wildcard *.c) > > +TARGETS = $(patsubst %.c,%,$(SRCS)) > > + > > +all: $(TARGETS) > > + > > +install: > > + @set -e; for i in $(TARGETS); do ln -f $$i ../../bin/$$i ; done > > + > > +clean: > > + rm -f $(TARGETS) > > diff -uprN > > ltp-full-20090331.orig/testcases/kernel/performance_counters/performance_counter01.c > > > > ltp-full-20090331/testcases/kernel/performance_counters/performance_counter01.c > > --- > > ltp-full-20090331.orig/testcases/kernel/performance_counters/performance_counter01.c > > 1970-01-01 05:30:00.000000000 +0530 > > +++ > > ltp-full-20090331/testcases/kernel/performance_counters/performance_counter01.c > > 2009-04-01 17:38:05.000000000 +0530 > > @@ -0,0 +1,98 @@ > > +/******************************************************************************/ > > +/* > > */ > > +/* Ingo Molnar <[email protected]>, 2009 > > */ > > +/* > > */ > > +/* This program is free software; you can redistribute it and/or modify > > */ > > +/* it under the terms of the GNU General Public License as published by > > */ > > +/* the Free Software Foundation; either version 2 of the License, or > > */ > > +/* (at your option) any later version. > > */ > > +/* > > */ > > +/* This program is distributed in the hope that it will be useful, > > */ > > +/* but WITHOUT ANY WARRANTY; without even the implied warranty of > > */ > > +/* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See > > */ > > +/* the GNU General Public License for more details. > > */ > > +/* > > */ > > +/* You should have received a copy of the GNU General Public License > > */ > > +/* along with this program; if not, write to the Free Software > > */ > > +/* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA > > */ > > +/* > > */ > > +/******************************************************************************/ > > + > > +/* > > + * Very simple performance counter testcase. > > + * Picked up from: http://lkml.org/lkml/2008/12/5/17 > > + */ > > +#include <sys/syscall.h> > > +#include <sys/types.h> > > +#include <sys/ioctl.h> > > +#include <sys/stat.h> > > +#include <sys/time.h> > > +#include <sys/uio.h> > > +#include <linux/unistd.h> > > + > > +#include <assert.h> > > +#include <unistd.h> > > +#include <stdlib.h> > > +#include <unistd.h> > > +#include <string.h> > > +#include <stdio.h> > > +#include <fcntl.h> > > + > > +/* Harness Specific Include Files. */ > > +#include "test.h" > > +#include "usctest.h" > > + > > +#ifdef __x86_64__ > > +# define __NR_perf_counter_open 295 > > +#endif > > + > > +#ifdef __i386__ > > +# define __NR_perf_counter_open 333 > > +#endif > > + > > +/* Extern Global Variables */ > > +extern int Tst_count; /* counter for tst_xxx routines. > > */ > > +extern char *TESTDIR; /* temporary dir created by > > tst_tmpdir() */ > > +/* Global Variables */ > > +char *TCID = "performance_counter01"; /* test program identifier. > > */ > > +int TST_TOTAL = 1; > > + > > +int perf_counter_open(int hw_event_type, > > + unsigned int hw_event_period, > > + unsigned int record_type, > > + pid_t pid, > > + int cpu) > > +{ > > + return syscall(__NR_perf_counter_open, hw_event_type, hw_event_period, > > + record_type, pid, cpu); > > +} > > + > > +enum hw_event_types { > > + PERF_COUNT_CYCLES, > > + PERF_COUNT_INSTRUCTIONS, > > + PERF_COUNT_CACHE_REFERENCES, > > + PERF_COUNT_CACHE_MISSES, > > + PERF_COUNT_BRANCH_INSTRUCTIONS, > > + PERF_COUNT_BRANCH_MISSES, > > +}; > > + > > +int main(void) { > > + unsigned long long count1, count2; > > + int fd1, fd2, ret; > > + fd1 = perf_counter_open(PERF_COUNT_INSTRUCTIONS, 0, 0, 0, -1); > > + assert(fd1 >= 0); > > + fd2 = perf_counter_open(PERF_COUNT_CACHE_MISSES, 0, 0, 0, -1); > > + assert(fd1 >= 0); > > + > > + for (;;) { > > + ret = read(fd1, &count1, sizeof(count1)); > > + assert(ret == 8); > > + ret = read(fd2, &count2, sizeof(count2)); > > + assert(ret == 8); > > + printf("counter1 value: %Ld instructions\n", count1); > > + printf("counter2 value: %Ld cachemisses\n", count2); > > + sleep(1); > > + } > > + return 0; > > +} > > + > > > > --- > > Regards-- > > Subrata ------------------------------------------------------------------------------ _______________________________________________ Ltp-list mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/ltp-list
