|
@@ -199,18 +199,35 @@ typedef void (interrupt_handler_t)(void *);
|
|
* General Purpose Utilities
|
|
* General Purpose Utilities
|
|
*/
|
|
*/
|
|
#define min(X, Y) \
|
|
#define min(X, Y) \
|
|
- ({ typeof (X) __x = (X); \
|
|
|
|
- typeof (Y) __y = (Y); \
|
|
|
|
|
|
+ ({ typeof(X) __x = (X); \
|
|
|
|
+ typeof(Y) __y = (Y); \
|
|
(__x < __y) ? __x : __y; })
|
|
(__x < __y) ? __x : __y; })
|
|
|
|
|
|
#define max(X, Y) \
|
|
#define max(X, Y) \
|
|
- ({ typeof (X) __x = (X); \
|
|
|
|
- typeof (Y) __y = (Y); \
|
|
|
|
|
|
+ ({ typeof(X) __x = (X); \
|
|
|
|
+ typeof(Y) __y = (Y); \
|
|
(__x > __y) ? __x : __y; })
|
|
(__x > __y) ? __x : __y; })
|
|
|
|
|
|
#define MIN(x, y) min(x, y)
|
|
#define MIN(x, y) min(x, y)
|
|
#define MAX(x, y) max(x, y)
|
|
#define MAX(x, y) max(x, y)
|
|
|
|
|
|
|
|
+#define min3(X, Y, Z) \
|
|
|
|
+ ({ typeof(X) __x = (X); \
|
|
|
|
+ typeof(Y) __y = (Y); \
|
|
|
|
+ typeof(Z) __z = (Z); \
|
|
|
|
+ __x < __y ? (__x < __z ? __x : __z) : \
|
|
|
|
+ (__y < __z ? __y : __z); })
|
|
|
|
+
|
|
|
|
+#define max3(X, Y, Z) \
|
|
|
|
+ ({ typeof(X) __x = (X); \
|
|
|
|
+ typeof(Y) __y = (Y); \
|
|
|
|
+ typeof(Z) __z = (Z); \
|
|
|
|
+ __x > __y ? (__x > __z ? __x : __z) : \
|
|
|
|
+ (__y > __z ? __y : __z); })
|
|
|
|
+
|
|
|
|
+#define MIN3(x, y, z) min3(x, y, z)
|
|
|
|
+#define MAX3(x, y, z) max3(x, y, z)
|
|
|
|
+
|
|
/*
|
|
/*
|
|
* Return the absolute value of a number.
|
|
* Return the absolute value of a number.
|
|
*
|
|
*
|