diff -Naurb a/testcases/kernel/syscalls/rt_sigaction/rt_sigaction01.c b/testcases/kernel/syscalls/rt_sigaction/rt_sigaction01.c
--- a/testcases/kernel/syscalls/rt_sigaction/rt_sigaction01.c	2009-05-21 23:50:58.000000000 +0530
+++ b/testcases/kernel/syscalls/rt_sigaction/rt_sigaction01.c	2009-07-03 19:38:41.000000000 +0530
@@ -55,6 +55,15 @@
 #include "usctest.h"
 #include "linux_syscall_numbers.h"
 
+#if defined __mips__
+#define SIGSETSIZE 16
+#endif
+
+#if defined __arm__ || __i386__ || __powerpc__
+#define SIGSETSIZE 8
+#endif
+
+
 /* Extern Global Variables */
 extern int Tst_count;           /* counter for tst_xxx routines.         */
 extern char *TESTDIR;           /* temporary dir created by tst_tmpdir() */
@@ -117,58 +126,35 @@
 }
 
 int test_flags[] = {SA_RESETHAND|SA_SIGINFO, SA_RESETHAND, SA_RESETHAND|SA_SIGINFO, SA_RESETHAND|SA_SIGINFO, SA_NOMASK};
+char *test_flags_list[] = {"SA_RESETHAND|SA_SIGINFO", "SA_RESETHAND", "SA_RESETHAND|SA_SIGINFO", "SA_RESETHAND|SA_SIGINFO", "SA_NOMASK"};
 
 void
 handler(int sig)
 {
-        tst_resm(TINFO,"Here is signal handler. Got signal: %d, do nothing here\n", sig);
+        tst_resm(TINFO,"Signal Handler Called with signal number %d\n",sig);
         return;
 }
 
 int
-set_handler(int sig, int sig_to_mask, int flag, int mask_flags)
+set_handler(int sig, int sig_to_mask, int mask_flags)
 {
         struct sigaction sa, oldaction;
-        int err = 0;
 
-        if (flag == 0) {
-                tst_resm(TINFO,"flag0 - ");
-                sa.sa_sigaction = (void *)handler;
-                sa.sa_flags = mask_flags;
-                TEST(sigemptyset(&sa.sa_mask));
-                TEST(sigaddset(&sa.sa_mask, sig_to_mask));
-                TEST(err = syscall(__NR_rt_sigaction,sig, &sa, NULL,8));
-        } else if (flag == 1) {
-                tst_resm(TINFO,"flag1 - ");
-                TEST(err = syscall(__NR_rt_sigaction,sig, (void *)-1, NULL,8));
-        } else if (flag == 2) {
-               	tst_resm(TINFO,"flag2 - ");
-                TEST(err = syscall(__NR_rt_sigaction,sig, NULL, (void *)-1,8));
-	} else if (flag == 3) {
-                tst_resm(TINFO,"flag3 - ");
                 sa.sa_sigaction = (void *)handler;
                 sa.sa_flags = mask_flags;
-                TEST(sigemptyset(&sa.sa_mask));
-                TEST(sigaddset(&sa.sa_mask, sig_to_mask));
-                TEST(err = syscall(__NR_rt_sigaction,sig, &sa, &oldaction, 8));
-                if (TEST_RETURN == 0) {
-                        return 0;
-                } else {
-                        return TEST_ERRNO;
-                }
-        } else if (flag == 4){
-                        TEST(err = syscall(__NR_rt_sigaction,sig, &sa, NULL,9));
-        }
+                sigemptyset(&sa.sa_mask);
+                sigaddset(&sa.sa_mask, sig_to_mask);
+                TEST(syscall(__NR_rt_sigaction,sig, &sa, &oldaction,SIGSETSIZE));
         if (TEST_RETURN == 0) {
                 return 0;
         } else {
-                return TEST_ERRNO;
+                        return TEST_RETURN;
         }
 }
 
 
 int main(int ac, char **av) {
-	int retnval, i, j;
+	int signal, flag;
         int lc;                 /* loop counter */
         char *msg;              /* message returned from parse_opts */
 	
@@ -185,24 +171,26 @@
                 Tst_count = 0;
                 for (testno = 0; testno < TST_TOTAL; ++testno) {
                 
-			for (i = 0; i <= (SIGRTMAX + 1); i++){//signal for 0 to 65 
-	    			tst_resm(TINFO,"Signal : %d",i);
-			                for (j = 0; j < 4; j++){
-			                       	 TEST(retnval = set_handler(i, 0, j, test_flags[j]));
+			for (signal = SIGRTMIN; signal <= (SIGRTMAX ); signal++){//signal for 34 to 65 
+			 	for(flag=0; flag<5;flag++) {
+	                        	 TEST(set_handler(signal, 0, test_flags[flag]));
 						 if (TEST_RETURN == 0) {
-        						tst_resm(TPASS, "rt_sigaction call succeeded: result = %d",TEST_RETURN);
+        					tst_resm(TINFO,"signal: %d ", signal);
+        					tst_resm(TPASS, "rt_sigaction call succeeded: result = %d ",TEST_RETURN );
+        					tst_resm(TINFO, "sa.sa_flags = %s ",test_flags_list[flag]);
+						kill(getpid(),signal);
 			                         } else {
                  	   				tst_resm(TFAIL, "%s failed - errno = %d : %s", TCID, TEST_ERRNO, strerror(TEST_ERRNO));
-							cleanup();
-							tst_exit();
                        				}
                 			}
+		 	printf("\n");	
         		}
 
 
 
                 }
         }	
+	cleanup();
         tst_exit();
 }
 
diff -Naurb a/testcases/kernel/syscalls/rt_sigaction/rt_sigaction02.c b/testcases/kernel/syscalls/rt_sigaction/rt_sigaction02.c
--- a/testcases/kernel/syscalls/rt_sigaction/rt_sigaction02.c	1970-01-01 05:30:00.000000000 +0530
+++ b/testcases/kernel/syscalls/rt_sigaction/rt_sigaction02.c	2009-07-03 19:24:26.000000000 +0530
@@ -0,0 +1,183 @@
+/******************************************************************************/
+/* Copyright (c) Crackerjack Project., 2007                                   */
+/*                                                                            */
+/* 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:        rt_sigaction02.c                                              */
+/*                                                                            */
+/* Description: This tests the rt_sigaction() syscall                         */
+/*		rt_sigaction Expected EFAULT error check                      */
+/*                                                                            */
+/* Usage:  <for command-line>                                                 */
+/* rt_sigaction02 [-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:   rt_sigaction02                                             */
+/* History:     Porting from Crackerjack to LTP is done by                    */
+/*              Manas Kumar Nayak maknayak@in.ibm.com>                        */
+/******************************************************************************/
+#include <stdio.h>
+#include <stdlib.h>
+#include <unistd.h>
+#include <signal.h>
+#include <errno.h>
+#include <sys/syscall.h>
+#include <string.h>
+
+/* Harness Specific Include Files. */
+#include "test.h"
+#include "usctest.h"
+#include "linux_syscall_numbers.h"
+
+#if defined __mips__
+#define SIGSETSIZE 16
+#endif
+
+#if defined __arm__ || __i386__ || __powerpc__
+#define SIGSETSIZE 8
+#endif
+
+#define INVAL_STRUCT -1
+
+/* 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 = "rt_sigaction02";  /* Test program identifier.*/
+int  testno;
+int  TST_TOTAL = 1;                   /* total number of tests in this file.   */
+
+/* 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 test_flags[] = {SA_RESETHAND|SA_SIGINFO, SA_RESETHAND, SA_RESETHAND|SA_SIGINFO, SA_RESETHAND|SA_SIGINFO, SA_NOMASK};
+char *test_flags_list[] = {"SA_RESETHAND|SA_SIGINFO", "SA_RESETHAND", "SA_RESETHAND|SA_SIGINFO", "SA_RESETHAND|SA_SIGINFO", "SA_NOMASK"};
+
+struct test_case_t {
+        int exp_errno;
+        char *errdesc;
+} test_cases[] = {
+	{ EFAULT, "EFAULT" }
+};
+
+
+int main(int ac, char **av) {
+	int signal, flag;
+        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) {
+                
+			for (signal = SIGRTMIN; signal <= (SIGRTMAX ); signal++){//signal for 34 to 65 
+			 	for(flag=0; flag<5;flag++) {
+
+				/*   							        *
+				 * long sys_rt_sigaction (int sig, const struct sigaction *act, *
+				 * truct sigaction *oact, size_t sigsetsize);			*
+				 * EFAULT:							*
+		        	 * An invalid act or oact value was specified 			*
+				 */
+
+					 TEST(syscall(__NR_rt_sigaction,signal, INVAL_STRUCT, NULL,SIGSETSIZE));
+					if((TEST_RETURN == -1) && (TEST_ERRNO == test_cases[0].exp_errno)) {
+        						tst_resm(TINFO, "sa.sa_flags = %s ",test_flags_list[flag]);
+                 	   				tst_resm(TPASS, "%s failure with sig: %d as expected errno  = %s : %s", TCID, signal,test_cases[0].errdesc, strerror(TEST_ERRNO));
+			                         } else {
+        					tst_resm(TFAIL, "rt_sigaction call succeeded: result = %d got error %d:but expected  %d", TEST_RETURN, TEST_ERRNO, test_cases[0].exp_errno);
+        					tst_resm(TINFO, "sa.sa_flags = %s ",test_flags_list[flag]);
+						}
+                			}
+		 	printf("\n");	
+        		}
+
+
+
+                }
+        }	
+	cleanup();
+        tst_exit();
+}
+
diff -Naurb a/testcases/kernel/syscalls/rt_sigaction/rt_sigaction03.c b/testcases/kernel/syscalls/rt_sigaction/rt_sigaction03.c
--- a/testcases/kernel/syscalls/rt_sigaction/rt_sigaction03.c	1970-01-01 05:30:00.000000000 +0530
+++ b/testcases/kernel/syscalls/rt_sigaction/rt_sigaction03.c	2009-07-03 19:24:12.000000000 +0530
@@ -0,0 +1,200 @@
+/******************************************************************************/
+/* Copyright (c) Crackerjack Project., 2007                                   */
+/*                                                                            */
+/* 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:        rt_sigaction03.c                                              */
+/*                                                                            */
+/* Description: This tests the rt_sigaction() syscall                         */
+/*		rt_sigaction Expected EINVAL error check                      */
+/*                                                                            */
+/* Usage:  <for command-line>                                                 */
+/* rt_sigaction03 [-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:   rt_sigaction03                                             */
+/* History:     Porting from Crackerjack to LTP is done by                    */
+/*              Manas Kumar Nayak maknayak@in.ibm.com>                        */
+/******************************************************************************/
+#include <stdio.h>
+#include <stdlib.h>
+#include <unistd.h>
+#include <signal.h>
+#include <errno.h>
+#include <sys/syscall.h>
+#include <string.h>
+
+/* Harness Specific Include Files. */
+#include "test.h"
+#include "usctest.h"
+#include "linux_syscall_numbers.h"
+
+#define INVAL_SIGSETSIZE -1
+
+/* 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 = "rt_sigaction03";  /* Test program identifier.*/
+int  testno;
+int  TST_TOTAL = 1;                   /* total number of tests in this file.   */
+
+/* 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 test_flags[] = {SA_RESETHAND|SA_SIGINFO, SA_RESETHAND, SA_RESETHAND|SA_SIGINFO, SA_RESETHAND|SA_SIGINFO, SA_NOMASK};
+char *test_flags_list[] = {"SA_RESETHAND|SA_SIGINFO", "SA_RESETHAND", "SA_RESETHAND|SA_SIGINFO", "SA_RESETHAND|SA_SIGINFO", "SA_NOMASK"};
+
+
+struct test_case_t {
+        int exp_errno;
+        char *errdesc;
+} test_cases[] = {
+	{ EINVAL, "EINVAL" }
+};
+
+void
+handler(int sig)
+{
+        tst_resm(TINFO,"Signal Handler Called with signal number %d\n",sig);
+        return;
+}
+
+int
+set_handler(int sig, int sig_to_mask, int mask_flags)
+{
+        struct sigaction sa, oldaction;
+
+                sa.sa_sigaction = (void *)handler;
+                sa.sa_flags = mask_flags;
+                sigemptyset(&sa.sa_mask);
+                sigaddset(&sa.sa_mask, sig_to_mask);
+
+		/*   							        *
+		 * long sys_rt_sigaction (int sig, const struct sigaction *act, *
+		 * truct sigaction *oact, size_t sigsetsize);			* 
+		 * EINVAL:							*
+        	 * sigsetsize was not equivalent to the size of a sigset_t type *
+		 */
+
+                TEST(syscall(__NR_rt_sigaction,sig, &sa , &oldaction,INVAL_SIGSETSIZE));
+                if (TEST_RETURN == 0) {
+                        return 0;
+                } else {
+                        return TEST_RETURN;
+                }
+}
+
+
+int main(int ac, char **av) {
+	int signal, flag;
+        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) {
+                
+			for (signal = SIGRTMIN; signal <= (SIGRTMAX ); signal++){//signal for 34 to 65 
+			 	for(flag=0; flag<5;flag++) {
+	                        	 TEST(set_handler(signal, 0, test_flags[flag]));
+					if((TEST_RETURN == -1) && (TEST_ERRNO == test_cases[0].exp_errno)) {
+        						tst_resm(TINFO, "sa.sa_flags = %s ",test_flags_list[flag]);
+                 	   				tst_resm(TPASS, "%s failure with sig: %d as expected errno  = %s : %s", TCID, signal,test_cases[0].errdesc, strerror(TEST_ERRNO));
+			                         } else {
+        					tst_resm(TFAIL, "rt_sigaction call succeeded: result = %d got error %d:but expected  %d", TEST_RETURN, TEST_ERRNO, test_cases[0].exp_errno);
+        					tst_resm(TINFO, "sa.sa_flags = %s ",test_flags_list[flag]);
+						}
+                			}
+		 	printf("\n");	
+        		}
+
+
+
+                }
+        }	
+	cleanup();
+        tst_exit();
+}
+
