-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 Subrata Modak wrote: > On Tue, 2009-04-14 at 17:31 +0530, Maxin John wrote: >> Hi Subrata, >> >> As I have already mentioned, I have no objections in contributing this >> test to LTP under GPL License. > > Thanks. > >> In fact, I have joined LTP mailing list today and will try to >> contribute to LTP whenever possible. > > ThatÅ› great. > > Regards-- > Subrata >
Hi All, sys_cacheflush syscall is available for sh4 too. Once this will be included in the LTP suite, we will test/adapt it for sh4 and provide our feedback. Cheers, Carmelo >> Warm Regards, >> Maxin B. John >> >> >> On Tue, Apr 14, 2009 at 4:10 PM, Subrata Modak >> <[email protected]> wrote: >>> Hi John, >>> >>> On Mon, 2009-04-13 at 17:57 +0530, Manas K Nayak wrote: >>>> Hi John, >>>> >>>>> cacheflush man page states that cacheflush() will set EINVAL if cache >>>>> parameter is not one of ICACHE, DCACHE, or BCACHE. >>>>> In order to confirm this behavior, I have executed the below listed >>>>> program (cacheflush_check.c) in Toshiba RBTX4937 board (MIPS) with >>>>> 2.6.29.1 kernel. >>>> I picked up this test program written by you and ported the same to LTP >>>> under GPL. It would be great if you do not have any objection in >>>> contributing this test to LTP. The below patch does exactly that. >>> Do you have any objection in contributing this test to LTP ? >>> >>> Regards-- >>> Subrata >>> >>>> Original-Author: Maxin John <[email protected]>, >>>> Ported-To-LTP-By: Manas K Nayak <[email protected]>, >>>> --- >>>> >>>> --- >>>> ltp-full-20090331.orig/testcases/kernel/syscalls/cacheflush/cacheflush01.c >>>> 1970-01-01 05:30:00.000000000 +0530 >>>> +++ ltp-full-20090331/testcases/kernel/syscalls/cacheflush/cacheflush01.c >>>> 2009-04-13 17:33:00.000000000 +0530 >>>> @@ -0,0 +1,192 @@ >>>> +/******************************************************************************/ >>>> +/* Copyright (c) Maxin John <[email protected]>, 2009 >>>> */ >>>> +/* LKML Reference: http://lkml.org/lkml/2009/4/9/203 >>>> */ >>>> +/* 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 */ >>>> +/* >>>> */ >>>> +/******************************************************************************/ >>>> +/******************************************************************************/ >>>> +/* >>>> */ >>>> +/* File: cacheflush01.c >>>> */ >>>> +/* >>>> */ >>>> +/* Description: The cacheflush_check() syscall >>>> */ >>>> +/* Tests EINVAL error of cacheflush system call. >>>> */ >>>> +/* Its expected behaviour is cacheflush() should return -EINVAL >>>> */ >>>> +/* when cache parameter is not one of ICACHE, DCACHE, or >>>> BCACHE. */ >>>> +/* >>>> */ >>>> +/* Usage: <for command-line> >>>> */ >>>> +/* cacheflush01 [-c n] [-e][-i n] [-I x] [-p x] [-t] >>>> */ >>>> +/* where, -c n : Run n copies concurrently. >>>> */ >>>> +/* -e : Turn on errno logging. >>>> */ >>>> +/* -i n : Execute test n times. >>>> */ >>>> +/* -I x : Execute test for x seconds. >>>> */ >>>> +/* -P x : Pause for x seconds between iterations. >>>> */ >>>> +/* -t : Turn on syscall timing. >>>> */ >>>> +/* >>>> */ >>>> +/* Total Tests: 1 >>>> */ >>>> +/* >>>> */ >>>> +/* Test Name: cacheflush01 >>>> */ >>>> +/******************************************************************************/ >>>> + >>>> +#include <sys/syscall.h> >>>> +#include <unistd.h> >>>> +#include <stdio.h> >>>> +#include <stdlib.h> >>>> +#include <errno.h> >>>> + >>>> +#if defined __mips__ >>>> +#include <asm/cachectl.h> >>>> +int cacheflush(char *addr, int nbytes, int cache) >>>> +{ >>>> +B B B B return syscall(__NR_cacheflush, addr, nbytes, cache); >>>> +} >>>> +#endif /* __mips__ */ >>>> + >>>> +#ifndef ICACHE >>>> +#define ICACHE (1<<0) /* flush instruction cache */ >>>> +#endif >>>> +#ifndef DCACHE >>>> +#define DCACHE (1<<1) /* writeback and flush data cache */ >>>> +#endif >>>> +#ifndef BCACHE >>>> +#define BCACHE (ICACHE|DCACHE) /* flush both caches */ >>>> +#endif >>>> + >>>> +/* Harness Specific Incnude Files. */ >>>> +#include "test.h" >>>> +#include "usctest.h" >>>> +#include "linux_syscall_numbers.h" >>>> + >>>> +/* 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 = "cacheflush01"; /* Test program identifier.*/ >>>> +int testno; >>>> +int TST_TOTAL = 1; /* total number of tests in this >>>> file. */ >>>> + >>>> +#if defined __mips__ >>>> +/* Extern Global Functions */ >>>> +/******************************************************************************/ >>>> +/* >>>> */ >>>> +/* Function: cleanup >>>> */ >>>> +/* >>>> */ >>>> +/* Description: Performs all one time clean up for this test on >>>> successful */ >>>> +/* completion, premature exit or failure. Closes all >>>> temporary */ >>>> +/* files, removes all temporary directories exits the test >>>> with */ >>>> +/* appropriate return code by calling tst_exit() function. >>>> */ >>>> +/* >>>> */ >>>> +/* Input: None. >>>> */ >>>> +/* >>>> */ >>>> +/* Output: None. >>>> */ >>>> +/* >>>> */ >>>> +/* Return: On failure - Exits calling tst_exit(). Non '0' return >>>> code. */ >>>> +/* On success - Exits calling tst_exit(). With '0' return >>>> code. */ >>>> +/* >>>> */ >>>> +/******************************************************************************/ >>>> +extern void cleanup() { >>>> + /* Remove tmp dir and all files in it */ >>>> + TEST_CLEANUP; >>>> + tst_rmdir(); >>>> + >>>> + /* Exit with appropriate return code. */ >>>> + tst_exit(); >>>> +} >>>> + >>>> +/* Local Functions */ >>>> +/******************************************************************************/ >>>> +/* >>>> */ >>>> +/* Function: setup >>>> */ >>>> +/* >>>> */ >>>> +/* Description: Performs all one time setup for this test. This function >>>> is */ >>>> +/* typically used to capture signals, create temporary dirs >>>> */ >>>> +/* and temporary files that may be used in the course of >>>> this */ >>>> +/* test. >>>> */ >>>> +/* >>>> */ >>>> +/* Input: None. >>>> */ >>>> +/* >>>> */ >>>> +/* Output: None. >>>> */ >>>> +/* >>>> */ >>>> +/* Return: On failure - Exits by calling cleanup(). >>>> */ >>>> +/* On success - returns 0. >>>> */ >>>> +/* >>>> */ >>>> +/******************************************************************************/ >>>> +void setup() { >>>> + /* Capture signals if any */ >>>> + /* Create temporary directories */ >>>> + TEST_PAUSE; >>>> + tst_tmpdir(); >>>> +} >>>> + >>>> +int main(int ac, char **av) { >>>> + >>>> + /* cacheflush man page states that cacheflush() is only >>>> applicable to MIPS architecture */ >>>> + char *addr = NULL; >>>> + int lc; /* loop counter */ >>>> + char *msg; /* message returned from parse_opts */ >>>> + >>>> + /* parse standard options */ >>>> + if ((msg = parse_opts(ac, av, (option_t *)NULL, NULL)) != (char >>>> *)NULL){ >>>> + tst_brkm(TBROK, cleanup, "OPTION PARSING ERROR - %s", msg); >>>> + tst_exit(); >>>> + } >>>> + >>>> + setup(); >>>> + >>>> + /* Check looping state if -i option given */ >>>> + for (lc = 0; TEST_LOOPING(lc); ++lc) { >>>> + Tst_count = 0; >>>> + for (testno = 0; testno < TST_TOTAL; ++testno) { >>>> + /* Create some user address range */ >>>> + addr = malloc(getpagesize()); >>>> + if (addr == NULL) { >>>> + tst_resm(TFAIL, "%s, Malloc error errno = %d : >>>> %s",TCID, TEST_ERRNO, strerror(TEST_ERRNO)); >>>> + cleanup(); >>>> + tst_exit(); >>>> + } >>>> + >>>> + /* Invokes cacheflush() with proper parameters */ >>>> + TEST(cacheflush(addr, getpagesize(), ICACHE)); >>>> + TEST(cacheflush(addr, getpagesize(), DCACHE)); >>>> + TEST(cacheflush(addr, getpagesize(), BCACHE)); >>>> + >>>> + /* Tests whether cacheflush() returns -EINVAL */ >>>> + TEST(cacheflush(addr, getpagesize(), 0)); >>>> + if(TEST_RETURN < 0){ >>>> + if (TEST_ERRNO == EINVAL) { >>>> + tst_resm(TPASS, "%s PASS -with expected >>>> errno = %d : %s\n", TCID, TEST_ERRNO, strerror(TEST_ERRNO)); >>>> + cleanup(); >>>> + tst_exit(); >>>> + } else { >>>> + tst_resm(TFAIL, "%s FAIL -with unexpected >>>> errno = %d : %s\n", TCID, TEST_ERRNO, strerror(TEST_ERRNO)); >>>> + cleanup(); >>>> + tst_exit(); >>>> + } >>>> + } >>>> + tst_resm(TFAIL, "%s FAIL -with unexpected errno = %d : >>>> %s\n", TCID, TEST_ERRNO, strerror(TEST_ERRNO)); >>>> + cleanup(); >>>> + } >>>> + >>>> + } >>>> + tst_exit(); >>>> +} >>>> + >>>> +#else >>>> +int main(int ac, char **av) { >>>> + >>>> + tst_resm(TCONF, "is not available for this architecture"); >>>> + tst_exit(); >>>> +} >>>> +#endif >>>> --- ltp-full-20090331.orig/testcases/kernel/syscalls/cacheflush/Makefile >>>> 1970-01-01 05:30:00.000000000 +0530 >>>> +++ ltp-full-20090331/testcases/kernel/syscalls/cacheflush/Makefile >>>> 2009-04-13 17:16:11.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) >>>> --- ltp-full-20090331.orig/runtest/syscalls 2009-04-13 >>>> 17:43:04.000000000 +0530 >>>> +++ ltp-full-20090331/runtest/syscalls 2009-04-13 >>>> 17:35:46.000000000 +0530 >>>> @@ -36,6 +36,8 @@ capget02 capget02 >>>> capset01 capset01 >>>> capset02 capset02 >>>> >>>> +cacheflush01 cacheflush01 >>>> + >>>> chdir01 chdir01 >>>> chdir01A symlink01 -T chdir01 >>>> chdir02 chdir02 >>>> >>>> --- >>>> Regards-- >>>> Manas >>>> >>>> >>>> ------------------------------------------------------------------------------ >>>> This SF.net email is sponsored by: >>>> High Quality Requirements in a Collaborative Environment. >>>> Download a free trial of Rational Requirements Composer Now! >>>> http://p.sf.net/sfu/www-ibm-com >>>> _______________________________________________ Ltp-list mailing list >>>> [email protected] >>>> https://lists.sourceforge.net/lists/listinfo/ltp-list >>> > > > ------------------------------------------------------------------------------ > This SF.net email is sponsored by: > High Quality Requirements in a Collaborative Environment. > Download a free trial of Rational Requirements Composer Now! > http://p.sf.net/sfu/www-ibm-com > _______________________________________________ > Ltp-list mailing list > [email protected] > https://lists.sourceforge.net/lists/listinfo/ltp-list -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.9 (GNU/Linux) Comment: Using GnuPG with Fedora - http://enigmail.mozdev.org iEYEARECAAYFAknknnAACgkQoRq/3BrK1s/SXQCgqrq6kjF2Nu5Wtlt8uedtsfpD daEAnjvrA0h5YixwQbSrdGwKcSB6EQHt =An05 -----END PGP SIGNATURE----- ------------------------------------------------------------------------------ This SF.net email is sponsored by: High Quality Requirements in a Collaborative Environment. Download a free trial of Rational Requirements Composer Now! http://p.sf.net/sfu/www-ibm-com _______________________________________________ Ltp-list mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/ltp-list
