From: Gui Jianfeng <guijianfeng@cn.fujitsu.com>
To: Garrett Cooper <yanegomi@gmail.com>
Cc: ltp-list@lists.sourceforge.net
Subject: Re: [LTP] [PATCH] open_posix_testsuite: Don't use clock_settime() to reset a CPU-time Clock
Date: Thu, 24 Feb 2011 14:21:10 +0800 [thread overview]
Message-ID: <4D65F8D6.7030207@cn.fujitsu.com> (raw)
In-Reply-To: <4CCA33F8.6020104@cn.fujitsu.com>
Hi Garrett,
This case always fails when I do the test. Would you take a look this patch,
If you don't object, can you commit this patch? Or give some comments about it.
Thanks,
Gui
Gui Jianfeng wrote:
> This case is trying to set CPU-time clock(ID is returned by clock_getcpuclockid()) of
> a specific process by calling clock_settime(). But Linux kernel doesn't allow to reset
> a CPU-time clock of a specific process. Kernel returns -EPERM. So test fails.
>
> In "IEEE Std 1003.1, 2004 Edition", It's said as following:
> If _POSIX_CPUTIME is defined, implementations shall support clock ID values obtained by
> invoking clock_getcpuclockid(), which represent the CPU-time clock of a given process.
> Implementations shall also support the special clockid_t value CLOCK_PROCESS_CPUTIME_ID,
> which represents the CPU-time clock of the calling process when invoking one of the
> clock_*() or timer_*() functions. For these clock IDs, the values returned by
> clock_gettime() and specified by clock_settime() represent the amount of execution time
> of the process associated with the clock. Changing the value of a CPU-time clock via
> clock_settime() shall have no effect on the behavior of the sporadic server scheduling
> policy.
>
> So the behaviour when changing the value of a CPU-time clock via clock_settime() is
> operating system specific.
>
> We may change the test progress to stop using clock_settime(). Now, We just make use
> of clock_gettime() instead to achieve the same test purpose.
>
> Signed-off-by: Gui Jianfeng <guijianfeng@cn.fujitsu.com>
> ---
> .../interfaces/clock_getcpuclockid/2-1.c | 67 ++++++++++----------
> 1 files changed, 33 insertions(+), 34 deletions(-)
>
> diff --git a/testcases/open_posix_testsuite/conformance/interfaces/clock_getcpuclockid/2-1.c b/testcases/open_posix_testsuite/conformance/interfaces/clock_getcpuclockid/2-1.c
> index edeb397..52240df 100644
> --- a/testcases/open_posix_testsuite/conformance/interfaces/clock_getcpuclockid/2-1.c
> +++ b/testcases/open_posix_testsuite/conformance/interfaces/clock_getcpuclockid/2-1.c
> @@ -23,48 +23,47 @@ int main(int argc, char *argv[])
> printf("_POSIX_CPUTIME unsupported\n");
> return PTS_UNSUPPORTED;
> #else
> - unsigned long time_to_set;
> clockid_t clockid_1, clockid_2;
> struct timespec tp1, tp2;
> + int i;
>
> if (sysconf(_SC_CPUTIME) == -1) {
> printf("_POSIX_CPUTIME unsupported\n");
> return PTS_UNSUPPORTED;
> }
>
> - if (clock_getcpuclockid(getpid(), &clockid_1) != 0) {
> - printf("clock_getcpuclockid(getpid(), ) failed\n");
> - return PTS_FAIL;
> - }
> -
> - if (clock_getcpuclockid(0, &clockid_2) != 0) {
> - printf("clock_getcpuclockid(0, ) failed\n");
> - return PTS_FAIL;
> - }
> + for (i = 0; i < 10; i++) {
> + if (clock_getcpuclockid(getpid(), &clockid_1) != 0) {
> + printf("clock_getcpuclockid(getpid(), ) failed\n");
> + return PTS_FAIL;
> + }
>
> - /* Set clockid_1 as a random value from 1 sec to 10 sec */
> - srand((unsigned long)time(NULL));
> - time_to_set = rand() * 10.0 / RAND_MAX + 1;
> - tp1.tv_sec = time_to_set;
> - tp1.tv_nsec = 0;
> - if (clock_settime(clockid_1, &tp1) != 0) {
> - printf("clock_getcpuclockid() returned an invalid clockid_t: "
> - "%d\n", clockid_1);
> - return PTS_FAIL;
> - }
> - /* Get the time of clockid_2, should almost the same as clockid_1 */
> - if (clock_gettime(clockid_2, &tp2) != 0) {
> - printf("clock_getcpuclockid() returned an invalid clockid_t: "
> - "%d\n", clockid_2);
> - return PTS_FAIL;
> - }
> - if (tp1.tv_sec == tp2.tv_sec)
> - {
> - printf("Test PASSED\n");
> - return PTS_PASS;
> - }
> - printf("Test FAILED\n");
> - return PTS_FAIL;
> -
> + if (clock_getcpuclockid(0, &clockid_2) != 0) {
> + printf("clock_getcpuclockid(0, ) failed\n");
> + return PTS_FAIL;
> + }
> +
> + /* Get the time of clockid_1 */
> + if (clock_gettime(clockid_1, &tp1) != 0) {
> + printf("clock_getcpuclockid() returned an invalid clockid_t: "
> + "%d\n", clockid_1);
> + return PTS_FAIL;
> + }
> +
> + /* Get the time of clockid_2, should almost the same as clockid_1 */
> + if (clock_gettime(clockid_2, &tp2) != 0) {
> + printf("clock_getcpuclockid() returned an invalid clockid_t: "
> + "%d\n", clockid_2);
> + return PTS_FAIL;
> + }
> +
> + if (tp1.tv_sec != tp2.tv_sec) {
> + printf("Test FAILED\n");
> + return PTS_FAIL;
> + }
> + }
> +
> + printf("Test PASSED\n");
> + return PTS_PASS;
> #endif
> }
------------------------------------------------------------------------------
Free Software Download: Index, Search & Analyze Logs and other IT data in
Real-Time with Splunk. Collect, index and harness all the fast moving IT data
generated by your applications, servers and devices whether physical, virtual
or in the cloud. Deliver compliance at lower cost and gain new business
insights. http://p.sf.net/sfu/splunk-dev2dev
_______________________________________________
Ltp-list mailing list
Ltp-list@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/ltp-list
next prev parent reply other threads:[~2011-02-24 6:21 UTC|newest]
Thread overview: 11+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-10-29 2:39 [LTP] [PATCH] open_posix_testsuite: Don't use clock_settime() to reset a CPU-time Clock Gui Jianfeng
2010-11-08 4:09 ` Gui Jianfeng
2010-11-08 6:02 ` Garrett Cooper
2010-11-08 6:20 ` Gui Jianfeng
2010-11-15 3:20 ` Gui Jianfeng
2010-11-18 20:29 ` Cyril Hrubis
[not found] ` <AANLkTimz2WBPfwCBHajqzA7Uk_72MZeTJdWB0Zbkch8B@mail.gmail.com>
[not found] ` <AANLkTi=YvMBmUQLSmtq8aM0+s2-X3BmRM13fSUa6a1-1@mail.gmail.com>
[not found] ` <4CF4CCD7.3060009@cn.fujitsu.com>
2010-12-02 12:13 ` Cyril Hrubis
2010-12-30 16:50 ` Cyril Hrubis
2011-02-24 6:21 ` Gui Jianfeng [this message]
2011-02-25 14:50 ` Cyril Hrubis
-- strict thread matches above, loose matches on Subject: below --
2010-12-02 0:29 [LTP] [PATCH] open_posix_testsuite: Don\'t " Mitani
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=4D65F8D6.7030207@cn.fujitsu.com \
--to=guijianfeng@cn.fujitsu.com \
--cc=ltp-list@lists.sourceforge.net \
--cc=yanegomi@gmail.com \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox