On 13.10.2023 11:42, Juergen Gross wrote:
> With some small adjustments to the LOCK_PROFILE_* macros some #ifdefs
> can be dropped from spinlock.c.
> 
> Signed-off-by: Juergen Gross <[email protected]>
> ---
> V2:
> - new patch
> ---
>  xen/common/spinlock.c | 45 ++++++++++++++++++-------------------------
>  1 file changed, 19 insertions(+), 26 deletions(-)
> 
> diff --git a/xen/common/spinlock.c b/xen/common/spinlock.c
> index 202c707540..4878a01302 100644
> --- a/xen/common/spinlock.c
> +++ b/xen/common/spinlock.c
> @@ -267,25 +267,28 @@ void spin_debug_disable(void)
>          lock->profile->time_hold += NOW() - lock->profile->time_locked;      
> \
>          lock->profile->lock_cnt++;                                           
> \
>      }
> -#define LOCK_PROFILE_VAR    s_time_t block = 0
> -#define LOCK_PROFILE_BLOCK  block = block ? : NOW();
> -#define LOCK_PROFILE_GOT                                                     
> \
> +#define LOCK_PROFILE_VAR(val)    s_time_t block = (val)

This macro, and then at least for consistency also ...

> +#define LOCK_PROFILE_BLOCK  block = block ? : NOW()

... this one should imo take the variable name as an argument. Otherwise
situations like ...

>  void _spin_barrier(spinlock_t *lock)
>  {
>      spinlock_tickets_t sample;
> -#ifdef CONFIG_DEBUG_LOCK_PROFILE
> -    s_time_t block = NOW();
> -#endif
> +    LOCK_PROFILE_VAR(NOW());
>  
>      check_barrier(&lock->debug);
>      smp_mb();
> @@ -432,13 +431,7 @@ void _spin_barrier(spinlock_t *lock)
>      {
>          while ( observe_head(&lock->tickets) == sample.head )
>              arch_lock_relax();
> -#ifdef CONFIG_DEBUG_LOCK_PROFILE
> -        if ( lock->profile )
> -        {
> -            lock->profile->time_block += NOW() - block;
> -            lock->profile->block_cnt++;
> -        }
> -#endif
> +        LOCK_PROFILE_BLKACC(lock->profile, block);
>      }
>      smp_mb();
>  }

... this arise where there's no visible declaration of "block", but a
use. (Originally I was meaning to ask how this function would build,
when the declaration is dropped.)

Jan

Reply via email to