summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMartin Burnicki <martin.burnicki@meinberg.de>2023-09-27 15:28:02 +0200
committerMartin Burnicki <martin.burnicki@meinberg.de>2023-09-27 15:28:02 +0200
commit9011fe4da802bcfa3f7b695e29f35f0fa38ea331 (patch)
treebbc539eafb0bd52b06626885408763992d9a0106
parentd2ade630b20cda474bf5fa28b0e06aa0cd1b09cd (diff)
downloadkernel-time-state-devel.tar.gz
kernel-time-state-devel.zip
Fix build on systems that lack nanosecond supportdevel
-rw-r--r--kernel-time-state.c50
1 files changed, 35 insertions, 15 deletions
diff --git a/kernel-time-state.c b/kernel-time-state.c
index 9fb4405..b2d6cda 100644
--- a/kernel-time-state.c
+++ b/kernel-time-state.c
@@ -91,6 +91,18 @@
#endif // !defined HAS_TIMEX_TICK_AND_TIME
+#if !defined( STA_NANO )
+ #define STA_NANO 0x2000
+ #define STA_NANO_LOCALLY
+#endif
+
+
+#if !defined( STA_MODE )
+ #define STA_MODE 0x4000
+ #define STA_MODE_LOCALLY
+#endif
+
+
static const char program_name[] = "kernel-time-state";
@@ -222,7 +234,7 @@ const char *kernel_state_string( int rc )
case TIME_DEL: return "< 'delete leap second' warning";
case TIME_OOP: return "<< leap second in progress";
case TIME_WAIT: return "< leap second has occured";
- case TIME_ERROR: return "*** clock not synchronized";
+ case TIME_ERROR: return "clock not synchronized";
} // switch
@@ -345,10 +357,10 @@ void show_kern_status( const struct timex *p, int rc, int verbose,
else
printf( " %s", str_undef );
- printf( ", rc: %i", rc );
+ printf( ", rc %i", rc );
if ( rc || verbose )
- printf( " %s", kernel_state_string( rc ) );
+ printf( ": %s", kernel_state_string( rc ) );
if ( verbose > 1 )
{
@@ -446,21 +458,25 @@ int check_change_kern_status( void )
if ( must_set_tai )
{
- memset( &ntv, 0, sizeof( ntv ) );
- ntv.modes = MOD_TAI;
- ntv.constant = new_tai_offs;
+ #if defined( MOD_TAI )
+ memset( &ntv, 0, sizeof( ntv ) );
+ ntv.modes = MOD_TAI;
+ ntv.constant = new_tai_offs;
- rc = do_kern_api_fnc( &ntv, "set kernel TAI offset" );
+ rc = do_kern_api_fnc( &ntv, "set kernel TAI offset" );
- if ( rc < 0 ) // error
- {
- // Not a fatal error. Continue and read the current status.
- memset( &ntv, 0, sizeof( ntv ) );
- rc = do_kern_api_fnc( &ntv, str_read_kernel_time_status );
- }
+ if ( rc < 0 ) // error
+ {
+ // Not a fatal error. Continue and read the current status.
+ memset( &ntv, 0, sizeof( ntv ) );
+ rc = do_kern_api_fnc( &ntv, str_read_kernel_time_status );
+ }
- show_kern_status( &ntv, rc, verbose, NULL );
- printf( "\n" );
+ show_kern_status( &ntv, rc, verbose, NULL );
+ printf( "\n" );
+ #else
+ printf( "Unable to set TAI, MOD_TAI is not defined.\n" );
+ #endif
}
out:
@@ -715,6 +731,10 @@ int main( int argc, char *argv[] )
rc = do_test();
out:
+ #if defined( STA_NANO_LOCALLY )
+ printf( "*** Warning: STA_NANO is not defined, kernel seems to lack nanosecond support.\n\n" );
+ #endif
+
(void) str_not_supp; // Avoid error "defined but not used".
return abs( rc );