Linux Test Project
 help / color / mirror / Atom feed
* Re: [LTP] clock_settime: use POSIX runtime detection for CLOCK_MONOTONIC
  2026-04-16 13:01 [LTP] [PATCH] " Andrea Cervesato
@ 2026-04-16 13:35 ` linuxtestproject.agent
  0 siblings, 0 replies; 9+ messages in thread
From: linuxtestproject.agent @ 2026-04-16 13:35 UTC (permalink / raw)
  To: Andrea Cervesato; +Cc: ltp, LTP AI Reviewer

Hi Andrea,

On Thu, 16 Apr 2026, Andrea Cervesato wrote:
> clock_settime: use POSIX runtime detection for CLOCK_MONOTONIC

Reviewed-by: LTP AI Reviewer <ltp-ai@noreply.github.com>

---
Note:

Our agent completed the review of the patch. The full review can be
found at: https://github.com/linux-test-project/ltp-agent/actions/runs/24513029369

The agent can sometimes produce false positives although often its
findings are genuine. If you find issues with the review, please
comment this email or ignore the suggestions.

-- 
Mailing list info: https://lists.linux.it/listinfo/ltp

^ permalink raw reply	[flat|nested] 9+ messages in thread

* [LTP] [PATCH v2] clock_settime: use POSIX runtime detection for CLOCK_MONOTONIC
@ 2026-04-28 12:24 Andrea Cervesato
  2026-04-28 14:42 ` [LTP] " linuxtestproject.agent
  2026-04-29  7:53 ` [LTP] [PATCH v2] " Petr Vorel
  0 siblings, 2 replies; 9+ messages in thread
From: Andrea Cervesato @ 2026-04-28 12:24 UTC (permalink / raw)
  To: Linux Test Project

From: Andrea Cervesato <andrea.cervesato@suse.com>

The clock_settime helpers.h used a compile-time #ifdef on
_POSIX_MONOTONIC_CLOCK to select between real and stub
implementations of pts_mono_time_start()/pts_mono_time_check().

On Linux/glibc, _POSIX_MONOTONIC_CLOCK is defined as 0, meaning
support is optional and must be verified at runtime via
sysconf(_SC_MONOTONIC_CLOCK). The #ifdef treated 0 the same as
>0 (always available), which is not POSIX-correct.

Replace the compile-time #ifdef/#else split with a runtime
pts_mono_available() helper that performs proper POSIX detection
via sysconf(). Extract pts_mono_available() into the shared
include/clock.h so it can be reused by nanosleep helpers as well.
Also add a missing #ifndef include guard and #include <unistd.h>
so _POSIX_MONOTONIC_CLOCK is always defined.

Fixes: 9ecb4a004b18 ("clock_settime: Detect external clock adjustments via CLOCK_MONOTONIC")
Signed-off-by: Andrea Cervesato <andrea.cervesato@suse.com>
---
Changes in v2:
- add testcases/open_posix_testsuite/include/clock.h helper
- Link to v1: https://lore.kernel.org/r/20260416-fix_clock_settime_helper-v1-1-2874202291bf@suse.com
---
 .../conformance/interfaces/clock_settime/helpers.h | 67 ++++++++++++----------
 testcases/open_posix_testsuite/include/clock.h     | 23 ++++++++
 2 files changed, 59 insertions(+), 31 deletions(-)

diff --git a/testcases/open_posix_testsuite/conformance/interfaces/clock_settime/helpers.h b/testcases/open_posix_testsuite/conformance/interfaces/clock_settime/helpers.h
index 37bf30926f039553e9e370751b7938ca5ea1d00a..2802b694133b90f478ee10073bcdfa0e34320f7d 100644
--- a/testcases/open_posix_testsuite/conformance/interfaces/clock_settime/helpers.h
+++ b/testcases/open_posix_testsuite/conformance/interfaces/clock_settime/helpers.h
@@ -13,7 +13,12 @@
  * by those tests.
  */
 
+#ifndef CLOCK_SETTIME_HELPERS_H
+#define CLOCK_SETTIME_HELPERS_H
+
 #include <stdlib.h>
+#include <unistd.h>
+#include "clock.h"
 
 static int getBeforeTime(struct timespec *tpget)
 {
@@ -37,53 +42,53 @@ static int setBackTime(struct timespec tpset)
 
 #define PTS_MONO_MAX_RETRIES 3
 
-#ifdef _POSIX_MONOTONIC_CLOCK
-static struct timespec _pts_mono_start;
+static struct timespec pts_mono_start;
 
 static inline int pts_mono_time_start(void)
 {
-	if (clock_gettime(CLOCK_MONOTONIC, &_pts_mono_start) != 0) {
+	if (!pts_mono_available()) {
+		static int warned;
+
+		if (!warned) {
+			printf("CLOCK_MONOTONIC unavailable, test may fail due to clock adjustment\n");
+			warned = 1;
+		}
+		return 0;
+	}
+
+#ifdef _POSIX_MONOTONIC_CLOCK
+	if (clock_gettime(CLOCK_MONOTONIC, &pts_mono_start) != 0) {
 		perror("clock_gettime(CLOCK_MONOTONIC) failed");
 		return -1;
 	}
+#endif
 	return 0;
 }
 
 static inline int pts_mono_time_check(unsigned int expected_secs)
 {
-	struct timespec now;
-	long elapsed;
-
-	if (clock_gettime(CLOCK_MONOTONIC, &now) != 0) {
-		perror("clock_gettime(CLOCK_MONOTONIC) failed");
-		return -1;
-	}
+#ifdef _POSIX_MONOTONIC_CLOCK
+	if (pts_mono_available()) {
+		struct timespec now;
+		long elapsed;
 
-	elapsed = now.tv_sec - _pts_mono_start.tv_sec;
+		if (clock_gettime(CLOCK_MONOTONIC, &now) != 0) {
+			perror("clock_gettime(CLOCK_MONOTONIC) failed");
+			return -1;
+		}
 
-	if (labs(elapsed - (long)expected_secs) > 1) {
-		printf("Clock adjustment detected (elapsed %lds, expected ~%us)\n",
-		       elapsed, expected_secs);
-		return 1;
-	}
-	return 0;
-}
-#else
-static inline int pts_mono_time_start(void)
-{
-	static int warned;
+		elapsed = now.tv_sec - pts_mono_start.tv_sec;
 
-	if (!warned) {
-		printf("CLOCK_MONOTONIC unavailable, test may fail due to clock adjustment\n");
-		warned = 1;
+		if (labs(elapsed - (long)expected_secs) > 1) {
+			printf("Clock adjustment detected (elapsed %lds, expected ~%us)\n",
+			       elapsed, expected_secs);
+			return 1;
+		}
+		return 0;
 	}
-	return 0;
-}
-
-static inline int pts_mono_time_check(unsigned int expected_secs)
-{
+#endif
 	(void)expected_secs;
 	return 0;
 }
-#endif
 
+#endif /* CLOCK_SETTIME_HELPERS_H */
diff --git a/testcases/open_posix_testsuite/include/clock.h b/testcases/open_posix_testsuite/include/clock.h
new file mode 100644
index 0000000000000000000000000000000000000000..351064f988bd1af75aa16da03bf8a545990bbbfc
--- /dev/null
+++ b/testcases/open_posix_testsuite/include/clock.h
@@ -0,0 +1,23 @@
+/*
+ * Copyright (c) 2026, Linux Test Project
+ * SPDX-License-Identifier: GPL-2.0-or-later
+ */
+
+#ifndef PTS_CLOCK_H
+#define PTS_CLOCK_H
+
+#include <unistd.h>
+
+static inline int pts_mono_available(void)
+{
+#ifdef _POSIX_MONOTONIC_CLOCK
+	if (_POSIX_MONOTONIC_CLOCK > 0)
+		return 1;
+
+	if (!_POSIX_MONOTONIC_CLOCK && sysconf(_SC_MONOTONIC_CLOCK) > 0)
+		return 1;
+#endif
+	return 0;
+}
+
+#endif /* PTS_CLOCK_H */

---
base-commit: 068617a55d86f94c21cc8cbaef1c8dd7b31531e3
change-id: 20260416-fix_clock_settime_helper-d47f0db0057e

Best regards,
-- 
Andrea Cervesato <andrea.cervesato@suse.com>


-- 
Mailing list info: https://lists.linux.it/listinfo/ltp

^ permalink raw reply related	[flat|nested] 9+ messages in thread

* Re: [LTP] clock_settime: use POSIX runtime detection for CLOCK_MONOTONIC
  2026-04-28 12:24 [LTP] [PATCH v2] clock_settime: use POSIX runtime detection for CLOCK_MONOTONIC Andrea Cervesato
@ 2026-04-28 14:42 ` linuxtestproject.agent
  2026-04-29  7:22   ` Andrea Cervesato via ltp
  2026-04-29  7:53 ` [LTP] [PATCH v2] " Petr Vorel
  1 sibling, 1 reply; 9+ messages in thread
From: linuxtestproject.agent @ 2026-04-28 14:42 UTC (permalink / raw)
  To: Andrea Cervesato; +Cc: ltp

Hi Andrea,

On Tue, 28 Apr 2026 14:24:50 +0200, Andrea Cervesato wrote:
> clock_settime: use POSIX runtime detection for CLOCK_MONOTONIC

> +++ b/testcases/open_posix_testsuite/include/clock.h
> @@ -0,0 +1,23 @@
> +/*
> + * Copyright (c) 2026, Linux Test Project
> + * SPDX-License-Identifier: GPL-2.0-or-later
> + */

New Open POSIX testsuite headers should carry a "Created by: name <email>"
line and a brief description of the file's purpose in the copyright block,
consistent with the rest of the tree (e.g. helpers.h). Please add both.

[...]

---
Note:

Our agent completed the review of the patch. The full review can be found at:
https://patchwork.ozlabs.org/project/ltp/list/?series=501837

The agent can sometimes produce false positives although often its findings
are genuine. If you find issues with the review, please comment this email
or ignore the suggestions.

Regards,
LTP AI Reviewer

-- 
Mailing list info: https://lists.linux.it/listinfo/ltp

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [LTP] clock_settime: use POSIX runtime detection for CLOCK_MONOTONIC
  2026-04-28 14:42 ` [LTP] " linuxtestproject.agent
@ 2026-04-29  7:22   ` Andrea Cervesato via ltp
  2026-04-29  8:04     ` Petr Vorel
  0 siblings, 1 reply; 9+ messages in thread
From: Andrea Cervesato via ltp @ 2026-04-29  7:22 UTC (permalink / raw)
  To: linuxtestproject.agent; +Cc: ltp

> 
> New Open POSIX testsuite headers should carry a "Created by: name <email>"
> line and a brief description of the file's purpose in the copyright block,
> consistent with the rest of the tree (e.g. helpers.h). Please add both.
> 

This is correct, I will fix it before merging it.
Ping @Petr

--
Andrea Cervesato
SUSE QE Automation Engineer Linux
andrea.cervesato@suse.com

-- 
Mailing list info: https://lists.linux.it/listinfo/ltp

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [LTP] [PATCH v2] clock_settime: use POSIX runtime detection for CLOCK_MONOTONIC
  2026-04-28 12:24 [LTP] [PATCH v2] clock_settime: use POSIX runtime detection for CLOCK_MONOTONIC Andrea Cervesato
  2026-04-28 14:42 ` [LTP] " linuxtestproject.agent
@ 2026-04-29  7:53 ` Petr Vorel
  2026-04-29  7:59   ` Andrea Cervesato via ltp
  1 sibling, 1 reply; 9+ messages in thread
From: Petr Vorel @ 2026-04-29  7:53 UTC (permalink / raw)
  To: Andrea Cervesato; +Cc: Linux Test Project

Hi Andrea,

> +#include <unistd.h>
> +#include "clock.h"

>  static int getBeforeTime(struct timespec *tpget)
>  {
> @@ -37,53 +42,53 @@ static int setBackTime(struct timespec tpset)

>  #define PTS_MONO_MAX_RETRIES 3

> -#ifdef _POSIX_MONOTONIC_CLOCK
> -static struct timespec _pts_mono_start;
> +static struct timespec pts_mono_start;

>  static inline int pts_mono_time_start(void)
>  {
> -	if (clock_gettime(CLOCK_MONOTONIC, &_pts_mono_start) != 0) {
> +	if (!pts_mono_available()) {
> +		static int warned;
> +
> +		if (!warned) {
> +			printf("CLOCK_MONOTONIC unavailable, test may fail due to clock adjustment\n");
> +			warned = 1;
> +		}
Function with this warning could be in include/clock.h as well, because that
will be needed for nanosleep tests. But you can postpone it to nanosleep
changes.

Reviewed-by: Petr Vorel <pvorel@suse.cz>

Kind regards,
Petr

> +		return 0;
> +	}
...

-- 
Mailing list info: https://lists.linux.it/listinfo/ltp

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [LTP] [PATCH v2] clock_settime: use POSIX runtime detection for CLOCK_MONOTONIC
  2026-04-29  7:53 ` [LTP] [PATCH v2] " Petr Vorel
@ 2026-04-29  7:59   ` Andrea Cervesato via ltp
  0 siblings, 0 replies; 9+ messages in thread
From: Andrea Cervesato via ltp @ 2026-04-29  7:59 UTC (permalink / raw)
  To: Petr Vorel; +Cc: Linux Test Project

Hi Petr,

> Function with this warning could be in include/clock.h as well, because that
> will be needed for nanosleep tests. But you can postpone it to nanosleep
> changes.

I can do it here, no problem.

--
Andrea Cervesato
SUSE QE Automation Engineer Linux
andrea.cervesato@suse.com

-- 
Mailing list info: https://lists.linux.it/listinfo/ltp

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [LTP] clock_settime: use POSIX runtime detection for CLOCK_MONOTONIC
  2026-04-29  7:22   ` Andrea Cervesato via ltp
@ 2026-04-29  8:04     ` Petr Vorel
  2026-04-29  8:13       ` Andrea Cervesato via ltp
  0 siblings, 1 reply; 9+ messages in thread
From: Petr Vorel @ 2026-04-29  8:04 UTC (permalink / raw)
  To: Andrea Cervesato; +Cc: ltp, linuxtestproject.agent


> > New Open POSIX testsuite headers should carry a "Created by: name <email>"
> > line and a brief description of the file's purpose in the copyright block,
> > consistent with the rest of the tree (e.g. helpers.h). Please add both.


> This is correct, I will fix it before merging it.
> Ping @Petr

Replied previously. BTW Agent removed "v2" from the title [1], therefore I did
not reply here because I did not want my reply to endup in old patch version.

It'd be great if Agent just keep the title to not confuse humans (people usually
trust the title instead of parsing In-Reply-To:).

Kind regards,
Petr

[1] https://lore.kernel.org/ltp/20260428144259.3779-1-linuxtestproject.agent@gmail.com/

-- 
Mailing list info: https://lists.linux.it/listinfo/ltp

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [LTP] clock_settime: use POSIX runtime detection for CLOCK_MONOTONIC
  2026-04-29  8:04     ` Petr Vorel
@ 2026-04-29  8:13       ` Andrea Cervesato via ltp
  0 siblings, 0 replies; 9+ messages in thread
From: Andrea Cervesato via ltp @ 2026-04-29  8:13 UTC (permalink / raw)
  To: Petr Vorel; +Cc: ltp, linuxtestproject.agent

> 
> > > New Open POSIX testsuite headers should carry a "Created by: name <email>"
> > > line and a brief description of the file's purpose in the copyright block,
> > > consistent with the rest of the tree (e.g. helpers.h). Please add both.
> 
> 
> > This is correct, I will fix it before merging it.
> > Ping @Petr
> 
> Replied previously. BTW Agent removed "v2" from the title [1], therefore I did
> not reply here because I did not want my reply to endup in old patch version.
> 
> It'd be great if Agent just keep the title to not confuse humans (people usually
> trust the title instead of parsing In-Reply-To:).
> 

I didn't find a way to do it yet. I will take a look

--
Andrea Cervesato
SUSE QE Automation Engineer Linux
andrea.cervesato@suse.com

-- 
Mailing list info: https://lists.linux.it/listinfo/ltp

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [LTP] clock_settime: use POSIX runtime detection for CLOCK_MONOTONIC
  2026-04-29  8:28 [LTP] [PATCH v3] " Andrea Cervesato
@ 2026-04-29 10:12 ` linuxtestproject.agent
  0 siblings, 0 replies; 9+ messages in thread
From: linuxtestproject.agent @ 2026-04-29 10:12 UTC (permalink / raw)
  To: Andrea Cervesato; +Cc: ltp

Hi Andrea,

On Wed, 29 Apr 2026 10:28:35 +0200, Andrea Cervesato wrote:
> clock_settime: use POSIX runtime detection for CLOCK_MONOTONIC

> +/*
> + * Copyright (c) 2026, Linux Test Project
> + * SPDX-License-Identifier: GPL-2.0-or-later
> + */

Missing `Created by:` attribution line. Other headers in this directory
(posixtest.h, mq_send.h) carry it. Add:
  * Created by: Andrea Cervesato <andrea.cervesato@suse.com>

[...]

Pre-existing issues noticed in the surrounding code (not introduced
by this patch):

- clock_settime/4-1.c (and siblings) — uses `test_main` instead of `int main`
- clock_settime/helpers.h — `getBeforeTime()`/`setBackTime()` call perror()
  without including <stdio.h> in the header itself

---
Note:

Our agent completed the review of the patch. The full review can be
found at: https://github.com/linux-test-project/ltp-agent/actions/runs/25102778503

The agent can sometimes produce false positives although often its
findings are genuine. If you find issues with the review, please
comment this email or ignore the suggestions.

Regards,
LTP AI Reviewer

-- 
Mailing list info: https://lists.linux.it/listinfo/ltp

^ permalink raw reply	[flat|nested] 9+ messages in thread

end of thread, other threads:[~2026-04-29 10:12 UTC | newest]

Thread overview: 9+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-04-28 12:24 [LTP] [PATCH v2] clock_settime: use POSIX runtime detection for CLOCK_MONOTONIC Andrea Cervesato
2026-04-28 14:42 ` [LTP] " linuxtestproject.agent
2026-04-29  7:22   ` Andrea Cervesato via ltp
2026-04-29  8:04     ` Petr Vorel
2026-04-29  8:13       ` Andrea Cervesato via ltp
2026-04-29  7:53 ` [LTP] [PATCH v2] " Petr Vorel
2026-04-29  7:59   ` Andrea Cervesato via ltp
  -- strict thread matches above, loose matches on Subject: below --
2026-04-29  8:28 [LTP] [PATCH v3] " Andrea Cervesato
2026-04-29 10:12 ` [LTP] " linuxtestproject.agent
2026-04-16 13:01 [LTP] [PATCH] " Andrea Cervesato
2026-04-16 13:35 ` [LTP] " linuxtestproject.agent

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox