On Mon, 2009-08-24 at 21:48 +0800, CAI Qian wrote:
> v3: simplify reporting by using TERRNO.
>
> v2: remove unneeded linux_syscall_numbers.h and simplify the checking of
> errno according to Mike's suggestion.
>
> When no unshare function found during the build-time checking or the
> kernel returns ENOSYS, it reports TCONF. It also simplify logic a little
> bit and fix some coding style issues. In addition, the original test
> expects the following call to return 0,
>
> TEST_RETURN = unshare(-1);
>
> and checking TEST_ERRNO for errors. Those look like incorrect, since
> "-1" looks like an invalid flag, and TEST_ERRNO does not set to errno
> from the syscall. It has been modified to expect,
>
> TEST_RETURN = -1;
> errno = EINVAL;
>
> Signed-off-by: CAI Qian <[email protected]>
Thanks.
Regards--
Subrata
>
> testcases/kernel/syscalls/unshare/unshare02.c | 78
> ++++++++++++++++---------
> 1 files changed, 51 insertions(+), 27 deletions(-)
>
> diff --git a/testcases/kernel/syscalls/unshare/unshare02.c
> b/testcases/kernel/syscalls/unshare/unshare02.c
> index 1075936..1b2f125 100644
> --- a/testcases/kernel/syscalls/unshare/unshare02.c
> +++ b/testcases/kernel/syscalls/unshare/unshare02.c
> @@ -56,7 +56,7 @@
> /* Harness Specific Include Files. */
> #include "test.h"
> #include "usctest.h"
> -#include "linux_syscall_numbers.h"
> +#include "config.h"
>
> /* Extern Global Variables */
> extern int Tst_count; /* counter for tst_xxx routines. */
> @@ -67,6 +67,8 @@ char *TCID = "unshare02"; /* Test program identifier.*/
> int testno;
> int TST_TOTAL = 2; /* total number of tests in this file.
> */
>
> +#ifdef HAVE_UNSHARE
> +
> /* Extern Global Functions */
>
> /******************************************************************************/
> /*
> */
> @@ -141,37 +143,53 @@ int main(int ac, char **av) {
> *fork a child process;testing which one is a child or a parent;
> * */
> TEST(pid1=fork()); //call to fork()
> - if (TEST_RETURN == -1){
> - tst_resm(TFAIL, "fork() Failed, errno=%d :
> %s",TEST_ERRNO, strerror(TEST_ERRNO));
> - cleanup();
> - tst_exit();
> - }
> - else if (TEST_RETURN == 0){
> - if((TEST_RETURN = unshare(-1)) == 0) {
> - tst_resm(TPASS, "Call succeeded");
> + if (TEST_RETURN == -1) {
> + tst_resm(TFAIL|TTERRNO,
> + "fork() failed.");
> + cleanup();
> tst_exit();
> + } else if (TEST_RETURN == 0) {
> + TEST_RETURN = unshare(-1);
> + if (TEST_RETURN == 0)
> + tst_resm(TFAIL,
> + "Call unexpectedly succeeded.");
> + else if (TEST_RETURN == -1) {
> + if (errno == EINVAL)
> + tst_resm(TPASS|TERRNO,
> + "Expect EINVAL.");
> + else if (errno == ENOSYS)
> + tst_resm(TCONF,
> + "unshare is not "
> + "implemented in kernel."
> + );
> + else
> + tst_resm(TFAIL|TERRNO,
> + "Test failed.");
> }
> - else if (TEST_RETURN == -1 ){
> - tst_resm(TFAIL,"Test Failed, errno=%d :
> %s",TEST_ERRNO, strerror(TEST_ERRNO));
> - tst_exit();
> - }
> + tst_exit();
> }
>
> TEST(pid1=fork()); //call to fork()
> - if (pid1 == -1){
> - tst_resm(TFAIL, "fork() Failed, errno=%d :
> %s",TEST_ERRNO, strerror(TEST_ERRNO));
> - cleanup();
> - tst_exit();
> - }
> - else if (TEST_RETURN == 0){
> - if((TEST_RETURN = unshare((int)NULL)) == 0) {
> - tst_resm(TPASS, "Call succeeded");
> + if (pid1 == -1) {
> + tst_resm(TFAIL|TTERRNO,
> + "fork() failed.");
> + cleanup();
> + tst_exit();
> + } else if (TEST_RETURN == 0) {
> + TEST_RETURN = unshare((int)NULL);
> + if (TEST_RETURN == 0)
> + tst_resm(TPASS, "Call succeeded");
> + else if (TEST_RETURN == -1) {
> + if (errno == ENOSYS)
> + tst_resm(TCONF,
> + "unshare is not "
> + "implemented in kernel."
> + );
> + else
> + tst_resm(TFAIL|TERRNO,
> + "Test failed 2. ");
> + }
> tst_exit();
> - }
> - else if (TEST_RETURN == -1 ){
> - tst_resm(TFAIL,"Test Failed 2,
> errno=%d : %s",TEST_ERRNO, strerror(TEST_ERRNO));
> - tst_exit();
> - }
> }
>
>
> @@ -180,4 +198,10 @@ int main(int ac, char **av) {
> cleanup();
> tst_exit();
> }
> -
> +#else
> +int main(void)
> +{
> + tst_resm(TCONF, "unshare is undefined.");
> + return 0;
> +}
> +#endif
>
> ------------------------------------------------------------------------------
> Let Crystal Reports handle the reporting - Free Crystal Reports 2008 30-Day
> trial. Simplify your report design, integration and deployment - and focus on
> what you do best, core application coding. Discover what's new with
> Crystal Reports now. http://p.sf.net/sfu/bobj-july
> _______________________________________________
> Ltp-list mailing list
> [email protected]
> https://lists.sourceforge.net/lists/listinfo/ltp-list
------------------------------------------------------------------------------
Let Crystal Reports handle the reporting - Free Crystal Reports 2008 30-Day
trial. Simplify your report design, integration and deployment - and focus on
what you do best, core application coding. Discover what's new with
Crystal Reports now. http://p.sf.net/sfu/bobj-july
_______________________________________________
Ltp-list mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/ltp-list