On Mon, 2010-08-16 at 17:05 +0530, Harsh Prateek Bora wrote:
> Current testcase for setrlimit resource RLIMIT_FSIZE
> is using a global integer variable to communicate the number of
> bytes from child to parent which is incorrect. This
> has been corrected by introducing a pipe to transfer
> this information from child to parent process.
> 
> Signed-off-by: Harsh Prateek Bora <[email protected]>
> ---
>  testcases/kernel/syscalls/setrlimit/setrlimit01.c |   15 +++++++++++++++
>  1 files changed, 15 insertions(+), 0 deletions(-)
> 
> diff --git a/testcases/kernel/syscalls/setrlimit/setrlimit01.c 
> b/testcases/kernel/syscalls/setrlimit/setrlimit01.c
> index 6952eb3..2bb1e9d 100644
> --- a/testcases/kernel/syscalls/setrlimit/setrlimit01.c
> +++ b/testcases/kernel/syscalls/setrlimit/setrlimit01.c
> @@ -156,7 +156,11 @@ void test2()
>        * an wired value!  So, it is essential to fflush the parent's
>        * write buffer HERE
>        */
> +     int pipefd[2];
>       fflush(stdout);
> +     if (pipe(pipefd) == -1) {
> +             tst_brkm(TBROK | TERRNO, NULL, "pipe creation failed");
> +     }
> 
>       /*
>        * Spawn a child process, and reduce the filesize to
> @@ -170,6 +174,7 @@ void test2()
>       }
> 
>       if (pid == 0) {
> +             close(pipefd[0]); /* close unused read end */
>               rlim.rlim_cur = 10;
>               rlim.rlim_max = 10;
>               if ((setrlimit(RLIMIT_FSIZE, &rlim)) == -1) {
> @@ -181,6 +186,11 @@ void test2()
>               }
> 
>               if ((bytes = write(fd, buf, 26)) != 10) {
> +                     if (write(pipefd[1], &bytes, sizeof(bytes))
> +                             < sizeof(bytes)) {
> +                             perror("child: write to pipe failed");

You still uses perror() here. Use tst_resm() instead.

Regards--
Subrata

> +                     }
> +                     close(pipefd[1]); /* EOF */
>                       exit(3);
>               }
>               exit(0);        /* success */
> @@ -202,6 +212,11 @@ void test2()
>               tst_resm(TFAIL, "creating testfile failed");
>               break;
>       case 3:
> +             close(pipefd[1]); /* close unused write end */
> +             if (read(pipefd[0], &bytes, sizeof(bytes)) < sizeof(bytes)) {
> +                     tst_resm(TFAIL, "parent: reading pipe failed");
> +             }
> +             close(pipefd[0]);
>               tst_resm(TFAIL, "setrlimit failed, expected "
>                        "10 got %d", bytes);
>               break;


------------------------------------------------------------------------------
This SF.net email is sponsored by 

Make an app they can't live without
Enter the BlackBerry Developer Challenge
http://p.sf.net/sfu/RIM-dev2dev 
_______________________________________________
Ltp-list mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/ltp-list

Reply via email to