[PATCH 1/3] mini-os: apply coding style to arch/x86/time.c

Juergen Gross posted 3 patches 1 month, 3 weeks ago
[PATCH 1/3] mini-os: apply coding style to arch/x86/time.c
Posted by Juergen Gross 1 month, 3 weeks ago
Apply the preferred coding style to arch/x86/time.c.

Signed-off-by: Juergen Gross <jgross@suse.com>
---
 arch/x86/time.c | 194 +++++++++++++++++++++++-------------------------
 1 file changed, 93 insertions(+), 101 deletions(-)

diff --git a/arch/x86/time.c b/arch/x86/time.c
index 332c0260..a473a9e1 100644
--- a/arch/x86/time.c
+++ b/arch/x86/time.c
@@ -1,7 +1,7 @@
 /* -*-  Mode:C; c-basic-offset:4; tab-width:4 -*-
  ****************************************************************************
  * (C) 2003 - Rolf Neugebauer - Intel Research Cambridge
- * (C) 2002-2003 - Keir Fraser - University of Cambridge 
+ * (C) 2002-2003 - Keir Fraser - University of Cambridge
  * (C) 2005 - Grzegorz Milos - Intel Research Cambridge
  * (C) 2006 - Robert Kaiser - FH Wiesbaden
  ****************************************************************************
@@ -18,20 +18,19 @@
  * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
  * sell copies of the Software, and to permit persons to whom the Software is
  * furnished to do so, subject to the following conditions:
- * 
+ *
  * The above copyright notice and this permission notice shall be included in
  * all copies or substantial portions of the Software.
- * 
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 
- * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER 
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
  * DEALINGS IN THE SOFTWARE.
  */
 
-
 #include <mini-os/os.h>
 #include <mini-os/traps.h>
 #include <mini-os/types.h>
@@ -46,44 +45,43 @@
 
 /* These are peridically updated in shared_info, and then copied here. */
 struct shadow_time_info {
-	uint64_t tsc_timestamp;     /* TSC at last update of time vals.  */
-	uint64_t system_timestamp;  /* Time, in nanosecs, since boot.    */
-	uint32_t tsc_to_nsec_mul;
-	uint32_t tsc_to_usec_mul;
-	int tsc_shift;
-	uint32_t version;
+    uint64_t tsc_timestamp;     /* TSC at last update of time vals.  */
+    uint64_t system_timestamp;  /* Time, in nanosecs, since boot.    */
+    uint32_t tsc_to_nsec_mul;
+    uint32_t tsc_to_usec_mul;
+    int tsc_shift;
+    uint32_t version;
 };
 static struct timespec shadow_ts;
 static uint32_t shadow_ts_version;
 
 static struct shadow_time_info shadow;
 
-
 #ifndef rmb
-#define rmb()  __asm__ __volatile__ ("lock; addl $0,0(%%esp)": : :"memory")
+#define rmb()  __asm__ __volatile__ ("lock; addl $0,0(%%esp)" : : : "memory")
 #endif
 
-#define HANDLE_USEC_OVERFLOW(_tv)          \
-    do {                                   \
+#define HANDLE_USEC_OVERFLOW(_tv)           \
+    do {                                    \
         while ( (_tv)->tv_usec >= 1000000 ) \
-        {                                  \
+        {                                   \
             (_tv)->tv_usec -= 1000000;      \
             (_tv)->tv_sec++;                \
-        }                                  \
+        }                                   \
     } while ( 0 )
 
 static inline int time_values_up_to_date(void)
 {
-	struct vcpu_time_info *src = &HYPERVISOR_shared_info->vcpu_info[0].time; 
+    struct vcpu_time_info *src = &HYPERVISOR_shared_info->vcpu_info[0].time;
 
-	return (shadow.version == src->version);
+    return shadow.version == src->version;
 }
 
 static inline int wc_values_up_to_date(void)
 {
-	shared_info_t *s= HYPERVISOR_shared_info;
+    shared_info_t *s = HYPERVISOR_shared_info;
 
-	return (shadow_ts_version == s->wc_version);
+    return shadow_ts_version == s->wc_version;
 }
 
 /*
@@ -92,109 +90,104 @@ static inline int wc_values_up_to_date(void)
  */
 static inline uint64_t scale_delta(uint64_t delta, uint32_t mul_frac, int shift)
 {
-	uint64_t product;
+    uint64_t product;
 #ifdef __i386__
-	uint32_t tmp1, tmp2;
+    uint32_t tmp1, tmp2;
 #endif
 
-	if ( shift < 0 )
-		delta >>= -shift;
-	else
-		delta <<= shift;
+    if ( shift < 0 )
+        delta >>= -shift;
+    else
+        delta <<= shift;
 
 #ifdef __i386__
-	__asm__ (
-		"mul  %5       ; "
-		"mov  %4,%%eax ; "
-		"mov  %%edx,%4 ; "
-		"mul  %5       ; "
-		"add  %4,%%eax ; "
-		"xor  %5,%5    ; "
-		"adc  %5,%%edx ; "
-		: "=A" (product), "=r" (tmp1), "=r" (tmp2)
-		: "a" ((uint32_t)delta), "1" ((uint32_t)(delta >> 32)), "2" (mul_frac) );
+    __asm__ (
+        "mul  %5       ; "
+        "mov  %4,%%eax ; "
+        "mov  %%edx,%4 ; "
+        "mul  %5       ; "
+        "add  %4,%%eax ; "
+        "xor  %5,%5    ; "
+        "adc  %5,%%edx ; "
+        : "=A" (product), "=r" (tmp1), "=r" (tmp2)
+        : "a" ((uint32_t)delta), "1" ((uint32_t)(delta >> 32)), "2" (mul_frac) );
 #else
-	__asm__ (
-		"mul %%rdx ; shrd $32,%%rdx,%%rax"
-		: "=a" (product) : "0" (delta), "d" ((uint64_t)mul_frac) );
+    __asm__ (
+        "mul %%rdx ; shrd $32,%%rdx,%%rax"
+        : "=a" (product) : "0" (delta), "d" ((uint64_t)mul_frac) );
 #endif
 
-	return product;
+    return product;
 }
 
-
 static unsigned long get_nsec_offset(void)
 {
-	uint64_t now, delta;
-	rdtscll(now);
-	delta = now - shadow.tsc_timestamp;
-	return scale_delta(delta, shadow.tsc_to_nsec_mul, shadow.tsc_shift);
-}
+    uint64_t now, delta;
 
+    rdtscll(now);
+    delta = now - shadow.tsc_timestamp;
+
+    return scale_delta(delta, shadow.tsc_to_nsec_mul, shadow.tsc_shift);
+}
 
 static void get_time_values_from_xen(void)
 {
-	struct vcpu_time_info    *src = &HYPERVISOR_shared_info->vcpu_info[0].time;
-
- 	do {
-		shadow.version = src->version;
-		rmb();
-		shadow.tsc_timestamp     = src->tsc_timestamp;
-		shadow.system_timestamp  = src->system_time;
-		shadow.tsc_to_nsec_mul   = src->tsc_to_system_mul;
-		shadow.tsc_shift         = src->tsc_shift;
-		rmb();
-	}
-	while ((src->version & 1) | (shadow.version ^ src->version));
-
-	shadow.tsc_to_usec_mul = shadow.tsc_to_nsec_mul / 1000;
+    struct vcpu_time_info *src = &HYPERVISOR_shared_info->vcpu_info[0].time;
+
+    do {
+        shadow.version = src->version;
+        rmb();
+        shadow.tsc_timestamp     = src->tsc_timestamp;
+        shadow.system_timestamp  = src->system_time;
+        shadow.tsc_to_nsec_mul   = src->tsc_to_system_mul;
+        shadow.tsc_shift         = src->tsc_shift;
+        rmb();
+    } while ( (src->version & 1) | (shadow.version ^ src->version) );
+
+    shadow.tsc_to_usec_mul = shadow.tsc_to_nsec_mul / 1000;
 }
 
-
-
-
-/* monotonic_clock(): returns # of nanoseconds passed since time_init()
- *		Note: This function is required to return accurate
- *		time even in the absence of multiple timer ticks.
+/*
+ * monotonic_clock(): returns # of nanoseconds passed since time_init()
+ *        Note: This function is required to return accurate
+ *        time even in the absence of multiple timer ticks.
  */
 uint64_t monotonic_clock(void)
 {
-	uint64_t time;
-	uint32_t local_time_version;
-
-	do {
-		local_time_version = shadow.version;
-		rmb();
-		time = shadow.system_timestamp + get_nsec_offset();
-		if (!time_values_up_to_date())
-			get_time_values_from_xen();
-		rmb();
-	} while (local_time_version != shadow.version);
-
-	return time;
+    uint64_t time;
+    uint32_t local_time_version;
+
+    do {
+        local_time_version = shadow.version;
+        rmb();
+        time = shadow.system_timestamp + get_nsec_offset();
+        if ( !time_values_up_to_date() )
+            get_time_values_from_xen();
+        rmb();
+    } while ( local_time_version != shadow.version );
+
+    return time;
 }
 
 static void update_wallclock(void)
 {
-	shared_info_t *s = HYPERVISOR_shared_info;
-
-	do {
-		shadow_ts_version = s->wc_version;
-		rmb();
-		shadow_ts.tv_sec  = s->wc_sec;
-		shadow_ts.tv_nsec = s->wc_nsec;
-		rmb();
-	}
-	while ((s->wc_version & 1) | (shadow_ts_version ^ s->wc_version));
+    shared_info_t *s = HYPERVISOR_shared_info;
+
+    do {
+        shadow_ts_version = s->wc_version;
+        rmb();
+        shadow_ts.tv_sec  = s->wc_sec;
+        shadow_ts.tv_nsec = s->wc_nsec;
+        rmb();
+    } while ( (s->wc_version & 1) | (shadow_ts_version ^ s->wc_version) );
 }
 
-
 int gettimeofday(struct timeval *tv, void *tz)
 {
     uint64_t nsec = monotonic_clock();
 
-    if (!wc_values_up_to_date())
-	update_wallclock();
+    if ( !wc_values_up_to_date() )
+        update_wallclock();
 
     nsec += shadow_ts.tv_nsec;
 
@@ -209,7 +202,7 @@ EXPORT_SYMBOL(gettimeofday);
 void block_domain(s_time_t until)
 {
     ASSERT(irqs_disabled());
-    if(monotonic_clock() < until)
+    if ( monotonic_clock() < until )
     {
         HYPERVISOR_set_timer_op(until);
 #ifdef CONFIG_PARAVIRT
@@ -228,9 +221,8 @@ static void timer_handler(evtchn_port_t ev, struct pt_regs *regs, void *ign)
     HYPERVISOR_set_timer_op(monotonic_clock() + MILLISECS(1));
 }
 
-
-
 static evtchn_port_t port;
+
 void init_time(void)
 {
     port = bind_virq(VIRQ_TIMER, &timer_handler, NULL);
-- 
2.43.0
Re: [PATCH 1/3] mini-os: apply coding style to arch/x86/time.c
Posted by Samuel Thibault 1 month, 3 weeks ago
Juergen Gross, le lun. 22 juil. 2024 14:16:41 +0200, a ecrit:
> Apply the preferred coding style to arch/x86/time.c.
> 
> Signed-off-by: Juergen Gross <jgross@suse.com>

Reviewed-by: Samuel Thibault <samuel.thibault@ens-lyon.org>

> ---
>  arch/x86/time.c | 194 +++++++++++++++++++++++-------------------------
>  1 file changed, 93 insertions(+), 101 deletions(-)
> 
> diff --git a/arch/x86/time.c b/arch/x86/time.c
> index 332c0260..a473a9e1 100644
> --- a/arch/x86/time.c
> +++ b/arch/x86/time.c
> @@ -1,7 +1,7 @@
>  /* -*-  Mode:C; c-basic-offset:4; tab-width:4 -*-
>   ****************************************************************************
>   * (C) 2003 - Rolf Neugebauer - Intel Research Cambridge
> - * (C) 2002-2003 - Keir Fraser - University of Cambridge 
> + * (C) 2002-2003 - Keir Fraser - University of Cambridge
>   * (C) 2005 - Grzegorz Milos - Intel Research Cambridge
>   * (C) 2006 - Robert Kaiser - FH Wiesbaden
>   ****************************************************************************
> @@ -18,20 +18,19 @@
>   * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
>   * sell copies of the Software, and to permit persons to whom the Software is
>   * furnished to do so, subject to the following conditions:
> - * 
> + *
>   * The above copyright notice and this permission notice shall be included in
>   * all copies or substantial portions of the Software.
> - * 
> - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 
> - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 
> - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 
> - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 
> - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 
> - * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER 
> + *
> + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
> + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
> + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
> + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
> + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
> + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
>   * DEALINGS IN THE SOFTWARE.
>   */
>  
> -
>  #include <mini-os/os.h>
>  #include <mini-os/traps.h>
>  #include <mini-os/types.h>
> @@ -46,44 +45,43 @@
>  
>  /* These are peridically updated in shared_info, and then copied here. */
>  struct shadow_time_info {
> -	uint64_t tsc_timestamp;     /* TSC at last update of time vals.  */
> -	uint64_t system_timestamp;  /* Time, in nanosecs, since boot.    */
> -	uint32_t tsc_to_nsec_mul;
> -	uint32_t tsc_to_usec_mul;
> -	int tsc_shift;
> -	uint32_t version;
> +    uint64_t tsc_timestamp;     /* TSC at last update of time vals.  */
> +    uint64_t system_timestamp;  /* Time, in nanosecs, since boot.    */
> +    uint32_t tsc_to_nsec_mul;
> +    uint32_t tsc_to_usec_mul;
> +    int tsc_shift;
> +    uint32_t version;
>  };
>  static struct timespec shadow_ts;
>  static uint32_t shadow_ts_version;
>  
>  static struct shadow_time_info shadow;
>  
> -
>  #ifndef rmb
> -#define rmb()  __asm__ __volatile__ ("lock; addl $0,0(%%esp)": : :"memory")
> +#define rmb()  __asm__ __volatile__ ("lock; addl $0,0(%%esp)" : : : "memory")
>  #endif
>  
> -#define HANDLE_USEC_OVERFLOW(_tv)          \
> -    do {                                   \
> +#define HANDLE_USEC_OVERFLOW(_tv)           \
> +    do {                                    \
>          while ( (_tv)->tv_usec >= 1000000 ) \
> -        {                                  \
> +        {                                   \
>              (_tv)->tv_usec -= 1000000;      \
>              (_tv)->tv_sec++;                \
> -        }                                  \
> +        }                                   \
>      } while ( 0 )
>  
>  static inline int time_values_up_to_date(void)
>  {
> -	struct vcpu_time_info *src = &HYPERVISOR_shared_info->vcpu_info[0].time; 
> +    struct vcpu_time_info *src = &HYPERVISOR_shared_info->vcpu_info[0].time;
>  
> -	return (shadow.version == src->version);
> +    return shadow.version == src->version;
>  }
>  
>  static inline int wc_values_up_to_date(void)
>  {
> -	shared_info_t *s= HYPERVISOR_shared_info;
> +    shared_info_t *s = HYPERVISOR_shared_info;
>  
> -	return (shadow_ts_version == s->wc_version);
> +    return shadow_ts_version == s->wc_version;
>  }
>  
>  /*
> @@ -92,109 +90,104 @@ static inline int wc_values_up_to_date(void)
>   */
>  static inline uint64_t scale_delta(uint64_t delta, uint32_t mul_frac, int shift)
>  {
> -	uint64_t product;
> +    uint64_t product;
>  #ifdef __i386__
> -	uint32_t tmp1, tmp2;
> +    uint32_t tmp1, tmp2;
>  #endif
>  
> -	if ( shift < 0 )
> -		delta >>= -shift;
> -	else
> -		delta <<= shift;
> +    if ( shift < 0 )
> +        delta >>= -shift;
> +    else
> +        delta <<= shift;
>  
>  #ifdef __i386__
> -	__asm__ (
> -		"mul  %5       ; "
> -		"mov  %4,%%eax ; "
> -		"mov  %%edx,%4 ; "
> -		"mul  %5       ; "
> -		"add  %4,%%eax ; "
> -		"xor  %5,%5    ; "
> -		"adc  %5,%%edx ; "
> -		: "=A" (product), "=r" (tmp1), "=r" (tmp2)
> -		: "a" ((uint32_t)delta), "1" ((uint32_t)(delta >> 32)), "2" (mul_frac) );
> +    __asm__ (
> +        "mul  %5       ; "
> +        "mov  %4,%%eax ; "
> +        "mov  %%edx,%4 ; "
> +        "mul  %5       ; "
> +        "add  %4,%%eax ; "
> +        "xor  %5,%5    ; "
> +        "adc  %5,%%edx ; "
> +        : "=A" (product), "=r" (tmp1), "=r" (tmp2)
> +        : "a" ((uint32_t)delta), "1" ((uint32_t)(delta >> 32)), "2" (mul_frac) );
>  #else
> -	__asm__ (
> -		"mul %%rdx ; shrd $32,%%rdx,%%rax"
> -		: "=a" (product) : "0" (delta), "d" ((uint64_t)mul_frac) );
> +    __asm__ (
> +        "mul %%rdx ; shrd $32,%%rdx,%%rax"
> +        : "=a" (product) : "0" (delta), "d" ((uint64_t)mul_frac) );
>  #endif
>  
> -	return product;
> +    return product;
>  }
>  
> -
>  static unsigned long get_nsec_offset(void)
>  {
> -	uint64_t now, delta;
> -	rdtscll(now);
> -	delta = now - shadow.tsc_timestamp;
> -	return scale_delta(delta, shadow.tsc_to_nsec_mul, shadow.tsc_shift);
> -}
> +    uint64_t now, delta;
>  
> +    rdtscll(now);
> +    delta = now - shadow.tsc_timestamp;
> +
> +    return scale_delta(delta, shadow.tsc_to_nsec_mul, shadow.tsc_shift);
> +}
>  
>  static void get_time_values_from_xen(void)
>  {
> -	struct vcpu_time_info    *src = &HYPERVISOR_shared_info->vcpu_info[0].time;
> -
> - 	do {
> -		shadow.version = src->version;
> -		rmb();
> -		shadow.tsc_timestamp     = src->tsc_timestamp;
> -		shadow.system_timestamp  = src->system_time;
> -		shadow.tsc_to_nsec_mul   = src->tsc_to_system_mul;
> -		shadow.tsc_shift         = src->tsc_shift;
> -		rmb();
> -	}
> -	while ((src->version & 1) | (shadow.version ^ src->version));
> -
> -	shadow.tsc_to_usec_mul = shadow.tsc_to_nsec_mul / 1000;
> +    struct vcpu_time_info *src = &HYPERVISOR_shared_info->vcpu_info[0].time;
> +
> +    do {
> +        shadow.version = src->version;
> +        rmb();
> +        shadow.tsc_timestamp     = src->tsc_timestamp;
> +        shadow.system_timestamp  = src->system_time;
> +        shadow.tsc_to_nsec_mul   = src->tsc_to_system_mul;
> +        shadow.tsc_shift         = src->tsc_shift;
> +        rmb();
> +    } while ( (src->version & 1) | (shadow.version ^ src->version) );
> +
> +    shadow.tsc_to_usec_mul = shadow.tsc_to_nsec_mul / 1000;
>  }
>  
> -
> -
> -
> -/* monotonic_clock(): returns # of nanoseconds passed since time_init()
> - *		Note: This function is required to return accurate
> - *		time even in the absence of multiple timer ticks.
> +/*
> + * monotonic_clock(): returns # of nanoseconds passed since time_init()
> + *        Note: This function is required to return accurate
> + *        time even in the absence of multiple timer ticks.
>   */
>  uint64_t monotonic_clock(void)
>  {
> -	uint64_t time;
> -	uint32_t local_time_version;
> -
> -	do {
> -		local_time_version = shadow.version;
> -		rmb();
> -		time = shadow.system_timestamp + get_nsec_offset();
> -		if (!time_values_up_to_date())
> -			get_time_values_from_xen();
> -		rmb();
> -	} while (local_time_version != shadow.version);
> -
> -	return time;
> +    uint64_t time;
> +    uint32_t local_time_version;
> +
> +    do {
> +        local_time_version = shadow.version;
> +        rmb();
> +        time = shadow.system_timestamp + get_nsec_offset();
> +        if ( !time_values_up_to_date() )
> +            get_time_values_from_xen();
> +        rmb();
> +    } while ( local_time_version != shadow.version );
> +
> +    return time;
>  }
>  
>  static void update_wallclock(void)
>  {
> -	shared_info_t *s = HYPERVISOR_shared_info;
> -
> -	do {
> -		shadow_ts_version = s->wc_version;
> -		rmb();
> -		shadow_ts.tv_sec  = s->wc_sec;
> -		shadow_ts.tv_nsec = s->wc_nsec;
> -		rmb();
> -	}
> -	while ((s->wc_version & 1) | (shadow_ts_version ^ s->wc_version));
> +    shared_info_t *s = HYPERVISOR_shared_info;
> +
> +    do {
> +        shadow_ts_version = s->wc_version;
> +        rmb();
> +        shadow_ts.tv_sec  = s->wc_sec;
> +        shadow_ts.tv_nsec = s->wc_nsec;
> +        rmb();
> +    } while ( (s->wc_version & 1) | (shadow_ts_version ^ s->wc_version) );
>  }
>  
> -
>  int gettimeofday(struct timeval *tv, void *tz)
>  {
>      uint64_t nsec = monotonic_clock();
>  
> -    if (!wc_values_up_to_date())
> -	update_wallclock();
> +    if ( !wc_values_up_to_date() )
> +        update_wallclock();
>  
>      nsec += shadow_ts.tv_nsec;
>  
> @@ -209,7 +202,7 @@ EXPORT_SYMBOL(gettimeofday);
>  void block_domain(s_time_t until)
>  {
>      ASSERT(irqs_disabled());
> -    if(monotonic_clock() < until)
> +    if ( monotonic_clock() < until )
>      {
>          HYPERVISOR_set_timer_op(until);
>  #ifdef CONFIG_PARAVIRT
> @@ -228,9 +221,8 @@ static void timer_handler(evtchn_port_t ev, struct pt_regs *regs, void *ign)
>      HYPERVISOR_set_timer_op(monotonic_clock() + MILLISECS(1));
>  }
>  
> -
> -
>  static evtchn_port_t port;
> +
>  void init_time(void)
>  {
>      port = bind_virq(VIRQ_TIMER, &timer_handler, NULL);
> -- 
> 2.43.0
> 

-- 
Samuel
"I don't know why, but first C programs tend to look a lot worse than
first programs in any other language (maybe except for fortran, but then
I suspect all fortran programs look like `firsts')"
(By Olaf Kirch)