diff mbox series

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

Message ID 20241028-open-coded-timeouts-v2-1-c7294bb845a1@linux.microsoft.com
State New
Headers show
Series Converge on secs_to_jiffies() | expand

Commit Message

Easwar Hariharan Oct. 28, 2024, 7:11 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>
Signed-off-by: Easwar Hariharan <eahariha@linux.microsoft.com>
---
 include/linux/jiffies.h   | 2 ++
 net/bluetooth/hci_event.c | 2 --
 2 files changed, 2 insertions(+), 2 deletions(-)

Comments

Easwar Hariharan Oct. 29, 2024, 9:35 p.m. UTC | #1
On 10/29/2024 10:25 AM, Thomas Gleixner wrote:
> On Tue, Oct 29 2024 at 17:22, Geert Uytterhoeven wrote:
>> On Tue, Oct 29, 2024 at 5:08 PM Thomas Gleixner <tglx@linutronix.de> wrote:
>>> On Mon, Oct 28 2024 at 19:11, Easwar Hariharan wrote:
>>>> diff --git a/include/linux/jiffies.h b/include/linux/jiffies.h
>>>> index 1220f0fbe5bf..e5256bb5f851 100644
>>>> --- a/include/linux/jiffies.h
>>>> +++ b/include/linux/jiffies.h
>>>> @@ -526,6 +526,8 @@ static __always_inline unsigned long msecs_to_jiffies(const unsigned int m)
>>>>       }
>>>>  }
>>>>
>>>> +#define secs_to_jiffies(_secs) ((_secs) * HZ)
>>>
>>> Can you please make that a static inline, as there is no need for macro
>>> magic like in the other conversions, and add a kernel doc comment which
>>> documents this?
>>
>> Note that a static inline means it cannot be used in e.g. struct initializers,
>> which are substantial users of  "<value> * HZ".
> 
> Bah. That wants to be mentioned in the change log then.
> 
> Still the macro should be documented.
> 
> Thanks,
> 
>         tglx

Thanks for the review, I'll add a kernel doc in v3 and mention the
limitations of an inline function.

- Easwar
David Laight Nov. 6, 2024, 10:19 p.m. UTC | #2
From: Thomas Gleixner
> Sent: 29 October 2024 17:25
> 
> On Tue, Oct 29 2024 at 17:22, Geert Uytterhoeven wrote:
> > On Tue, Oct 29, 2024 at 5:08 PM Thomas Gleixner <tglx@linutronix.de> wrote:
> >> On Mon, Oct 28 2024 at 19:11, Easwar Hariharan wrote:
> >> > diff --git a/include/linux/jiffies.h b/include/linux/jiffies.h
> >> > index 1220f0fbe5bf..e5256bb5f851 100644
> >> > --- a/include/linux/jiffies.h
> >> > +++ b/include/linux/jiffies.h
> >> > @@ -526,6 +526,8 @@ static __always_inline unsigned long msecs_to_jiffies(const unsigned int m)
> >> >       }
> >> >  }
> >> >
> >> > +#define secs_to_jiffies(_secs) ((_secs) * HZ)
> >>
> >> Can you please make that a static inline, as there is no need for macro
> >> magic like in the other conversions, and add a kernel doc comment which
> >> documents this?
> >
> > Note that a static inline means it cannot be used in e.g. struct initializers,
> > which are substantial users of  "<value> * HZ".
> 
> Bah. That wants to be mentioned in the change log then.
> 
> Still the macro should be documented.

I was wondering if it really had any purpose at all.
It just obfuscates code, doesn't even make it smaller.

	David

-
Registered Address Lakeside, Bramley Road, Mount Farm, Milton Keynes, MK1 1PT, UK
Registration No: 1397386 (Wales)
Thomas Gleixner Nov. 6, 2024, 11:55 p.m. UTC | #3
On Wed, Nov 06 2024 at 22:19, David Laight wrote:
> From: Thomas Gleixner
>> Still the macro should be documented.
>
> I was wondering if it really had any purpose at all.
> It just obfuscates code, doesn't even make it smaller.

What is obfuscated here?

secs_to_jiffies() is clearly describing what this is about, while 5 * HZ
is not. Nothing in a driver has to care about the underlying conversion
of a time delta expressed in SI units to a jiffies based time delta.

Thanks,

        tglx
diff mbox series

Patch

diff --git a/include/linux/jiffies.h b/include/linux/jiffies.h
index 1220f0fbe5bf..e5256bb5f851 100644
--- a/include/linux/jiffies.h
+++ b/include/linux/jiffies.h
@@ -526,6 +526,8 @@  static __always_inline unsigned long msecs_to_jiffies(const unsigned int m)
 	}
 }
 
+#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 0bbad90ddd6f..7b35c58bbbeb 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,