diff options
author | Martin Burnicki <martin.burnicki@meinberg.de> | 2023-09-27 15:28:02 +0200 |
---|---|---|
committer | Martin Burnicki <martin.burnicki@meinberg.de> | 2023-09-27 15:28:02 +0200 |
commit | 9011fe4da802bcfa3f7b695e29f35f0fa38ea331 (patch) | |
tree | bbc539eafb0bd52b06626885408763992d9a0106 | |
parent | d2ade630b20cda474bf5fa28b0e06aa0cd1b09cd (diff) | |
download | kernel-time-state-devel.tar.gz kernel-time-state-devel.zip |
Fix build on systems that lack nanosecond supportdevel
-rw-r--r-- | kernel-time-state.c | 50 |
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 ); |