Re: VolanoMark regression with 2.6.27-rc1

Previous message: [thread] [date] [author]
Next message: [thread] [date] [author]
From: Peter Zijlstra
Date: Thursday, August 21, 2008 - 1:17 am

On Thu, 2008-08-21 at 16:11 +1000, Nick Piggin wrote:

Right - anyway the point is moot - as Yanmin says it still sucks rocks.

But since I couldn't let it rest :-)

---
Index: linux-2.6/include/linux/kernel.h
===================================================================
--- linux-2.6.orig/include/linux/kernel.h
+++ linux-2.6/include/linux/kernel.h
@@ -367,6 +367,45 @@ static inline char *pack_hex_byte(char *
 	(void) (&_max1 == &_max2);		\
 	_max1 > _max2 ? _max1 : _max2; })
 
+#define __avg_t(type, x, y) ({			\
+	typeof(x) __avg1 = (x);			\
+	typeof(y) __avg2 = (y);			\
+	__avg1 + ((type)(__avg2 - __avg1))/2; })
+
+extern void avg_unknown_size(void);
+
+#define __avg(x, y) ({				\
+	typeof(x) ret;				\
+	switch (sizeof(ret)) {			\
+	case 1:					\
+		ret = __avg_t(s8, x, y);	\
+		break;				\
+	case 2:					\
+		ret = __avg_t(s16, x, y);	\
+		break;				\
+	case 4:					\
+		ret = __avg_t(s32, x, y);	\
+		break;				\
+	case 8:					\
+		ret = __avg_t(s64, x, y);	\
+		break;				\
+	default:				\
+		avg_unknown_size();		\
+		break;				\
+	}					\
+	ret; })
+
+#define avg(x, y) ({				\
+	typeof(x) _avg1 = (x);			\
+	typeof(y) _avg2 = (y);			\
+	(void) (&_avg1 == &_avg2);		\
+	__avg(_avg1, _avg2); })
+
+#define avg_t(type, x, y) ({			\
+	type _avg1 = (x);			\
+	type _avg2 = (y);			\
+	__avg(_avg1, _avg2); })
+
 /**
  * clamp - return a value clamped to a given range with strict typechecking
  * @val: current value


--
Previous message: [thread] [date] [author]
Next message: [thread] [date] [author]

Messages in current thread:
Re: VolanoMark regression with 2.6.27-rc1, Zhang, Yanmin, (Wed Aug 20, 12:24 am)
Re: VolanoMark regression with 2.6.27-rc1, Peter Zijlstra, (Wed Aug 20, 12:41 am)
Re: VolanoMark regression with 2.6.27-rc1, Ingo Molnar, (Wed Aug 20, 3:51 am)
Re: VolanoMark regression with 2.6.27-rc1, Peter Zijlstra, (Wed Aug 20, 6:32 am)
Re: VolanoMark regression with 2.6.27-rc1, Ingo Molnar, (Wed Aug 20, 6:47 am)
Re: VolanoMark regression with 2.6.27-rc1, adobriyan, (Wed Aug 20, 7:32 am)
Re: VolanoMark regression with 2.6.27-rc1, Peter Zijlstra, (Wed Aug 20, 7:33 am)
Re: VolanoMark regression with 2.6.27-rc1, Nick Piggin, (Wed Aug 20, 8:10 am)
Re: VolanoMark regression with 2.6.27-rc1, Peter Zijlstra, (Wed Aug 20, 8:15 am)
Re: VolanoMark regression with 2.6.27-rc1, Ray Lee, (Wed Aug 20, 9:29 am)
Re: VolanoMark regression with 2.6.27-rc1, Peter Zijlstra, (Wed Aug 20, 9:51 am)
Re: VolanoMark regression with 2.6.27-rc1, Peter Zijlstra, (Wed Aug 20, 10:21 am)
Re: VolanoMark regression with 2.6.27-rc1, Nick Piggin, (Wed Aug 20, 10:55 am)
Re: VolanoMark regression with 2.6.27-rc1, Ray Lee, (Wed Aug 20, 11:15 am)
Re: VolanoMark regression with 2.6.27-rc1, Peter Zijlstra, (Wed Aug 20, 1:30 pm)
Re: VolanoMark regression with 2.6.27-rc1, Peter Zijlstra, (Wed Aug 20, 1:56 pm)
Re: VolanoMark regression with 2.6.27-rc1, Ray Lee, (Wed Aug 20, 1:58 pm)
Re: VolanoMark regression with 2.6.27-rc1, Peter Zijlstra, (Wed Aug 20, 2:04 pm)
Re: VolanoMark regression with 2.6.27-rc1, Zhang, Yanmin, (Wed Aug 20, 7:25 pm)
Re: VolanoMark regression with 2.6.27-rc1, Nick Piggin, (Wed Aug 20, 11:11 pm)
Re: VolanoMark regression with 2.6.27-rc1, Ingo Molnar, (Wed Aug 20, 11:12 pm)
Re: VolanoMark regression with 2.6.27-rc1, Ingo Molnar, (Wed Aug 20, 11:15 pm)
Re: VolanoMark regression with 2.6.27-rc1, Ingo Molnar, (Wed Aug 20, 11:16 pm)
Re: VolanoMark regression with 2.6.27-rc1, Zhang, Yanmin, (Wed Aug 20, 11:48 pm)
Re: VolanoMark regression with 2.6.27-rc1, Peter Zijlstra, (Thu Aug 21, 1:17 am)
Re: VolanoMark regression with 2.6.27-rc1, Zhang, Yanmin, (Thu Aug 28, 8:35 pm)
Re: VolanoMark regression with 2.6.27-rc1, Zhang, Yanmin, (Thu Aug 28, 8:38 pm)