All of lore.kernel.org
 help / color / mirror / Atom feed
From: Jan Stancek <jstancek@redhat.com>
To: DAN LI <li.dan@cn.fujitsu.com>
Cc: ltp-list@lists.sourceforge.net
Subject: Re: [LTP] [PATCH V3 2/2] shmctl/shmctl01.c: Test features IPC_INFO, SHM_STAT, SHM_LOCK and SHM_UNLOCK.
Date: Fri, 24 May 2013 08:13:06 -0400 (EDT)	[thread overview]
Message-ID: <319673616.7044029.1369397586287.JavaMail.root@redhat.com> (raw)
In-Reply-To: <519F37CF.4030209@cn.fujitsu.com>





----- Original Message -----
> From: "DAN LI" <li.dan@cn.fujitsu.com>
> To: ltp-list@lists.sourceforge.net
> Cc: "Jan Stancek" <jstancek@redhat.com>
> Sent: Friday, 24 May, 2013 11:50:07 AM
> Subject: [LTP] [PATCH V3 2/2] shmctl/shmctl01.c: Test features IPC_INFO, SHM_STAT, SHM_LOCK and SHM_UNLOCK.
> 
> 
> 
> Additional tests for features IPC_INFO, SHM_STAT, SHM_LOCK and SHM_UNLOCK.
> 
> 
> Signed-off-by: DAN LI <li.dan@cn.fujitsu.com>
> ---
>  testcases/kernel/syscalls/ipc/shmctl/shmctl01.c | 96
>  +++++++++++++++++++++----
>  1 file changed, 81 insertions(+), 15 deletions(-)
> 
> Hi,
> Jan
> 
> How about this V3?
> 
> Regards,
> DAN LI

Looks good to me.
Reviewed-by: Jan Stancek <jstancek@redhat.com>

> 
> 
> diff --git a/testcases/kernel/syscalls/ipc/shmctl/shmctl01.c
> b/testcases/kernel/syscalls/ipc/shmctl/shmctl01.c
> index 34ff30c..cba1a1d 100644
> --- a/testcases/kernel/syscalls/ipc/shmctl/shmctl01.c
> +++ b/testcases/kernel/syscalls/ipc/shmctl/shmctl01.c
> @@ -43,13 +43,18 @@
>   *	call cleanup
>   */
> 
> +#ifndef _GNU_SOURCE
> +#define _GNU_SOURCE
> +#endif
>  #include "ipcshm.h"
>  #include "libtestsuite.h"
> 
>  char *TCID = "shmctl01";
> 
>  static int shm_id_1 = -1;
> +static int shm_index;
>  static struct shmid_ds buf;
> +static struct shminfo info;
>  static long save_time;
> 
>  #define FIRST	0
> @@ -64,34 +69,52 @@ static pid_t pid_arr[N_ATTACH];
>  static int sync_pipes[2];
> 
>  /* Setup, cleanup and check routines for IPC_STAT */
> -static void stat_setup(void), func_stat(void);
> +static void stat_setup(void), func_istat(int ret);
>  static void stat_cleanup(void);
> 
>  /* Setup and check routines for IPC_SET */
> -static void set_setup(void), func_set(void);
> +static void set_setup(void), func_set(int ret);
> +
> +/* Check routine for IPC_INFO */
> +static void func_info(int ret);
> +
> +/* Check routine for SHM_STAT */
> +static void func_sstat(int ret);
> +
> +/* Check routine for SHM_LOCK */
> +static void func_lock(int ret);
> +
> +/* Check routine for SHM_UNLOCK */
> +static void func_unlock(int ret);
> 
>  /* Check routine for IPC_RMID */
> -static void func_rmid(void);
> +static void func_rmid(int ret);
> 
>  /* Child function */
>  static void do_child(void);
> 
>  static struct test_case_t {
> +	int *shmid;
>  	int cmd;
> -	void (*func_test) ();
> -	void (*func_setup) ();
> +	struct shmid_ds *arg;
> +	void (*func_test) (int);
> +	void (*func_setup) (void);
>  } TC[] = {
> -	{IPC_STAT, func_stat, stat_setup},
> +	{&shm_id_1, IPC_STAT, &buf, func_istat, stat_setup},
>  #ifndef UCLINUX
>  	    /*
>  	     * The second test is not applicable to uClinux;
>  	     * shared memory segments are detached on exec(),
>  	     * so cannot be passed to uClinux children.
>  	     */
> -	{IPC_STAT, func_stat, stat_setup},
> +	{&shm_id_1, IPC_STAT, &buf, func_istat, stat_setup},
>  #endif
> -	{IPC_SET, func_set, set_setup},
> -	{IPC_RMID, func_rmid, NULL},
> +	{&shm_id_1, IPC_SET, &buf, func_set, set_setup},
> +	{&shm_id_1, IPC_INFO, (struct shmid_ds *) &info, func_info, NULL},
> +	{&shm_index, SHM_STAT, &buf, func_sstat, NULL},
> +	{&shm_id_1, SHM_LOCK, NULL, func_lock, NULL},
> +	{&shm_id_1, SHM_UNLOCK, NULL, func_unlock, NULL},
> +	{&shm_id_1, IPC_RMID, NULL, func_rmid, NULL},
>  };
> 
>  static int TST_TOTAL = ARRAY_SIZE(TC);
> @@ -146,7 +169,7 @@ int main(int argc, char *argv[])
>  			if (TC[i].func_setup != NULL)
>  				(*TC[i].func_setup) ();
> 
> -			TEST(shmctl(shm_id_1, TC[i].cmd, &buf));
> +			TEST(shmctl(*(TC[i].shmid), TC[i].cmd, TC[i].arg));
> 
>  			if (TEST_RETURN == -1) {
>  				tst_resm(TFAIL, "%s call failed - errno "
> @@ -155,7 +178,7 @@ int main(int argc, char *argv[])
>  				continue;
>  			}
>  			if (STD_FUNCTIONAL_TEST) {
> -				(*TC[i].func_test) ();
> +				(*TC[i].func_test) (TEST_RETURN);
>  			} else {
>  				tst_resm(TPASS, "call succeeded");
> 
> @@ -294,11 +317,11 @@ void do_child(void)
>  }
> 
>  /*
> - * func_stat() - check the functionality of the IPC_STAT command with
> shmctl()
> + * func_istat() - check the functionality of the IPC_STAT command with
> shmctl()
>   *		 by looking at the pid of the creator, the segement size,
>   *		 the number of attaches and the mode.
>   */
> -void func_stat(void)
> +void func_istat(int ret)
>  {
>  	int fail = 0;
>  	pid_t pid;
> @@ -392,7 +415,7 @@ void set_setup(void)
>  /*
>   * func_set() - check the functionality of the IPC_SET command with shmctl()
>   */
> -void func_set(void)
> +void func_set(int ret)
>  {
>  	int fail = 0;
> 
> @@ -419,10 +442,53 @@ void func_set(void)
>  	tst_resm(TPASS, "new mode and change time are correct");
>  }
> 
> +static void func_info(int ret)
> +{
> +	if (info.shmmin != 1)
> +		tst_resm(TFAIL, "value of shmmin is incorrect");
> +	else
> +		tst_resm(TPASS, "get correct shared memory limits");
> +}
> +
> +static void func_sstat(int ret)
> +{
> +	if (ret >= 0)
> +		tst_resm(TPASS, "get correct shared memory id");
> +	else
> +		tst_resm(TFAIL, "shared memory id is incorrect");
> +}
> +
> +static void func_lock(int ret)
> +{
> +	if (shmctl(shm_id_1, IPC_STAT, &buf) == -1) {
> +		tst_resm(TBROK, "stat failed in func_lock()");
> +		return;
> +	}
> +
> +	if (buf.shm_perm.mode & SHM_LOCKED)
> +		tst_resm(TPASS, "SHM_LOCK is set");
> +	else
> +		tst_resm(TFAIL, "SHM_LOCK is cleared");
> +}
> +
> +static void func_unlock(int ret)
> +{
> +	if (shmctl(shm_id_1, IPC_STAT, &buf) == -1) {
> +		tst_resm(TBROK, "stat failed in func_unlock()");
> +		return;
> +	}
> +
> +	if (buf.shm_perm.mode & SHM_LOCKED)
> +		tst_resm(TFAIL, "SHM_LOCK is set");
> +	else
> +		tst_resm(TPASS, "SHM_LOCK is cleared");
> +}
> +
> +
>  /*
>   * func_rmid() - check the functionality of the IPC_RMID command with
>   shmctl()
>   */
> -void func_rmid(void)
> +void func_rmid(int ret)
>  {
>  	/* Do another shmctl() - we should get EINVAL */
>  	if (shmctl(shm_id_1, IPC_STAT, &buf) != -1)
> --
> 1.8.1
> 

------------------------------------------------------------------------------
Try New Relic Now & We'll Send You this Cool Shirt
New Relic is the only SaaS-based application performance monitoring service 
that delivers powerful full stack analytics. Optimize and monitor your
browser, app, & servers with just a few lines of code. Try New Relic
and get this awesome Nerd Life shirt! http://p.sf.net/sfu/newrelic_d2d_may
_______________________________________________
Ltp-list mailing list
Ltp-list@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/ltp-list

  reply	other threads:[~2013-05-24 12:13 UTC|newest]

Thread overview: 10+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-05-23  8:35 [LTP] [PATCH 1/2] shmctl/shmctl01.c: cleanup DAN LI
2013-05-23  8:39 ` [LTP] [PATCH 2/2] shmctl/shmctl01.c: Test features IPC_INFO, SHM_STAT, SHM_LOCK and SHM_UNLOCK DAN LI
2013-05-23 13:01   ` Jan Stancek
2013-05-24  5:18     ` DAN LI
2013-05-24  5:23 ` [LTP] [PATCH V2 " DAN LI
2013-05-24  8:02   ` Jan Stancek
2013-05-24  9:50 ` [LTP] [PATCH V3 " DAN LI
2013-05-24 12:13   ` Jan Stancek [this message]
2013-05-24 12:47   ` Wanlong Gao
2013-05-24 12:46 ` [LTP] [PATCH 1/2] shmctl/shmctl01.c: cleanup Wanlong Gao

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=319673616.7044029.1369397586287.JavaMail.root@redhat.com \
    --to=jstancek@redhat.com \
    --cc=li.dan@cn.fujitsu.com \
    --cc=ltp-list@lists.sourceforge.net \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.