Update of /cvsroot/ltp/ltp/testcases/kernel/ipc/ipc_stress In directory ddv4jf1.ch3.sourceforge.com:/tmp/cvs-serv4515/ltp/testcases/kernel/ipc/ipc_stress Modified Files: message_queue_test_01.c message_queue_test_02_ctl.c message_queue_test_02_get.c message_queue_test_02_rcv.c message_queue_test_02_snd.c message_queue_test_04.c message_queue_test_05.c pipe_test_01.c pipe_test_02.c semaphore_test_01.c semaphore_test_02.c semaphore_test_03.c shmem_test_01.c shmem_test_02.c shmem_test_03.c shmem_test_04.c shmem_test_05.c shmem_test_06.c shmem_test_07.c signal_test_01.c signal_test_02.c signal_test_03.c signal_test_04.c signal_test_05.c signal_test_06.c signal_test_07.c Log Message: Clear Trailing Whitespace. Signed-off-by: Michal Simek <mo...@mo...>. Index: message_queue_test_02_rcv.c =================================================================== RCS file: /cvsroot/ltp/ltp/testcases/kernel/ipc/ipc_stress/message_queue_test_02_rcv.c,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** message_queue_test_02_rcv.c 10 Nov 2007 09:24:41 -0000 1.3 --- message_queue_test_02_rcv.c 26 Feb 2009 12:02:24 -0000 1.4 *************** *** 70,74 **** /* * Defines ! * * BUF_SIZE: size of message buffer... */ --- 70,74 ---- /* * Defines ! * * BUF_SIZE: size of message buffer... */ *************** *** 93,97 **** /* * Global variables ! * * project_name: Unique path used to create key (ftok) * project_id: Unique number used to create key (ftok) --- 93,97 ---- /* * Global variables ! * * project_name: Unique path used to create key (ftok) * project_id: Unique number used to create key (ftok) Index: message_queue_test_04.c =================================================================== RCS file: /cvsroot/ltp/ltp/testcases/kernel/ipc/ipc_stress/message_queue_test_04.c,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -d -r1.4 -r1.5 *** message_queue_test_04.c 10 Nov 2007 09:24:41 -0000 1.4 --- message_queue_test_04.c 26 Feb 2009 12:02:24 -0000 1.5 *************** *** 65,69 **** /* * Defines ! * * MAX_MSGS: maximum number of messages per queue (8192) */ --- 65,69 ---- /* * Defines ! * * MAX_MSGS: maximum number of messages per queue (8192) */ *************** *** 88,92 **** /* * Global variables ! * * log_filename: Name of log file */ --- 88,92 ---- /* * Global variables ! * * log_filename: Name of log file */ *************** *** 126,130 **** } ! /* * Print out program header */ --- 126,130 ---- } ! /* * Print out program header */ *************** *** 149,153 **** * * Determine the maximum number of bytes that the message ! * queue will hold. Then determine the message size * (Max num of bytes per queue / maximum num of messages per queue) */ --- 149,153 ---- * * Determine the maximum number of bytes that the message ! * queue will hold. Then determine the message size * (Max num of bytes per queue / maximum num of messages per queue) */ *************** *** 177,181 **** /* * Fill up the message queue ! * * Send bytes to the message queue until it fills up */ --- 177,181 ---- /* * Fill up the message queue ! * * Send bytes to the message queue until it fills up */ Index: message_queue_test_02_snd.c =================================================================== RCS file: /cvsroot/ltp/ltp/testcases/kernel/ipc/ipc_stress/message_queue_test_02_snd.c,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** message_queue_test_02_snd.c 10 Nov 2007 09:24:41 -0000 1.2 --- message_queue_test_02_snd.c 26 Feb 2009 12:02:24 -0000 1.3 *************** *** 70,74 **** /* * Defines ! * * BUF_SIZE: size of message buffer... */ --- 70,74 ---- /* * Defines ! * * BUF_SIZE: size of message buffer... */ *************** *** 96,100 **** /* * Global variables ! * * message: Message to store in queue * project_name: Unique path used to create key (ftok) --- 96,100 ---- /* * Global variables ! * * message: Message to store in queue * project_name: Unique path used to create key (ftok) Index: message_queue_test_01.c =================================================================== RCS file: /cvsroot/ltp/ltp/testcases/kernel/ipc/ipc_stress/message_queue_test_01.c,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -d -r1.4 -r1.5 *** message_queue_test_01.c 10 Sep 2008 08:14:46 -0000 1.4 --- message_queue_test_01.c 26 Feb 2009 12:02:24 -0000 1.5 *************** *** 76,80 **** /* * Defines ! * * BUF_SIZE: size of message buffer... */ --- 76,80 ---- /* * Defines ! * * BUF_SIZE: size of message buffer... */ Index: shmem_test_06.c =================================================================== RCS file: /cvsroot/ltp/ltp/testcases/kernel/ipc/ipc_stress/shmem_test_06.c,v retrieving revision 1.6 retrieving revision 1.7 diff -C2 -d -r1.6 -r1.7 *** shmem_test_06.c 29 Oct 2008 06:25:02 -0000 1.6 --- shmem_test_06.c 26 Feb 2009 12:02:24 -0000 1.7 *************** *** 84,98 **** /* Defines * ! * MAX_SHMEM_SIZE: maximum shared memory segment size of 256MB * ! * MAX_SHMEM_NUMBER: maximum number of simultaneous attached shared memory * regions * * DEFAULT_SHMEM_SIZE: default shared memory size, unless specified with * -s command line option ! * * SHMEM_MODE: shared memory access permissions (permit process to read * and write access) ! * * USAGE: usage statement */ --- 84,98 ---- /* Defines * ! * MAX_SHMEM_SIZE: maximum shared memory segment size of 256MB * ! * MAX_SHMEM_NUMBER: maximum number of simultaneous attached shared memory * regions * * DEFAULT_SHMEM_SIZE: default shared memory size, unless specified with * -s command line option ! * * SHMEM_MODE: shared memory access permissions (permit process to read * and write access) ! * * USAGE: usage statement */ *************** *** 120,124 **** /* * Global variables ! * * shmem_size: shared memory segment size (in bytes) */ --- 120,124 ---- /* * Global variables ! * * shmem_size: shared memory segment size (in bytes) */ *************** *** 140,151 **** { int i; ! int shmid[MAX_SHMEM_NUMBER]; /* (Unique) Shared memory identifier */ ! char *shmptr[MAX_SHMEM_NUMBER]; /* Shared memory segment address */ char *ptr; /* Index into shared memory segment */ ! int value = 0; /* Value written into shared memory segment */ ! key_t mykey[MAX_SHMEM_NUMBER]; char * null_file = "/dev/null"; --- 140,151 ---- { int i; ! int shmid[MAX_SHMEM_NUMBER]; /* (Unique) Shared memory identifier */ ! char *shmptr[MAX_SHMEM_NUMBER]; /* Shared memory segment address */ char *ptr; /* Index into shared memory segment */ ! int value = 0; /* Value written into shared memory segment */ ! key_t mykey[MAX_SHMEM_NUMBER]; char * null_file = "/dev/null"; *************** *** 153,158 **** '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'E' }; ! ! /* * Parse command line arguments and print out program header --- 153,158 ---- '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'E' }; ! ! /* * Parse command line arguments and print out program header *************** *** 160,165 **** parse_args (argc, argv); printf ("%s: IPC Shared Memory TestSuite program\n", *argv); ! ! for (i=0; i<offsets_cnt; i++) { char tmpstr[256]; --- 160,165 ---- parse_args (argc, argv); printf ("%s: IPC Shared Memory TestSuite program\n", *argv); ! ! for (i=0; i<offsets_cnt; i++) { char tmpstr[256]; *************** *** 167,184 **** * Create a key to uniquely identify the shared segment */ ! mykey[i] = ftok(null_file,proj[i]); ! printf ("\n\tmykey to uniquely identify the shared memory segment 0x%x\n",mykey[i]); ! printf ("\n\tGet shared memory segment (%d bytes)\n", shmem_size); /* * Obtain a unique shared memory identifier with shmget (). */ ! if ((long)(shmid[i]= shmget (mykey[i], shmem_size, IPC_CREAT | 0666 )) < 0) sys_error ("shmget failed", __LINE__); ! ! printf ("\n\tAttach shared memory segment to process\n"); --- 167,184 ---- * Create a key to uniquely identify the shared segment */ ! mykey[i] = ftok(null_file,proj[i]); ! printf ("\n\tmykey to uniquely identify the shared memory segment 0x%x\n",mykey[i]); ! printf ("\n\tGet shared memory segment (%d bytes)\n", shmem_size); /* * Obtain a unique shared memory identifier with shmget (). */ ! if ((long)(shmid[i]= shmget (mykey[i], shmem_size, IPC_CREAT | 0666 )) < 0) sys_error ("shmget failed", __LINE__); ! ! printf ("\n\tAttach shared memory segment to process\n"); *************** *** 195,236 **** } ! printf ("\n\tShared memory segment address : %p \n",shmptr[i]); ! printf ("\n\tIndex through shared memory segment ...\n"); ! /* * Index through the shared memory segment */ ! for (ptr=shmptr[i]; ptr < (shmptr[i] + shmem_size); ptr++) *ptr = value++; ! } // for 1..11 printf ("\n\tDetach from the segment using the shmdt subroutine\n"); ! printf ("\n\tRelease shared memory\n"); ! ! for (i=0; i<offsets_cnt; i++) { // Detach from the segment ! shmdt( shmptr[i] ); ! // Release shared memory ! if (shmctl (shmid[i], IPC_RMID, 0) < 0) sys_error ("shmctl failed", __LINE__); ! } // 2nd for 1..11 ! /* * Program completed successfully -- exit */ ! printf ("\nsuccessful!\n"); ! return (0); ! } --- 195,236 ---- } ! printf ("\n\tShared memory segment address : %p \n",shmptr[i]); ! printf ("\n\tIndex through shared memory segment ...\n"); ! /* * Index through the shared memory segment */ ! for (ptr=shmptr[i]; ptr < (shmptr[i] + shmem_size); ptr++) *ptr = value++; ! } // for 1..11 printf ("\n\tDetach from the segment using the shmdt subroutine\n"); ! printf ("\n\tRelease shared memory\n"); ! ! for (i=0; i<offsets_cnt; i++) { // Detach from the segment ! shmdt( shmptr[i] ); ! // Release shared memory ! if (shmctl (shmid[i], IPC_RMID, 0) < 0) sys_error ("shmctl failed", __LINE__); ! } // 2nd for 1..11 ! /* * Program completed successfully -- exit */ ! printf ("\nsuccessful!\n"); ! return (0); ! } *************** *** 254,258 **** char *program_name = *argv; extern char *optarg; /* Command line option */ ! while ((i = getopt(argc, argv, "s:?")) != EOF) { switch (i) { --- 254,258 ---- char *program_name = *argv; extern char *optarg; /* Command line option */ ! while ((i = getopt(argc, argv, "s:?")) != EOF) { switch (i) { *************** *** 265,272 **** } } ! if (shmem_size < 1 || shmem_size > MAX_SHMEM_SIZE) errflag++; ! if (errflag) { fprintf (stderr, USAGE, program_name); --- 265,272 ---- } } ! if (shmem_size < 1 || shmem_size > MAX_SHMEM_SIZE) errflag++; ! if (errflag) { fprintf (stderr, USAGE, program_name); *************** *** 286,290 **** { char syserr_msg [256]; ! sprintf (syserr_msg, "%s: %s\n", msg, strerror (errno)); error (syserr_msg, line); --- 286,290 ---- { char syserr_msg [256]; ! sprintf (syserr_msg, "%s: %s\n", msg, strerror (errno)); error (syserr_msg, line); Index: shmem_test_07.c =================================================================== RCS file: /cvsroot/ltp/ltp/testcases/kernel/ipc/ipc_stress/shmem_test_07.c,v retrieving revision 1.6 retrieving revision 1.7 diff -C2 -d -r1.6 -r1.7 *** shmem_test_07.c 10 Nov 2007 09:24:41 -0000 1.6 --- shmem_test_07.c 26 Feb 2009 12:02:24 -0000 1.7 *************** *** 177,181 **** * parse_args (): Parse command line arguments * reader (): Thread program ! * writer (): "scratch" each and every shared memory segment * sys_error (): System error message function * error (): Error message function --- 177,181 ---- * parse_args (): Parse command line arguments * reader (): Thread program ! * writer (): "scratch" each and every shared memory segment * sys_error (): System error message function * error (): Error message function *************** *** 220,224 **** int buffer_size = DEFAULT_SHMEM_SIZE; int num_writers = DEFAULT_NUM_WRITERS; ! int shmid[MAX_THREAD_NUMBER + MAX_WRITER_NUMBER]; --- 220,224 ---- int buffer_size = DEFAULT_SHMEM_SIZE; int num_writers = DEFAULT_NUM_WRITERS; ! int shmid[MAX_THREAD_NUMBER + MAX_WRITER_NUMBER]; *************** *** 237,241 **** int main (int argc, char **argv) { ! pthread_attr_t newattr; int i; /* Misc loop index */ --- 237,241 ---- int main (int argc, char **argv) { ! pthread_attr_t newattr; int i; /* Misc loop index */ *************** *** 362,366 **** /* ! * Creates a thread attributes object and initializes it * with default values. */ --- 362,366 ---- /* ! * Creates a thread attributes object and initializes it * with default values. */ *************** *** 368,378 **** sys_error ("attr_init(&newattr) failed", __LINE__); /* ! * Sets the value of the detachstate attribute of a thread attributes ! * object : ! * PTHREAD_CREATE_UNDETACHED Specifies that the thread will be * created in undetached state. */ #ifdef _LINUX_ ! // the DEFAULT state for linux pthread_create is to be "undetatched" or joinable /* if (pthread_attr_setdetachstate (&newattr, PTHREAD_CREATE_JOINABLE)) sys_error ("attr_setdetachstate(&newattr) failed", __LINE__);*/ --- 368,378 ---- sys_error ("attr_init(&newattr) failed", __LINE__); /* ! * Sets the value of the detachstate attribute of a thread attributes ! * object : ! * PTHREAD_CREATE_UNDETACHED Specifies that the thread will be * created in undetached state. */ #ifdef _LINUX_ ! // the DEFAULT state for linux pthread_create is to be "undetatched" or joinable /* if (pthread_attr_setdetachstate (&newattr, PTHREAD_CREATE_JOINABLE)) sys_error ("attr_setdetachstate(&newattr) failed", __LINE__);*/ *************** *** 383,387 **** /* ! * Create all num_writers threads . Each writer thread will fill * the "scratch" shared memory segment (shmptr) up with data and * will store the result in cksum array accessible by the main. --- 383,387 ---- /* ! * Create all num_writers threads . Each writer thread will fill * the "scratch" shared memory segment (shmptr) up with data and * will store the result in cksum array accessible by the main. *************** *** 440,445 **** for (j=0; j<num_readers; j++) { ! if (cksum[i] != *ulptr ) ! error ("checksums do not match", __LINE__); } --- 440,445 ---- for (j=0; j<num_readers; j++) { ! if (cksum[i] != *ulptr ) ! error ("checksums do not match", __LINE__); } *************** *** 525,529 **** /* * Wait for a READ_COUNT lock on the shared memory segment, then ! * compute the checksum and release the READ_COUNT lock. */ --- 525,529 ---- /* * Wait for a READ_COUNT lock on the shared memory segment, then ! * compute the checksum and release the READ_COUNT lock. */ *************** *** 570,574 **** *ulptr_r = cksum_r; ! printf ("\t\treader (%03d) of writer (%03d): checksum %08lx\n", num_r, num_w, cksum_r); return NULL; } --- 570,574 ---- *ulptr_r = cksum_r; ! printf ("\t\treader (%03d) of writer (%03d): checksum %08lx\n", num_r, num_w, cksum_r); return NULL; } Index: signal_test_07.c =================================================================== RCS file: /cvsroot/ltp/ltp/testcases/kernel/ipc/ipc_stress/signal_test_07.c,v retrieving revision 1.5 retrieving revision 1.6 diff -C2 -d -r1.5 -r1.6 *** signal_test_07.c 10 Nov 2007 09:24:41 -0000 1.5 --- signal_test_07.c 26 Feb 2009 12:02:25 -0000 1.6 *************** *** 98,102 **** printf ("%s: IPC TestSuite program\n\n", *argv); fflush (stdout); ! /* Set up our signal handler */ init_sig (); --- 98,102 ---- printf ("%s: IPC TestSuite program\n\n", *argv); fflush (stdout); ! /* Set up our signal handler */ init_sig (); *************** *** 104,108 **** /* * Send MAXSIG signals to the process ! * * Using raise, send MAX signals to the process. Then loop until * every signal is caught by the signal handler (or the timer expires). --- 104,108 ---- /* * Send MAXSIG signals to the process ! * * Using raise, send MAX signals to the process. Then loop until * every signal is caught by the signal handler (or the timer expires). Index: signal_test_06.c =================================================================== RCS file: /cvsroot/ltp/ltp/testcases/kernel/ipc/ipc_stress/signal_test_06.c,v retrieving revision 1.5 retrieving revision 1.6 diff -C2 -d -r1.5 -r1.6 *** signal_test_06.c 10 Nov 2007 09:24:41 -0000 1.5 --- signal_test_06.c 26 Feb 2009 12:02:25 -0000 1.6 *************** *** 99,111 **** /* Print out program header */ printf ("%s: IPC TestSuite program\n\n", *argv); ! /* Set up our signal handler */ init_sig (); ! /* * Block ALL signals from interrupting the process */ printf ("\tBlock all signals from interrupting the process\n"); ! if (sigfillset (&newmask) < 0) error ("sigfillset failed", __LINE__); if (sigprocmask (SIG_SETMASK, &newmask, &oldmask) < 0) --- 99,111 ---- /* Print out program header */ printf ("%s: IPC TestSuite program\n\n", *argv); ! /* Set up our signal handler */ init_sig (); ! /* * Block ALL signals from interrupting the process */ printf ("\tBlock all signals from interrupting the process\n"); ! if (sigfillset (&newmask) < 0) error ("sigfillset failed", __LINE__); if (sigprocmask (SIG_SETMASK, &newmask, &oldmask) < 0) *************** *** 122,131 **** /* * Sleep for a short time and the check to ensure that a SIGUSR1 ! * signal is pending */ sleep (2); printf ("\n\tEnsure at least one SIGUSR1 signal is pending\n"); ! if (sigpending (&pendmask) < 0) error ("sigpending failed", __LINE__); --- 122,131 ---- /* * Sleep for a short time and the check to ensure that a SIGUSR1 ! * signal is pending */ sleep (2); printf ("\n\tEnsure at least one SIGUSR1 signal is pending\n"); ! if (sigpending (&pendmask) < 0) error ("sigpending failed", __LINE__); *************** *** 137,141 **** * Change the signal mask to allow signals to interrupt the process * and then suspend execution until a signal reaches the process ! * * Then verify that at least one signal was received */ --- 137,141 ---- * Change the signal mask to allow signals to interrupt the process * and then suspend execution until a signal reaches the process ! * * Then verify that at least one signal was received */ Index: signal_test_01.c =================================================================== RCS file: /cvsroot/ltp/ltp/testcases/kernel/ipc/ipc_stress/signal_test_01.c,v retrieving revision 1.7 retrieving revision 1.8 diff -C2 -d -r1.7 -r1.8 *** signal_test_01.c 20 Oct 2008 06:30:33 -0000 1.7 --- signal_test_01.c 26 Feb 2009 12:02:25 -0000 1.8 *************** *** 86,90 **** #ifdef _LINUX_ stack_t stack = { ! ss_sp: stackarray+STACKSIZE, // stack pointer ss_flags: 0, //SS_ONSTACK, // flags ss_size: STACKSIZE // size --- 86,90 ---- #ifdef _LINUX_ stack_t stack = { ! ss_sp: stackarray+STACKSIZE, // stack pointer ss_flags: 0, //SS_ONSTACK, // flags ss_size: STACKSIZE // size *************** *** 129,140 **** oldmask; /* Signal mask returned by sigblock */ pid_t pid = getpid (); /* Process ID (of this process) */ ! ! /* Print out program header */ printf ("%s: IPC Signals TestSuite program\n\n", *argv); ! /* ! * Establish signal handler for each signal & reset "valid signals" ! * array, and setup alternative stack for processing signals */ init_sig_vec (); --- 129,140 ---- oldmask; /* Signal mask returned by sigblock */ pid_t pid = getpid (); /* Process ID (of this process) */ ! ! /* Print out program header */ printf ("%s: IPC Signals TestSuite program\n\n", *argv); ! /* ! * Establish signal handler for each signal & reset "valid signals" ! * array, and setup alternative stack for processing signals */ init_sig_vec (); *************** *** 154,161 **** * by setting the corresponding valid_sig[] array fields. * ! * Then send the signals to this process. * ! * And finally verify that the signals were caught by the signal ! * handler by checking to see if the corresponding valid_sig[] array * fields were reset. */ --- 154,161 ---- * by setting the corresponding valid_sig[] array fields. * ! * Then send the signals to this process. * ! * And finally verify that the signals were caught by the signal ! * handler by checking to see if the corresponding valid_sig[] array * fields were reset. */ *************** *** 176,180 **** error ("failed to receive SIGIOT signal!", __LINE__); ! /* * Block SIGILL, SIGALRM & SIGIOT signals: * --- 176,180 ---- error ("failed to receive SIGIOT signal!", __LINE__); ! /* * Block SIGILL, SIGALRM & SIGIOT signals: * *************** *** 185,189 **** * * Verify that the desired signals are blocked from interrupting the ! * process, by sending both blocked and unblocked signals to the * process. Only the unblocked signals should interrupt the process. */ --- 185,189 ---- * * Verify that the desired signals are blocked from interrupting the ! * process, by sending both blocked and unblocked signals to the * process. Only the unblocked signals should interrupt the process. */ *************** *** 210,214 **** kill (pid, SIGTERM); kill (pid, SIGINT); ! if (valid_sig [SIGFPE]) error ("failed to receive SIGFPE signal!", __LINE__); --- 210,214 ---- kill (pid, SIGTERM); kill (pid, SIGINT); ! if (valid_sig [SIGFPE]) error ("failed to receive SIGFPE signal!", __LINE__); *************** *** 218,222 **** error ("failed to receive SIGINT signal!", __LINE__); ! /* * Block additional SIGFPE, SIGTERM & SIGINT signals: * --- 218,222 ---- error ("failed to receive SIGINT signal!", __LINE__); ! /* * Block additional SIGFPE, SIGTERM & SIGINT signals: * *************** *** 226,231 **** * with the sigprocmask () function. * ! * Verify that all of the desired signals are now blocked from ! * interrupting the process. None of the specified signals should * interrupt the process until the process signal mask is changed. */ --- 226,231 ---- * with the sigprocmask () function. * ! * Verify that all of the desired signals are now blocked from ! * interrupting the process. None of the specified signals should * interrupt the process until the process signal mask is changed. */ Index: signal_test_05.c =================================================================== RCS file: /cvsroot/ltp/ltp/testcases/kernel/ipc/ipc_stress/signal_test_05.c,v retrieving revision 1.7 retrieving revision 1.8 diff -C2 -d -r1.7 -r1.8 *** signal_test_05.c 16 Jun 2008 21:15:20 -0000 1.7 --- signal_test_05.c 26 Feb 2009 12:02:25 -0000 1.8 *************** *** 77,81 **** #ifdef _LINUX_ ! // bits/signum.h defines _NSIG as 64 #define SIGMAX 64 #endif --- 77,81 ---- #ifdef _LINUX_ ! // bits/signum.h defines _NSIG as 64 #define SIGMAX 64 #endif *************** *** 108,112 **** /* Print out program header */ printf ("%s: IPC TestSuite program\n\n", *argv); ! /* Set up our signal handler */ ignore_signals (); --- 108,112 ---- /* Print out program header */ printf ("%s: IPC TestSuite program\n\n", *argv); ! /* Set up our signal handler */ ignore_signals (); *************** *** 130,141 **** /* * Wait for the child process to complete ! * * Suspend execution of the parent process until either a signal ! * that is not blocked or ignored, or until the child process ! * completes. ! * * Use the POSIX macro to insure that the child process exited * normally. ! * * Check to insure that the SIGCHLD signal was caught. */ --- 130,141 ---- /* * Wait for the child process to complete ! * * Suspend execution of the parent process until either a signal ! * that is not blocked or ignored, or until the child process ! * completes. ! * * Use the POSIX macro to insure that the child process exited * normally. ! * * Check to insure that the SIGCHLD signal was caught. */ Index: message_queue_test_02_get.c =================================================================== RCS file: /cvsroot/ltp/ltp/testcases/kernel/ipc/ipc_stress/message_queue_test_02_get.c,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -d -r1.4 -r1.5 *** message_queue_test_02_get.c 10 Nov 2007 09:24:41 -0000 1.4 --- message_queue_test_02_get.c 26 Feb 2009 12:02:24 -0000 1.5 *************** *** 69,73 **** /* * Defines ! * * BUF_SIZE: size of message buffer... */ --- 69,73 ---- /* * Defines ! * * BUF_SIZE: size of message buffer... */ *************** *** 91,95 **** /* * Global variables ! * * project_name: Unique path used to create key (ftok) * project_id: Unique number used to create key (ftok) --- 91,95 ---- /* * Global variables ! * * project_name: Unique path used to create key (ftok) * project_id: Unique number used to create key (ftok) Index: signal_test_04.c =================================================================== RCS file: /cvsroot/ltp/ltp/testcases/kernel/ipc/ipc_stress/signal_test_04.c,v retrieving revision 1.6 retrieving revision 1.7 diff -C2 -d -r1.6 -r1.7 *** signal_test_04.c 10 Nov 2007 09:24:41 -0000 1.6 --- signal_test_04.c 26 Feb 2009 12:02:25 -0000 1.7 *************** *** 88,92 **** #ifdef _LINUX_ ! // bits/signum.h defines _NSIG as 64 #define SIGMAX 64 #endif --- 88,92 ---- #ifdef _LINUX_ ! // bits/signum.h defines _NSIG as 64 #define SIGMAX 64 #endif *************** *** 124,132 **** printf ("%s: IPC TestSuite program\n\n", *argv); fflush (stdout); ! /* Set up our signal handler */ signal_init (); ! /* * Spawn a child process & have the child process send SIGUSR1 * signals to the parent. --- 124,132 ---- printf ("%s: IPC TestSuite program\n\n", *argv); fflush (stdout); ! /* Set up our signal handler */ signal_init (); ! /* * Spawn a child process & have the child process send SIGUSR1 * signals to the parent. *************** *** 145,157 **** /* ! * Interrupt the child process * * Send SIGSTOP signal to child process (child process will * stop upon receiving the signal). ! * * Wait for the child process to receive the SIGSTOP signal * and send a corresponding SIGCLD interrupt to the parent. ! * ! * Send SIGKILL signal to child process (child process * will exit upon receiving the signal). */ --- 145,157 ---- /* ! * Interrupt the child process * * Send SIGSTOP signal to child process (child process will * stop upon receiving the signal). ! * * Wait for the child process to receive the SIGSTOP signal * and send a corresponding SIGCLD interrupt to the parent. ! * ! * Send SIGKILL signal to child process (child process * will exit upon receiving the signal). */ *************** *** 187,199 **** /* ! * Wait for the child process to abort ! * * Suspend execution of the parent process until the SIGCHLD signal ! * is received upon termination of the child process. ! * ! * Check the child process's exit status (with POSIX macros) to ! * verify that the child process terminated due to the SIGKILL signal * from the parent. ! * * Additionally verify that the number of SIGCHLD signals received * has increased. --- 187,199 ---- /* ! * Wait for the child process to abort ! * * Suspend execution of the parent process until the SIGCHLD signal ! * is received upon termination of the child process. ! * ! * Check the child process's exit status (with POSIX macros) to ! * verify that the child process terminated due to the SIGKILL signal * from the parent. ! * * Additionally verify that the number of SIGCHLD signals received * has increased. *************** *** 203,207 **** wait (&status); ! if (WIFSIGNALED (status)) { if (WTERMSIG (status) != SIGUSR2) { sprintf (msg, "child process was killed with signal (%d)", --- 203,207 ---- wait (&status); ! if (WIFSIGNALED (status)) { if (WTERMSIG (status) != SIGUSR2) { sprintf (msg, "child process was killed with signal (%d)", Index: signal_test_03.c =================================================================== RCS file: /cvsroot/ltp/ltp/testcases/kernel/ipc/ipc_stress/signal_test_03.c,v retrieving revision 1.5 retrieving revision 1.6 diff -C2 -d -r1.5 -r1.6 *** signal_test_03.c 20 Oct 2008 06:30:33 -0000 1.5 --- signal_test_03.c 26 Feb 2009 12:02:25 -0000 1.6 *************** *** 71,75 **** #ifdef _LINUX_ ! // bits/signum.h defines _NSIG as 64 #define SIGMAX 64 #endif --- 71,75 ---- #ifdef _LINUX_ ! // bits/signum.h defines _NSIG as 64 #define SIGMAX 64 #endif *************** *** 107,118 **** /* * Critical section - block SIGILL signal ! * * Block the SIGILL interrupt from interrupting the process * with the sigprocmask () system function call. ! * ! * Send the SIGILL interrupt to the process in an attempt to * disrupt the critial section -- the signal should be blocked. * Wait one second to insure that the signal has plenty of time ! * to reach the process. */ #ifdef _LINUX_ --- 107,118 ---- /* * Critical section - block SIGILL signal ! * * Block the SIGILL interrupt from interrupting the process * with the sigprocmask () system function call. ! * ! * Send the SIGILL interrupt to the process in an attempt to * disrupt the critial section -- the signal should be blocked. * Wait one second to insure that the signal has plenty of time ! * to reach the process. */ #ifdef _LINUX_ *************** *** 133,140 **** /* * End of critical section - ensure SIGILL signal was not received ! * * Check to insure that the signal handler has not caught any signals, ! * and then unblock all of the signals with the sigsetmask system ! * function call. */ if (signals_received > 0) --- 133,140 ---- /* * End of critical section - ensure SIGILL signal was not received ! * * Check to insure that the signal handler has not caught any signals, ! * and then unblock all of the signals with the sigsetmask system ! * function call. */ if (signals_received > 0) *************** *** 148,152 **** sigprocmask (SIG_SETMASK, &mask, NULL); #else ! if (sigsetmask (0) < 0) sys_error ("sigsetmask failed", __LINE__); #endif --- 148,152 ---- sigprocmask (SIG_SETMASK, &mask, NULL); #else ! if (sigsetmask (0) < 0) sys_error ("sigsetmask failed", __LINE__); #endif *************** *** 164,169 **** } ! if (timeout == 0) ! error ("failed to receive SIGILL signal after unblocking signals", __LINE__); --- 164,169 ---- } ! if (timeout == 0) ! error ("failed to receive SIGILL signal after unblocking signals", __LINE__); Index: pipe_test_02.c =================================================================== RCS file: /cvsroot/ltp/ltp/testcases/kernel/ipc/ipc_stress/pipe_test_02.c,v retrieving revision 1.5 retrieving revision 1.6 diff -C2 -d -r1.5 -r1.6 *** pipe_test_02.c 10 Nov 2007 09:24:41 -0000 1.5 --- pipe_test_02.c 26 Feb 2009 12:02:24 -0000 1.6 *************** *** 74,80 **** * VALID_PACKET: value sent with each packet, used to verify that the * packets contents were not garbled. ! * * DEFAULT_NUM_CHILDREN: default number of child processes spawned ! * * DEFAULT_PACKETS_TO_SEND: default number of packets sent to each child * process. --- 74,80 ---- * VALID_PACKET: value sent with each packet, used to verify that the * packets contents were not garbled. ! * * DEFAULT_NUM_CHILDREN: default number of child processes spawned ! * * DEFAULT_PACKETS_TO_SEND: default number of packets sent to each child * process. *************** *** 82,86 **** * MAXCHILD: maximum number of child processes which may be spawned * (based upon the number of file descriptors that a process may use) ! * * USAGE: usage statement */ --- 82,86 ---- * MAXCHILD: maximum number of child processes which may be spawned * (based upon the number of file descriptors that a process may use) ! * * USAGE: usage statement */ *************** *** 100,104 **** /* * Function Prototypes: ! * * setup (): Parse command line arguments and intialize variables * child (): Child process --- 100,104 ---- /* * Function Prototypes: ! * * setup (): Parse command line arguments and intialize variables * child (): Child process *************** *** 119,128 **** /* * Structures & Global variables ! * ! * num_children: number of child processes to be spawned ! * * num_packets: number of packets to be sent to each child process * ! * non_blocking_flag: uses NON-BLOCKING * * pid: process id's of the spawned processes --- 119,128 ---- /* * Structures & Global variables ! * ! * num_children: number of child processes to be spawned ! * * num_packets: number of packets to be sent to each child process * ! * non_blocking_flag: uses NON-BLOCKING * * pid: process id's of the spawned processes *************** *** 187,199 **** printf ("%s: IPC Pipe TestSuite program\n", *argv); fflush (stdout); ! ! /* ! * Create two sets of half duplex pipes: ! * ! * p2child: for sending packets from the parent process to the child * processes and ! * p2parent: for sending checksums from the child processes to the * parent ! * * If the non-blocking command line option was specified, use fcntl () * to set the O_NONBLOCK file descriptor status flags. This will --- 187,199 ---- printf ("%s: IPC Pipe TestSuite program\n", *argv); fflush (stdout); ! ! /* ! * Create two sets of half duplex pipes: ! * ! * p2child: for sending packets from the parent process to the child * processes and ! * p2parent: for sending checksums from the child processes to the * parent ! * * If the non-blocking command line option was specified, use fcntl () * to set the O_NONBLOCK file descriptor status flags. This will *************** *** 204,208 **** fflush (stdout); ! if (pipe (p2parent) < 0) sys_error ("pipe failed", __LINE__); --- 204,208 ---- fflush (stdout); ! if (pipe (p2parent) < 0) sys_error ("pipe failed", __LINE__); *************** *** 213,217 **** for (i=0; i<num_children; i++) { ! if (pipe (&p2child [i][0]) < 0) sys_error ("pipe failed", __LINE__); if (non_blocking_flag) { --- 213,217 ---- for (i=0; i<num_children; i++) { ! if (pipe (&p2child [i][0]) < 0) sys_error ("pipe failed", __LINE__); if (non_blocking_flag) { *************** *** 225,235 **** /* * Spawn num_children processes ! * * Fork of the child process & record the newly created process's ! * id for future reference. ! * ! * Then close the READ end of the p2child pipe, since the parent * process will be writing into this pipe rather than reading. ! * Also close the WRITE end of the p2parent pipe, for just the * the reverse reasons... */ --- 225,235 ---- /* * Spawn num_children processes ! * * Fork of the child process & record the newly created process's ! * id for future reference. ! * ! * Then close the READ end of the p2child pipe, since the parent * process will be writing into this pipe rather than reading. ! * Also close the WRITE end of the p2parent pipe, for just the * the reverse reasons... */ *************** *** 256,267 **** /* * Send data packets to the child processes ! * * Build packets (initialize all of the packets fields) and then * send the packets to all of the child processes. ! * ! * Might have to make several attempts with the NON-BLOCKING writes * if the resource is not immediately available. */ ! printf ("\n\tParent: sending %ld packets (%ld bytes) to child processes ...\n", num_packets, num_packets * sizeof (struct data_packet)); --- 256,267 ---- /* * Send data packets to the child processes ! * * Build packets (initialize all of the packets fields) and then * send the packets to all of the child processes. ! * ! * Might have to make several attempts with the NON-BLOCKING writes * if the resource is not immediately available. */ ! printf ("\n\tParent: sending %ld packets (%ld bytes) to child processes ...\n", num_packets, num_packets * sizeof (struct data_packet)); *************** *** 291,309 **** /* * Send the last packet to the child processes ! * * [ Upon receiving this packet, the child process will know that all ! * of the packets have been sent and that the parent process is * expecting the child to send it's checksum back. ] ! * * After sending the last packet, close the WRITE end of the p2child * pipe as we are finish sending packets to the child processes. - * - * Then wait for all of the child processes to send the checksum - * packets. Upon receiving the checksum packets verify that the - * child's checksum matches that of the parent. * ! * Might have to make several attempts with the NON-BLOCKING writes * if the resource is not immediately available. ! * * Finally, close READ end of p2parent pipe as we have finished * receiving checksums from the child. --- 291,309 ---- /* * Send the last packet to the child processes ! * * [ Upon receiving this packet, the child process will know that all ! * of the packets have been sent and that the parent process is * expecting the child to send it's checksum back. ] ! * * After sending the last packet, close the WRITE end of the p2child * pipe as we are finish sending packets to the child processes. * ! * Then wait for all of the child processes to send the checksum ! * packets. Upon receiving the checksum packets verify that the ! * child's checksum matches that of the parent. ! * ! * Might have to make several attempts with the NON-BLOCKING writes * if the resource is not immediately available. ! * * Finally, close READ end of p2parent pipe as we have finished * receiving checksums from the child. *************** *** 326,330 **** sys_error ("read failed", __LINE__); ! if (packet.valid != VALID_PACKET) error ("received packet with corrupted data from child!", __LINE__); --- 326,330 ---- sys_error ("read failed", __LINE__); ! if (packet.valid != VALID_PACKET) error ("received packet with corrupted data from child!", __LINE__); *************** *** 335,339 **** "child [pid %d]\n" \ "\tchild's checksum: %08lx\n" \ ! "\tparent's checksum: %08lx\n", packet.pid, packet.checksum, cksum_parent); error (err_msg, __LINE__); --- 335,339 ---- "child [pid %d]\n" \ "\tchild's checksum: %08lx\n" \ ! "\tparent's checksum: %08lx\n", packet.pid, packet.checksum, cksum_parent); error (err_msg, __LINE__); *************** *** 343,347 **** sys_error ("close failed", __LINE__); ! /* * Wait for all of the child processes to complete & check their * exit status. --- 343,347 ---- sys_error ("close failed", __LINE__); ! /* * Wait for all of the child processes to complete & check their * exit status. *************** *** 352,357 **** waitpid (pid [i], &status, 0); ! if (!WIFEXITED (status)) ! sys_error ("child process terminated abnormally", __LINE__); } --- 352,357 ---- waitpid (pid [i], &status, 0); ! if (!WIFEXITED (status)) ! sys_error ("child process terminated abnormally", __LINE__); } *************** *** 385,389 **** pid_t pid = getpid (); /* Process id of child */ int end_of_transmission = 0;/* End of transaction flag */ ! long packets_received = 0; /* Number of packets received * from parent */ --- 385,389 ---- pid_t pid = getpid (); /* Process id of child */ int end_of_transmission = 0;/* End of transaction flag */ ! long packets_received = 0; /* Number of packets received * from parent */ *************** *** 393,399 **** /* ! * Close the WRITE end of the p2child pipe, since the child * process will be reading from this pipe rather than writing. ! * Also close the READ end of the p2parent pipe, for just the * the reverse reasons... */ --- 393,399 ---- /* ! * Close the WRITE end of the p2child pipe, since the child * process will be reading from this pipe rather than writing. ! * Also close the READ end of the p2parent pipe, for just the * the reverse reasons... */ *************** *** 405,416 **** /* * Receive packets from parent & insure packets are valid ! * * Read packets from the parent through p2child pipe. Upon * recieving the packet, verify that it is valid, in sequence * and that both the parent's and child's checksums match. ! * * Might have to make several attempts with the NON-BLOCKING * reads if the resource is not immediately available. ! * * Continue reading packets until the "last" packet is received * from the parent. Upon receiving the last packet, close --- 405,416 ---- /* * Receive packets from parent & insure packets are valid ! * * Read packets from the parent through p2child pipe. Upon * recieving the packet, verify that it is valid, in sequence * and that both the parent's and child's checksums match. ! * * Might have to make several attempts with the NON-BLOCKING * reads if the resource is not immediately available. ! * * Continue reading packets until the "last" packet is received * from the parent. Upon receiving the last packet, close *************** *** 430,439 **** /* Insure packet is valid */ if (packet.valid != VALID_PACKET) { ! sprintf (err_msg, "child received invalid packet " \ "from parent:\n\tpacket #: %ld\n", packets_received); error (err_msg, __LINE__); ! } /* Received last packet */ if (packet.last) { --- 430,439 ---- /* Insure packet is valid */ if (packet.valid != VALID_PACKET) { ! sprintf (err_msg, "child received invalid packet " \ "from parent:\n\tpacket #: %ld\n", packets_received); error (err_msg, __LINE__); ! } /* Received last packet */ if (packet.last) { *************** *** 472,483 **** /* * Send parent packet containing child's checksum ! * * Build a checksum packet (initialize packet fields) and then * send the packet to the parent. ! * * Then close the WRITE p2parent pipe as we have finished sending packets * to the parent. */ ! printf ("\t\tChild: pid [%d] received %ld packets from parent\n", pid, packets_received); --- 472,483 ---- /* * Send parent packet containing child's checksum ! * * Build a checksum packet (initialize packet fields) and then * send the packet to the parent. ! * * Then close the WRITE p2parent pipe as we have finished sending packets * to the parent. */ ! printf ("\t\tChild: pid [%d] received %ld packets from parent\n", pid, packets_received); *************** *** 491,495 **** sys_error ("close failed", __LINE__); } ! /*---------------------------------------------------------------------+ --- 491,495 ---- sys_error ("close failed", __LINE__); } ! /*---------------------------------------------------------------------+ *************** *** 617,621 **** cleanup (); } ! else exit (-1); } else { --- 617,621 ---- cleanup (); } ! else exit (-1); } else { *************** *** 640,644 **** if (getpid () == parent_pid) { for (i=0; i<num_children; i++) { ! if (pid [i] > (pid_t)0 && kill (pid [i], SIGKILL) < 0) sys_error ("signal failed", __LINE__); --- 640,644 ---- if (getpid () == parent_pid) { for (i=0; i<num_children; i++) { ! if (pid [i] > (pid_t)0 && kill (pid [i], SIGKILL) < 0) sys_error ("signal failed", __LINE__); Index: signal_test_02.c =================================================================== RCS file: /cvsroot/ltp/ltp/testcases/kernel/ipc/ipc_stress/signal_test_02.c,v retrieving revision 1.5 retrieving revision 1.6 diff -C2 -d -r1.5 -r1.6 *** signal_test_02.c 10 Nov 2007 09:24:41 -0000 1.5 --- signal_test_02.c 26 Feb 2009 12:02:25 -0000 1.6 *************** *** 111,117 **** printf ("%s: IPC TestSuite program\n\n", *argv); ! /* ! * Establish signal handler for each signal & reset "valid signals" ! * array */ init_sig (); --- 111,117 ---- printf ("%s: IPC TestSuite program\n\n", *argv); ! /* ! * Establish signal handler for each signal & reset "valid signals" ! * array */ init_sig (); *************** *** 128,135 **** * by setting the corresponding valid_sig[] array fields. * ! * Then send the signals to this process. * ! * And finally verify that the signals were caught by the signal ! * handler by checking to see if the corresponding valid_sig[] array * fields were reset. */ --- 128,135 ---- * by setting the corresponding valid_sig[] array fields. * ! * Then send the signals to this process. * ! * And finally verify that the signals were caught by the signal ! * handler by checking to see if the corresponding valid_sig[] array * fields were reset. */ *************** *** 150,157 **** error ("failed to receive SIGIOT signal!", __LINE__); ! /* * Block SIGILL, SIGALRM & SIGIOT signals: * ! * First initialize the signal set so that all signals are excluded, * then individually add the signals to block to the signal set. * --- 150,157 ---- error ("failed to receive SIGIOT signal!", __LINE__); ! /* * Block SIGILL, SIGALRM & SIGIOT signals: * ! * First initialize the signal set so that all signals are excluded, * then individually add the signals to block to the signal set. * *************** *** 159,163 **** * * Verify that the desired signals are blocked from interrupting the ! * process, by sending both blocked and unblocked signals to the * process. Only the unblocked signals should interrupt the process. */ --- 159,163 ---- * * Verify that the desired signals are blocked from interrupting the ! * process, by sending both blocked and unblocked signals to the * process. Only the unblocked signals should interrupt the process. */ *************** *** 194,198 **** sys_error ("failed to receive SIGINT signal!", __LINE__); ! /* * Block additional SIGFPE, SIGTERM & SIGINT signals: * --- 194,198 ---- sys_error ("failed to receive SIGINT signal!", __LINE__); ! /* * Block additional SIGFPE, SIGTERM & SIGINT signals: * *************** *** 203,208 **** * with the sigprocmask (SIG_BLOCK) function. * ! * Verify that all of the desired signals are now blocked from ! * interrupting the process. None of the specified signals should * interrupt the process until the process signal mask is changed. */ --- 203,208 ---- * with the sigprocmask (SIG_BLOCK) function. * ! * Verify that all of the desired signals are now blocked from ! * interrupting the process. None of the specified signals should * interrupt the process until the process signal mask is changed. */ *************** *** 224,228 **** kill (pid, SIGINT); ! /* * Wait two seconds just to make sure that none of the specified * signals interrupt the process (They should all be blocked). --- 224,228 ---- kill (pid, SIGINT); ! /* * Wait two seconds just to make sure that none of the specified * signals interrupt the process (They should all be blocked). *************** *** 239,243 **** * sigdelset (). * ! * Force the process to suspend execution until delivery of an * unblocked signal (SIGINT in this case) with sigsuspend (). * --- 239,243 ---- * sigdelset (). * ! * Force the process to suspend execution until delivery of an * unblocked signal (SIGINT in this case) with sigsuspend (). * Index: semaphore_test_03.c =================================================================== RCS file: /cvsroot/ltp/ltp/testcases/kernel/ipc/ipc_stress/semaphore_test_03.c,v retrieving revision 1.5 retrieving revision 1.6 diff -C2 -d -r1.5 -r1.6 *** semaphore_test_03.c 11 Sep 2008 07:40:34 -0000 1.5 --- semaphore_test_03.c 26 Feb 2009 12:02:24 -0000 1.6 *************** *** 82,89 **** * * DEFAULT_NUM_SEMAPHORES: default number of semaphores to create unless ! * specified with (-s nsems) command line option * * DEFAULT_NUM_CHILDREN: default number of child processes to spawn unless ! * specified with (-p nprocs) command line option * * USAGE: usage statement macro --- 82,89 ---- * * DEFAULT_NUM_SEMAPHORES: default number of semaphores to create unless ! * specified with (-s nsems) command line option * * DEFAULT_NUM_CHILDREN: default number of child processes to spawn unless ! * specified with (-p nprocs) command line option * * USAGE: usage statement macro *************** *** 126,130 **** /* * Structures and Global variables: ! * * nsems: number of semaphores to create (per process) * nprocs: number of child processes to spawn --- 126,130 ---- /* * Structures and Global variables: ! * * nsems: number of semaphores to create (per process) * nprocs: number of child processes to spawn *************** *** 253,257 **** if ((semid = semget (IPC_PRIVATE, nsems, IPC_CREAT|mode)) < 0) sys_error ("semget (IPC_PRIVATE) failed", __LINE__); ! /* * Set the semaphore uid, gid and mode --- 253,257 ---- if ((semid = semget (IPC_PRIVATE, nsems, IPC_CREAT|mode)) < 0) sys_error ("semget (IPC_PRIVATE) failed", __LINE__); ! /* * Set the semaphore uid, gid and mode *************** *** 279,286 **** if (arg.buf->sem_perm.gid != gid) error ("semctl: gid was not set", __LINE__); ! if ((arg.buf->sem_perm.mode & 0777) != mode) error ("semctl: mode was not set", __LINE__); ! if (arg.buf->sem_nsems != nsems) ! error ("semctl: nsems (number of semaphores) was not set", __LINE__); SAFE_FREE(arg.buf); --- 279,286 ---- if (arg.buf->sem_perm.gid != gid) error ("semctl: gid was not set", __LINE__); ! if ((arg.buf->sem_perm.mode & 0777) != mode) error ("semctl: mode was not set", __LINE__); ! if (arg.buf->sem_nsems != nsems) ! error ("semctl: nsems (number of semaphores) was not set", __LINE__); SAFE_FREE(arg.buf); *************** *** 552,556 **** if (semop (semid, semoparray, 1) >= 0) error ("semop did not return EINTR", __LINE__); ! else if (errno != EINTR) { printf ("semop returned: %d\n", errno); --- 552,556 ---- if (semop (semid, semoparray, 1) >= 0) error ("semop did not return EINTR", __LINE__); ! else if (errno != EINTR) { printf ("semop returned: %d\n", errno); *************** *** 655,659 **** if (semop (semid, semoparray, 1) >= 0) error ("semop did not return ERMID", __LINE__); ! else if (errno != EIDRM) { printf ("semop returned: %d\n", errno); --- 655,659 ---- if (semop (semid, semoparray, 1) >= 0) error ("semop did not return ERMID", __LINE__); ! else if (errno != EIDRM) { printf ("semop returned: %d\n", errno); *************** *** 689,693 **** if ((semid = semget (IPC_PRIVATE, nsems, IPC_CREAT|mode)) < 0) sys_error ("semget (IPC_PRIVATE) failed", __LINE__); ! /* * Set the semaphore uid, gid and mode --- 689,693 ---- if ((semid = semget (IPC_PRIVATE, nsems, IPC_CREAT|mode)) < 0) sys_error ("semget (IPC_PRIVATE) failed", __LINE__); ! /* * Set the semaphore uid, gid and mode *************** *** 711,718 **** if (arg.buf->sem_perm.gid != gid) error ("semctl: gid was not set", __LINE__); ! if ((arg.buf->sem_perm.mode & 0777) != mode) error ("semctl: mode was not set", __LINE__); ! if (arg.buf->sem_nsems != nsems) ! error ("semctl: nsems (number of semaphores) was not set", __LINE__); SAFE_FREE(arg.buf); --- 711,718 ---- if (arg.buf->sem_perm.gid != gid) error ("semctl: gid was not set", __LINE__); ! if ((arg.buf->sem_perm.mode & 0777) != mode) error ("semctl: mode was not set", __LINE__); ! if (arg.buf->sem_nsems != nsems) ! error ("semctl: nsems (number of semaphores) was not set", __LINE__); SAFE_FREE(arg.buf); *************** *** 801,805 **** if (semop (semid, semoparray, 1) >= 0) error ("semop did not return EINTR", __LINE__); ! else if (errno != EINTR) { printf ("semop returned: %d\n", errno); --- 801,805 ---- if (semop (semid, semoparray, 1) >= 0) error ("semop did not return EINTR", __LINE__); ! else if (errno != EINTR) { printf ("semop returned: %d\n", errno); *************** *** 898,902 **** if (semop (semid, semoparray, 1) >= 0) error ("semop did not return ERMID", __LINE__); ! else if (errno != EIDRM) { printf ("semop returned: %d\n", errno); --- 898,902 ---- if (semop (semid, semoparray, 1) >= 0) error ("semop did not return ERMID", __LINE__); ! else if (errno != EIDRM) { printf ("semop returned: %d\n", errno); Index: semaphore_test_02.c =================================================================== RCS file: /cvsroot/ltp/ltp/testcases/kernel/ipc/ipc_stress/semaphore_test_02.c,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -d -r1.4 -r1.5 *** semaphore_test_02.c 10 Sep 2008 08:16:11 -0000 1.4 --- semaphore_test_02.c 26 Feb 2009 12:02:24 -0000 1.5 *************** *** 111,115 **** /* * Structures and Global variables: ! * * nsems: number of semaphores to create (per process) * nprocs: number of child processes to spawn --- 111,115 ---- /* * Structures and Global variables: ! * * nsems: number of semaphores to create (per process) * nprocs: number of child processes to spawn *************** *** 124,130 **** union semun { ! int val; ! struct semid_ds *buf; ! unsigned short *array; } arg; --- 124,130 ---- union semun { ! int val; ! struct semid_ds *buf; ! unsigned short *array; } arg; *************** *** 221,227 **** union semun semunptr; /* This union has struct semid_ds *buf*/ /* ! * Test semget () with IPC_PRIVATE command * ! * Create nsems semaphores and store the returned unique * semaphore identifier as semid. */ --- 221,227 ---- union semun semunptr; /* This union has struct semid_ds *buf*/ /* ! * Test semget () with IPC_PRIVATE command * ! * Create nsems semaphores and store the returned unique * semaphore identifier as semid. */ *************** *** 232,236 **** /* ! * Test semctl () with IPC_SET command * * Set the uid, gid and mode fields --- 232,236 ---- /* ! * Test semctl () with IPC_SET command * * Set the uid, gid and mode fields *************** *** 253,257 **** /* ! * Test semctl () with IPC_STAT command * * Get the semid_ds structure and verify it's fields. --- 253,257 ---- /* ! * Test semctl () with IPC_STAT command * * Get the semid_ds structure and verify it's fields. *************** *** 266,273 **** if (semunptr.buf->sem_perm.gid != gid) sys_error ("semctl: gid was not set", __LINE__); ! if ((semunptr.buf->sem_perm.mode & 0777) != mode) sys_error ("semctl: mode was not set", __LINE__); ! if (semunptr.buf->sem_nsems != nsems) ! sys_error ("semctl: nsems (number of semaphores) was not set", __LINE__); SAFE_FREE(semunptr.buf); --- 266,273 ---- if (semunptr.buf->sem_perm.gid != gid) sys_error ("semctl: gid was not set", __LINE__); ! if ((semunptr.buf->sem_perm.mode & 0777) != mode) sys_error ("semctl: mode was not set", __LINE__); ! if (semunptr.buf->sem_nsems != nsems) ! sys_error ("semctl: nsems (number of semaphores) was not set", __LINE__); SAFE_FREE(semunptr.buf); *************** *** 275,279 **** /* * Test semctl () with SETVAL command ! * * Loop through all the semaphores and set the semaphore value * to the loop index (i). --- 275,279 ---- /* * Test semctl () with SETVAL command ! * * Loop through all the semaphores and set the semaphore value * to the loop index (i). *************** *** 289,293 **** /* * Test semctl () with GETVAL command ! * * Loop through all the semaphores and retrieve the semaphore values * and compare with the expected value, the loop index (i). --- 289,293 ---- /* * Test semctl () with GETVAL command ! * * Loop through all the semaphores and retrieve the semaphore values * and compare with the expected value, the loop index (i). *************** *** 333,338 **** * * Get semncnt (the number of processes awaiting semval > currval) ! * and insure that this value is 0... ! * * Note: A better test would include forking off a process that * waits for the semaphore so that semncnt would be nonzero. --- 333,338 ---- * * Get semncnt (the number of processes awaiting semval > currval) ! * and insure that this value is 0... ! * * Note: A better test would include forking off a process that * waits for the semaphore so that semncnt would be nonzero. *************** *** 344,348 **** sys_error ("semctl failed", __LINE__); if (val != 0) ! sys_error ("semctl (GETNCNT) returned wrong value", __LINE__); } --- 344,348 ---- sys_error ("semctl failed", __LINE__); if (val != 0) ! sys_error ("semctl (GETNCNT) returned wrong value", __LINE__); } *************** *** 352,357 **** * * Get semzcnt (the number of processes awaiting semval = currval) ! * and insure that this value is 0... ! * * Note: A better test would include forking off a process that * waits for the semaphore so that semzcnt would be nonzero. --- 352,357 ---- * * Get semzcnt (the number of processes awaiting semval = currval) ! * and insure that this value is 0... ! * * Note: A better test would include forking off a process that * waits for the semaphore so that semzcnt would be nonzero. *************** *** 363,367 **** sys_error ("semctl failed", __LINE__); if (val != 0) ! sys_error ("semctl (GETZCNT) returned wrong value", __LINE__); } --- 363,367 ---- sys_error ("semctl failed", __LINE__); if (val != 0) ! sys_error ("semctl (GETZCN... [truncated message content] |