All of lore.kernel.org
 help / color / mirror / Atom feed
From: <Song.Li@windriver.com>
To: ltp-list@lists.sourceforge.net
Subject: [LTP] [PATCH] sched_setparam/2-1.c and sched_setparam/2-2.c
Date: Fri, 30 Dec 2011 14:52:20 +0800	[thread overview]
Message-ID: <1325227940-9971-1-git-send-email-Song.Li@windriver.com> (raw)

From: LiSong <Song.Li@windriver.com>

There is no guarantee that the LOOP of the child proecess
can be certainly big enough on any device at any time.
So if set_affinity function is available,
use it to bind the test processes to a single CPU
rather than using the LOOP.

Signed-off-by: Song.Li <Song.Li@windriver.com>
---
 .../conformance/interfaces/sched_setparam/2-1.c    |   26 ++++++++++++++++----
 .../conformance/interfaces/sched_setparam/2-2.c    |   26 ++++++++++++++++----
 2 files changed, 42 insertions(+), 10 deletions(-)

diff --git a/testcases/open_posix_testsuite/conformance/interfaces/sched_setparam/2-1.c b/testcases/open_posix_testsuite/conformance/interfaces/sched_setparam/2-1.c
index c548dd4..2d20f9f 100644
--- a/testcases/open_posix_testsuite/conformance/interfaces/sched_setparam/2-1.c
+++ b/testcases/open_posix_testsuite/conformance/interfaces/sched_setparam/2-1.c
@@ -29,6 +29,7 @@
  *
  */
 
+#define _GNU_SOURCE
 #include <sched.h>
 #include <stdio.h>
 #include <signal.h>
@@ -48,6 +49,8 @@
 # include <sys/pstat.h>
 #endif
 
+#include <affinity.h>
+
 #define NB_LOOP         20000000
 #define NB_LOOP_CHILD  200000000 /* shall be much greater than NB_LOOP */
 
@@ -119,11 +122,24 @@ int main() {
 	int *child_pid;
 	float ratio;
 
-	nb_child = get_ncpu();
-	if (nb_child == -1) {
-		printf("Can not get the number of CPUs of your machine.\n");
-		return PTS_UNRESOLVED;
+	/* Only use a single CPU and one child process
+	when set_affinity is availaible.It's because
+	no matter what value of the counter is set to,
+	There is no guarantee that the LOOP of the child
+	can be certainly big enough on any device at any time.
+	*/
+	int rc = set_affinity(0);
+	if (rc) {
+		nb_child = get_ncpu();
+		if (nb_child == -1) {
+			printf("Can not get the number of"
+				"CPUs of your machine.\n");
+			return PTS_UNRESOLVED;
+		}
+	} else {
+		nb_child = 1;
 	}
+
 	child_pid = malloc(nb_child);
 
 	param.sched_priority = (sched_get_priority_min(SCHED_FIFO) +
@@ -208,4 +224,4 @@ int main() {
 		return PTS_UNRESOLVED;
 	}
 
-}
\ No newline at end of file
+}
diff --git a/testcases/open_posix_testsuite/conformance/interfaces/sched_setparam/2-2.c b/testcases/open_posix_testsuite/conformance/interfaces/sched_setparam/2-2.c
index 2b71893..08cdc34 100644
--- a/testcases/open_posix_testsuite/conformance/interfaces/sched_setparam/2-2.c
+++ b/testcases/open_posix_testsuite/conformance/interfaces/sched_setparam/2-2.c
@@ -29,6 +29,7 @@
  *
  */
 
+#define _GNU_SOURCE
 #include <sched.h>
 #include <stdio.h>
 #include <signal.h>
@@ -48,6 +49,8 @@
 # include <sys/pstat.h>
 #endif
 
+#include <affinity.h>
+
 #define NB_LOOP         20000000
 #define NB_LOOP_CHILD  200000000 /* shall be much greater than NB_LOOP */
 
@@ -119,11 +122,24 @@ int main() {
 	int *child_pid;
 	float ratio;
 
-	nb_child = get_ncpu();
-	if (nb_child == -1) {
-		printf("Can not get the number of CPUs of your machine.\n");
-		return PTS_UNRESOLVED;
+	/* Only use a single CPU and one child process
+	when set_affinity is availaible.It's because
+	no matter what value of the counter is set to,
+	There is no guarantee that the LOOP of the child
+	can be certainly big enough on any device at any time.
+	*/
+	int rc = set_affinity(0);
+	if (rc) {
+		nb_child = get_ncpu();
+		if (nb_child == -1) {
+			printf("Can not get the number of"
+				"CPUs of your machine.\n");
+			return PTS_UNRESOLVED;
+		}
+	} else {
+		nb_child = 1;
 	}
+
 	child_pid = malloc(nb_child);
 	if (child_pid == NULL) {
 		printf("malloc failed\n");
@@ -211,4 +227,4 @@ int main() {
 		return PTS_UNRESOLVED;
 	}
 
-}
\ No newline at end of file
+}
-- 
1.7.5.4


------------------------------------------------------------------------------
Ridiculously easy VDI. With Citrix VDI-in-a-Box, you don't need a complex
infrastructure or vast IT resources to deliver seamless, secure access to
virtual desktops. With this all-in-one solution, easily deploy virtual 
desktops for less than the cost of PCs and save 60% on VDI infrastructure 
costs. Try it free! http://p.sf.net/sfu/Citrix-VDIinabox
_______________________________________________
Ltp-list mailing list
Ltp-list@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/ltp-list

             reply	other threads:[~2011-12-30  6:52 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-12-30  6:52 Song.Li [this message]
2011-12-30 12:24 ` [LTP] [PATCH] sched_setparam/2-1.c and sched_setparam/2-2.c Cyril Hrubis
  -- strict thread matches above, loose matches on Subject: below --
2011-12-23  5:48 Song.Li
2011-12-29 19:30 ` Cyril Hrubis
2011-12-29 19:32   ` Cyril Hrubis

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=1325227940-9971-1-git-send-email-Song.Li@windriver.com \
    --to=song.li@windriver.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.