Thread (6 messages) 6 messages, 3 authors, 2016-06-30

Re: [PATCH v3] cpuidle: Fix last_residency division

flat view

From: Shreyas B Prabhu <hidden>
Date: 2016-06-30 14:20:56
Also in: linux-pm


On 06/29/2016 08:31 PM, Nicolas Pitre wrote:
On Wed, 29 Jun 2016, Daniel Lezcano wrote:
quoted
On 06/29/2016 09:06 AM, Shreyas B. Prabhu wrote:
quoted
diff --git a/drivers/cpuidle/cpuidle.h b/drivers/cpuidle/cpuidle.h
index f87f399..c8ea5ad 100644
--- a/drivers/cpuidle/cpuidle.h
+++ b/drivers/cpuidle/cpuidle.h
@@ -68,4 +68,27 @@ static inline void
cpuidle_coupled_unregister_device(struct cpuidle_device *dev)
  }
  #endif

+/*
+ * Used for calculating last_residency in usec. Optimized for case
+ * where last_residency in nsecs is < INT_MAX/2 by using faster
+ * approximation. Approximated value has less than 1% error.
+ */
+static inline int convert_nsec_to_usec(u64 nsec)
+{
+	if (likely(nsec < INT_MAX / 2)) {
UINT_MAX ?
Actually this can be better than that.
quoted
quoted
+		int usec = (int)nsec;
First, you'll want an unsigned type. Given the provided argument is u64, 
we can assume there won't be any negative values here.

Then it would be wise to use a type with an explicit width, like U32.
Cool. I wanted to avoid multiple casts. i.e u64 -> u32 -> int. But I
guess there is no real need to avoid it.

Sending v4 with your suggestions.

Thanks,
Shreyas
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help