* 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!
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