diff mbox series

[v3,1/2] jiffies: Define secs_to_jiffies()

Message ID 20241030-open-coded-timeouts-v3-1-9ba123facf88@linux.microsoft.com
State New
Headers show
Series Converge on secs_to_jiffies() | expand

Commit Message

Easwar Hariharan Oct. 30, 2024, 5:47 p.m. UTC
secs_to_jiffies() is defined in hci_event.c and cannot be reused by
other call sites. Hoist it into the core code to allow conversion of the
~1150 usages of msecs_to_jiffies() that either:
- use a multiplier value of 1000 or equivalently MSEC_PER_SEC, or
- have timeouts that are denominated in seconds (i.e. end in 000)

This will also allow conversion of yet more sites that use (sec * HZ)
directly, and improve their readability.

TO: K. Y. Srinivasan <kys@microsoft.com>
TO: Haiyang Zhang <haiyangz@microsoft.com>
TO: Wei Liu <wei.liu@kernel.org>
TO: Dexuan Cui <decui@microsoft.com>
TO: linux-hyperv@vger.kernel.org
TO: Anna-Maria Behnsen <anna-maria@linutronix.de>
TO: Thomas Gleixner <tglx@linutronix.de>
TO: Geert Uytterhoeven <geert@linux-m68k.org>
TO: Marcel Holtmann <marcel@holtmann.org>
TO: Johan Hedberg <johan.hedberg@gmail.com>
TO: Luiz Augusto von Dentz <luiz.dentz@gmail.com>
TO: linux-bluetooth@vger.kernel.org
TO: linux-kernel@vger.kernel.org
Suggested-by: Michael Kelley <mhklinux@outlook.com>
Reviewed-by: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>
Signed-off-by: Easwar Hariharan <eahariha@linux.microsoft.com>
---
 include/linux/jiffies.h   | 12 ++++++++++++
 net/bluetooth/hci_event.c |  2 --
 2 files changed, 12 insertions(+), 2 deletions(-)

Comments

Haiyang Zhang Oct. 31, 2024, 3:54 p.m. UTC | #1
> -----Original Message-----
> From: Easwar Hariharan <eahariha@linux.microsoft.com>
> Sent: Wednesday, October 30, 2024 1:48 PM
> To: KY Srinivasan <kys@microsoft.com>; Haiyang Zhang
> <haiyangz@microsoft.com>; Wei Liu <wei.liu@kernel.org>; Dexuan Cui
> <decui@microsoft.com>; linux-hyperv@vger.kernel.org; Anna-Maria Behnsen
> <anna-maria@linutronix.de>; Thomas Gleixner <tglx@linutronix.de>; Geert
> Uytterhoeven <geert@linux-m68k.org>; Marcel Holtmann
> <marcel@holtmann.org>; Johan Hedberg <johan.hedberg@gmail.com>; Luiz
> Augusto von Dentz <luiz.dentz@gmail.com>; linux-
> bluetooth@vger.kernel.org; linux-kernel@vger.kernel.org; Praveen Kumar
> <kumarpraveen@linux.microsoft.com>; Naman Jain
> <namjain@linux.microsoft.com>
> Cc: Michael Kelley <mhklinux@outlook.com>; Easwar Hariharan
> <eahariha@linux.microsoft.com>; Von Dentz, Luiz
> <luiz.von.dentz@intel.com>
> Subject: [PATCH v3 1/2] jiffies: Define secs_to_jiffies()
> 
> secs_to_jiffies() is defined in hci_event.c and cannot be reused by
> other call sites. Hoist it into the core code to allow conversion of the
> ~1150 usages of msecs_to_jiffies() that either:
> - use a multiplier value of 1000 or equivalently MSEC_PER_SEC, or
> - have timeouts that are denominated in seconds (i.e. end in 000)
> 
> This will also allow conversion of yet more sites that use (sec * HZ)
> directly, and improve their readability.
> 
> TO: K. Y. Srinivasan <kys@microsoft.com>
> TO: Haiyang Zhang <haiyangz@microsoft.com>
> TO: Wei Liu <wei.liu@kernel.org>
> TO: Dexuan Cui <decui@microsoft.com>
> TO: linux-hyperv@vger.kernel.org
> TO: Anna-Maria Behnsen <anna-maria@linutronix.de>
> TO: Thomas Gleixner <tglx@linutronix.de>
> TO: Geert Uytterhoeven <geert@linux-m68k.org>
> TO: Marcel Holtmann <marcel@holtmann.org>
> TO: Johan Hedberg <johan.hedberg@gmail.com>
> TO: Luiz Augusto von Dentz <luiz.dentz@gmail.com>
> TO: linux-bluetooth@vger.kernel.org
> TO: linux-kernel@vger.kernel.org
> Suggested-by: Michael Kelley <mhklinux@outlook.com>
> Reviewed-by: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>
> Signed-off-by: Easwar Hariharan <eahariha@linux.microsoft.com>
> ---
>  include/linux/jiffies.h   | 12 ++++++++++++
>  net/bluetooth/hci_event.c |  2 --
>  2 files changed, 12 insertions(+), 2 deletions(-)
> 
> diff --git a/include/linux/jiffies.h b/include/linux/jiffies.h
> index
> 1220f0fbe5bf9fb6c559b4efd603db3e97db9b65..e17c220ed56e587fd55fb9cf4a133a5
> 3588af940 100644
> --- a/include/linux/jiffies.h
> +++ b/include/linux/jiffies.h
> @@ -526,6 +526,18 @@ static __always_inline unsigned long
> msecs_to_jiffies(const unsigned int m)
>  	}
>  }
> 
> +/**
> + * secs_to_jiffies: - convert seconds to jiffies
> + * @_secs: time in seconds
> + *
> + * Conversion is done by simple multiplication with HZ
> + * secs_to_jiffies() is defined as a macro rather than a static inline
> + * function due to its potential application in struct initializers.
> + *
> + * Return: jiffies value
> + */
> +#define secs_to_jiffies(_secs) ((_secs) * HZ)
> +
>  extern unsigned long __usecs_to_jiffies(const unsigned int u);
>  #if !(USEC_PER_SEC % HZ)
>  static inline unsigned long _usecs_to_jiffies(const unsigned int u)
> diff --git a/net/bluetooth/hci_event.c b/net/bluetooth/hci_event.c
> index
> 0bbad90ddd6f87e87c03859bae48a7901d39b634..7b35c58bbbeb79f2b50a02212771fb2
> 83ba5643d 100644
> --- a/net/bluetooth/hci_event.c
> +++ b/net/bluetooth/hci_event.c
> @@ -42,8 +42,6 @@
>  #define ZERO_KEY "\x00\x00\x00\x00\x00\x00\x00\x00" \
>  		 "\x00\x00\x00\x00\x00\x00\x00\x00"
> 
> -#define secs_to_jiffies(_secs) msecs_to_jiffies((_secs) * 1000)
> -
>  /* Handle HCI Event packets */
> 
>  static void *hci_ev_skb_pull(struct hci_dev *hdev, struct sk_buff *skb,
> 
> --
> 2.34.1

All looks good.
But can you consider naming the macro as s2jiffy()? Just
to be shorter, so after adopting this macro we don't have
to split some lines for over 80 characters:)

Thanks,
- Haiyang
Easwar Hariharan Oct. 31, 2024, 5:05 p.m. UTC | #2
On 10/31/2024 8:54 AM, Haiyang Zhang wrote:
> 
> 
>> -----Original Message-----
>> From: Easwar Hariharan <eahariha@linux.microsoft.com>
>> Sent: Wednesday, October 30, 2024 1:48 PM
>> To: KY Srinivasan <kys@microsoft.com>; Haiyang Zhang
>> <haiyangz@microsoft.com>; Wei Liu <wei.liu@kernel.org>; Dexuan Cui
>> <decui@microsoft.com>; linux-hyperv@vger.kernel.org; Anna-Maria Behnsen
>> <anna-maria@linutronix.de>; Thomas Gleixner <tglx@linutronix.de>; Geert
>> Uytterhoeven <geert@linux-m68k.org>; Marcel Holtmann
>> <marcel@holtmann.org>; Johan Hedberg <johan.hedberg@gmail.com>; Luiz
>> Augusto von Dentz <luiz.dentz@gmail.com>; linux-
>> bluetooth@vger.kernel.org; linux-kernel@vger.kernel.org; Praveen Kumar
>> <kumarpraveen@linux.microsoft.com>; Naman Jain
>> <namjain@linux.microsoft.com>
>> Cc: Michael Kelley <mhklinux@outlook.com>; Easwar Hariharan
>> <eahariha@linux.microsoft.com>; Von Dentz, Luiz
>> <luiz.von.dentz@intel.com>
>> Subject: [PATCH v3 1/2] jiffies: Define secs_to_jiffies()
>>
>> secs_to_jiffies() is defined in hci_event.c and cannot be reused by
>> other call sites. Hoist it into the core code to allow conversion of the
>> ~1150 usages of msecs_to_jiffies() that either:
>> - use a multiplier value of 1000 or equivalently MSEC_PER_SEC, or
>> - have timeouts that are denominated in seconds (i.e. end in 000)
>>
>> This will also allow conversion of yet more sites that use (sec * HZ)
>> directly, and improve their readability.
>>
>> TO: K. Y. Srinivasan <kys@microsoft.com>
>> TO: Haiyang Zhang <haiyangz@microsoft.com>
>> TO: Wei Liu <wei.liu@kernel.org>
>> TO: Dexuan Cui <decui@microsoft.com>
>> TO: linux-hyperv@vger.kernel.org
>> TO: Anna-Maria Behnsen <anna-maria@linutronix.de>
>> TO: Thomas Gleixner <tglx@linutronix.de>
>> TO: Geert Uytterhoeven <geert@linux-m68k.org>
>> TO: Marcel Holtmann <marcel@holtmann.org>
>> TO: Johan Hedberg <johan.hedberg@gmail.com>
>> TO: Luiz Augusto von Dentz <luiz.dentz@gmail.com>
>> TO: linux-bluetooth@vger.kernel.org
>> TO: linux-kernel@vger.kernel.org
>> Suggested-by: Michael Kelley <mhklinux@outlook.com>
>> Reviewed-by: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>
>> Signed-off-by: Easwar Hariharan <eahariha@linux.microsoft.com>
>> ---
>>  include/linux/jiffies.h   | 12 ++++++++++++
>>  net/bluetooth/hci_event.c |  2 --
>>  2 files changed, 12 insertions(+), 2 deletions(-)
>>
>> diff --git a/include/linux/jiffies.h b/include/linux/jiffies.h
>> index
>> 1220f0fbe5bf9fb6c559b4efd603db3e97db9b65..e17c220ed56e587fd55fb9cf4a133a5
>> 3588af940 100644
>> --- a/include/linux/jiffies.h
>> +++ b/include/linux/jiffies.h
>> @@ -526,6 +526,18 @@ static __always_inline unsigned long
>> msecs_to_jiffies(const unsigned int m)
>>  	}
>>  }
>>
>> +/**
>> + * secs_to_jiffies: - convert seconds to jiffies
>> + * @_secs: time in seconds
>> + *
>> + * Conversion is done by simple multiplication with HZ
>> + * secs_to_jiffies() is defined as a macro rather than a static inline
>> + * function due to its potential application in struct initializers.
>> + *
>> + * Return: jiffies value
>> + */
>> +#define secs_to_jiffies(_secs) ((_secs) * HZ)
>> +
>>  extern unsigned long __usecs_to_jiffies(const unsigned int u);
>>  #if !(USEC_PER_SEC % HZ)
>>  static inline unsigned long _usecs_to_jiffies(const unsigned int u)
>> diff --git a/net/bluetooth/hci_event.c b/net/bluetooth/hci_event.c
>> index
>> 0bbad90ddd6f87e87c03859bae48a7901d39b634..7b35c58bbbeb79f2b50a02212771fb2
>> 83ba5643d 100644
>> --- a/net/bluetooth/hci_event.c
>> +++ b/net/bluetooth/hci_event.c
>> @@ -42,8 +42,6 @@
>>  #define ZERO_KEY "\x00\x00\x00\x00\x00\x00\x00\x00" \
>>  		 "\x00\x00\x00\x00\x00\x00\x00\x00"
>>
>> -#define secs_to_jiffies(_secs) msecs_to_jiffies((_secs) * 1000)
>> -
>>  /* Handle HCI Event packets */
>>
>>  static void *hci_ev_skb_pull(struct hci_dev *hdev, struct sk_buff *skb,
>>
>> --
>> 2.34.1
> 
> All looks good.
> But can you consider naming the macro as s2jiffy()? Just
> to be shorter, so after adopting this macro we don't have
> to split some lines for over 80 characters:)
> 
> Thanks,
> - Haiyang
> 

Thanks for the review! The patch introducing the macro has already been
accepted into timers/core in tip[1], so unfortunately I can't make that
change anymore. For readability considerations, I also find it better to
match the remaining APIs in the jiffies family, i.e. msecs_to_jiffies(),
nsecs_to_jiffies(), usecs_to_jiffies().

[1] https://git.kernel.org/tip/b35108a51cf7bab58d7eace1267d7965978bcdb8

Thanks,
Easwar
Haiyang Zhang Oct. 31, 2024, 5:28 p.m. UTC | #3
> -----Original Message-----
> From: Easwar Hariharan <eahariha@linux.microsoft.com>
> Sent: Thursday, October 31, 2024 1:06 PM
> To: Haiyang Zhang <haiyangz@microsoft.com>; KY Srinivasan
> <kys@microsoft.com>; Wei Liu <wei.liu@kernel.org>; Dexuan Cui
> <decui@microsoft.com>; linux-hyperv@vger.kernel.org; Anna-Maria Behnsen
> <anna-maria@linutronix.de>; Thomas Gleixner <tglx@linutronix.de>; Geert
> Uytterhoeven <geert@linux-m68k.org>; Marcel Holtmann
> <marcel@holtmann.org>; Johan Hedberg <johan.hedberg@gmail.com>; Luiz
> Augusto von Dentz <luiz.dentz@gmail.com>; linux-
> bluetooth@vger.kernel.org; linux-kernel@vger.kernel.org; Praveen Kumar
> <kumarpraveen@linux.microsoft.com>; Naman Jain
> <namjain@linux.microsoft.com>
> Cc: eahariha@linux.microsoft.com; Michael Kelley <mhklinux@outlook.com>;
> Von Dentz, Luiz <luiz.von.dentz@intel.com>
> Subject: Re: [PATCH v3 1/2] jiffies: Define secs_to_jiffies()
>
> On 10/31/2024 8:54 AM, Haiyang Zhang wrote:
> >
> >
> >> -----Original Message-----
> >> From: Easwar Hariharan <eahariha@linux.microsoft.com>
> >> Sent: Wednesday, October 30, 2024 1:48 PM
> >> To: KY Srinivasan <kys@microsoft.com>; Haiyang Zhang
> >> <haiyangz@microsoft.com>; Wei Liu <wei.liu@kernel.org>; Dexuan Cui
> >> <decui@microsoft.com>; linux-hyperv@vger.kernel.org; Anna-Maria
> Behnsen
> >> <anna-maria@linutronix.de>; Thomas Gleixner <tglx@linutronix.de>;
> Geert
> >> Uytterhoeven <geert@linux-m68k.org>; Marcel Holtmann
> >> <marcel@holtmann.org>; Johan Hedberg <johan.hedberg@gmail.com>; Luiz
> >> Augusto von Dentz <luiz.dentz@gmail.com>; linux-
> >> bluetooth@vger.kernel.org; linux-kernel@vger.kernel.org; Praveen Kumar
> >> <kumarpraveen@linux.microsoft.com>; Naman Jain
> >> <namjain@linux.microsoft.com>
> >> Cc: Michael Kelley <mhklinux@outlook.com>; Easwar Hariharan
> >> <eahariha@linux.microsoft.com>; Von Dentz, Luiz
> >> <luiz.von.dentz@intel.com>
> >> Subject: [PATCH v3 1/2] jiffies: Define secs_to_jiffies()
> >>
> >> secs_to_jiffies() is defined in hci_event.c and cannot be reused by
> >> other call sites. Hoist it into the core code to allow conversion of
> the
> >> ~1150 usages of msecs_to_jiffies() that either:
> >> - use a multiplier value of 1000 or equivalently MSEC_PER_SEC, or
> >> - have timeouts that are denominated in seconds (i.e. end in 000)
> >>
> >> This will also allow conversion of yet more sites that use (sec * HZ)
> >> directly, and improve their readability.
> >>
> >> TO: K. Y. Srinivasan <kys@microsoft.com>
> >> TO: Haiyang Zhang <haiyangz@microsoft.com>
> >> TO: Wei Liu <wei.liu@kernel.org>
> >> TO: Dexuan Cui <decui@microsoft.com>
> >> TO: linux-hyperv@vger.kernel.org
> >> TO: Anna-Maria Behnsen <anna-maria@linutronix.de>
> >> TO: Thomas Gleixner <tglx@linutronix.de>
> >> TO: Geert Uytterhoeven <geert@linux-m68k.org>
> >> TO: Marcel Holtmann <marcel@holtmann.org>
> >> TO: Johan Hedberg <johan.hedberg@gmail.com>
> >> TO: Luiz Augusto von Dentz <luiz.dentz@gmail.com>
> >> TO: linux-bluetooth@vger.kernel.org
> >> TO: linux-kernel@vger.kernel.org
> >> Suggested-by: Michael Kelley <mhklinux@outlook.com>
> >> Reviewed-by: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>
> >> Signed-off-by: Easwar Hariharan <eahariha@linux.microsoft.com>
> >> ---
> >>  include/linux/jiffies.h   | 12 ++++++++++++
> >>  net/bluetooth/hci_event.c |  2 --
> >>  2 files changed, 12 insertions(+), 2 deletions(-)
> >>
> >> diff --git a/include/linux/jiffies.h b/include/linux/jiffies.h
> >> index
> >>
> 1220f0fbe5bf9fb6c559b4efd603db3e97db9b65..e17c220ed56e587fd55fb9cf4a133a5
> >> 3588af940 100644
> >> --- a/include/linux/jiffies.h
> >> +++ b/include/linux/jiffies.h
> >> @@ -526,6 +526,18 @@ static __always_inline unsigned long
> >> msecs_to_jiffies(const unsigned int m)
> >>    }
> >>  }
> >>
> >> +/**
> >> + * secs_to_jiffies: - convert seconds to jiffies
> >> + * @_secs: time in seconds
> >> + *
> >> + * Conversion is done by simple multiplication with HZ
> >> + * secs_to_jiffies() is defined as a macro rather than a static
> inline
> >> + * function due to its potential application in struct initializers.
> >> + *
> >> + * Return: jiffies value
> >> + */
> >> +#define secs_to_jiffies(_secs) ((_secs) * HZ)
> >> +
> >>  extern unsigned long __usecs_to_jiffies(const unsigned int u);
> >>  #if !(USEC_PER_SEC % HZ)
> >>  static inline unsigned long _usecs_to_jiffies(const unsigned int u)
> >> diff --git a/net/bluetooth/hci_event.c b/net/bluetooth/hci_event.c
> >> index
> >>
> 0bbad90ddd6f87e87c03859bae48a7901d39b634..7b35c58bbbeb79f2b50a02212771fb2
> >> 83ba5643d 100644
> >> --- a/net/bluetooth/hci_event.c
> >> +++ b/net/bluetooth/hci_event.c
> >> @@ -42,8 +42,6 @@
> >>  #define ZERO_KEY "\x00\x00\x00\x00\x00\x00\x00\x00" \
> >>             "\x00\x00\x00\x00\x00\x00\x00\x00"
> >>
> >> -#define secs_to_jiffies(_secs) msecs_to_jiffies((_secs) * 1000)
> >> -
> >>  /* Handle HCI Event packets */
> >>
> >>  static void *hci_ev_skb_pull(struct hci_dev *hdev, struct sk_buff
> *skb,
> >>
> >> --
> >> 2.34.1
> >
> > All looks good.
> > But can you consider naming the macro as s2jiffy()? Just
> > to be shorter, so after adopting this macro we don't have
> > to split some lines for over 80 characters:)
> >
> > Thanks,
> > - Haiyang
> >
>
> Thanks for the review! The patch introducing the macro has already been
> accepted into timers/core in tip[1], so unfortunately I can't make that
> change anymore. For readability considerations, I also find it better to
> match the remaining APIs in the jiffies family, i.e. msecs_to_jiffies(),
> nsecs_to_jiffies(), usecs_to_jiffies().
>
> [1]
> https://git.ker/
> nel.org%2Ftip%2Fb35108a51cf7bab58d7eace1267d7965978bcdb8&data=05%7C02%7Ch
> aiyangz%40microsoft.com%7C7d5db079ed124f62ac2a08dcf9ce4b20%7C72f988bf86f1
> 41af91ab2d7cd011db47%7C1%7C0%7C638659911651280804%7CUnknown%7CTWFpbGZsb3d
> 8eyJFbXB0eU1hcGkiOnRydWUsIlYiOiIwLjAuMDAwMCIsIlAiOiJXaW4zMiIsIkFOIjoiTWFp
> bCIsIldUIjoyfQ%3D%3D%7C0%7C%7C%7C&sdata=hz5UtwU9CLw068z4tpr9kPMANntwX58De
> A5dXi9pqSg%3D&reserved=0
>

Then, that's fine.

Thanks
- Haiyang
diff mbox series

Patch

diff --git a/include/linux/jiffies.h b/include/linux/jiffies.h
index 1220f0fbe5bf9fb6c559b4efd603db3e97db9b65..e17c220ed56e587fd55fb9cf4a133a53588af940 100644
--- a/include/linux/jiffies.h
+++ b/include/linux/jiffies.h
@@ -526,6 +526,18 @@  static __always_inline unsigned long msecs_to_jiffies(const unsigned int m)
 	}
 }
 
+/**
+ * secs_to_jiffies: - convert seconds to jiffies
+ * @_secs: time in seconds
+ *
+ * Conversion is done by simple multiplication with HZ
+ * secs_to_jiffies() is defined as a macro rather than a static inline
+ * function due to its potential application in struct initializers.
+ *
+ * Return: jiffies value
+ */
+#define secs_to_jiffies(_secs) ((_secs) * HZ)
+
 extern unsigned long __usecs_to_jiffies(const unsigned int u);
 #if !(USEC_PER_SEC % HZ)
 static inline unsigned long _usecs_to_jiffies(const unsigned int u)
diff --git a/net/bluetooth/hci_event.c b/net/bluetooth/hci_event.c
index 0bbad90ddd6f87e87c03859bae48a7901d39b634..7b35c58bbbeb79f2b50a02212771fb283ba5643d 100644
--- a/net/bluetooth/hci_event.c
+++ b/net/bluetooth/hci_event.c
@@ -42,8 +42,6 @@ 
 #define ZERO_KEY "\x00\x00\x00\x00\x00\x00\x00\x00" \
 		 "\x00\x00\x00\x00\x00\x00\x00\x00"
 
-#define secs_to_jiffies(_secs) msecs_to_jiffies((_secs) * 1000)
-
 /* Handle HCI Event packets */
 
 static void *hci_ev_skb_pull(struct hci_dev *hdev, struct sk_buff *skb,