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, 23 Dec 2011 13:48:36 +0800 [thread overview]
Message-ID: <1324619316-21596-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, 40 insertions(+), 12 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..93f6443 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,22 @@ 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 +222,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..c17c5b6 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,16 +122,27 @@ 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");
return PTS_UNRESOLVED;
}
+
param.sched_priority = (sched_get_priority_min(SCHED_RR) +
sched_get_priority_max(SCHED_RR)) / 2;
@@ -211,4 +225,4 @@ int main() {
return PTS_UNRESOLVED;
}
-}
\ No newline at end of file
+}
--
1.7.5.4
------------------------------------------------------------------------------
Write once. Port to many.
Get the SDK and tools to simplify cross-platform app development. Create
new or port existing apps to sell to consumers worldwide. Explore the
Intel AppUpSM program developer opportunity. appdeveloper.intel.com/join
http://p.sf.net/sfu/intel-appdev
_______________________________________________
Ltp-list mailing list
Ltp-list@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/ltp-list
next reply other threads:[~2011-12-23 5:48 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-12-23 5:48 Song.Li [this message]
2011-12-29 19:30 ` [LTP] [PATCH] sched_setparam/2-1.c and sched_setparam/2-2.c Cyril Hrubis
2011-12-29 19:32 ` Cyril Hrubis
-- strict thread matches above, loose matches on Subject: below --
2011-12-30 6:52 Song.Li
2011-12-30 12:24 ` 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=1324619316-21596-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.