From 1ec2f43713e54dabf9c51f6bf7f027a3f2f9078f Mon Sep 17 00:00:00 2001 From: Stefan Kalkowski Date: Wed, 5 Sep 2018 12:45:21 +0200 Subject: [PATCH] dde_linux: use correct type in lx_emul's `min` * use a macro for `min` inside lx_emul/kernel.h * unify the definition of the clamp function Fix #2964 --- .../framebuffer/intel/include/lx_emul.h | 8 -------- repos/dde_linux/src/drivers/usb_hid/lx_emul.h | 2 -- .../dde_linux/src/drivers/usb_host/lx_emul.cc | 2 +- .../dde_linux/src/drivers/usb_host/lx_emul.h | 9 --------- repos/dde_linux/src/drivers/usb_net/lx_emul.h | 2 -- repos/dde_linux/src/include/lx_emul/kernel.h | 20 +++++++------------ repos/dde_linux/src/lib/lxip/dummies.cc | 2 -- .../dde_linux/src/lib/lxip/include/lx_emul.h | 2 -- .../dde_linux/src/lib/lxip/socket_handler.cc | 2 +- repos/dde_linux/src/lib/usb/include/lx_emul.h | 9 --------- .../src/lib/usb/include/usb_nic_component.h | 6 ++++++ repos/dde_linux/src/lib/usb/lx_emul.cc | 2 +- repos/dde_linux/src/lib/usb/nic/nic.cc | 7 ------- 13 files changed, 16 insertions(+), 57 deletions(-) diff --git a/repos/dde_linux/src/drivers/framebuffer/intel/include/lx_emul.h b/repos/dde_linux/src/drivers/framebuffer/intel/include/lx_emul.h index 25a34113c..1e985cdbe 100644 --- a/repos/dde_linux/src/drivers/framebuffer/intel/include/lx_emul.h +++ b/repos/dde_linux/src/drivers/framebuffer/intel/include/lx_emul.h @@ -271,14 +271,6 @@ enum { SPRINTF_STR_LEN = 64 }; extern int panic_timeout; extern struct atomic_notifier_head panic_notifier_list; -#define min(x, y) ({ \ - typeof(x) _min1 = (x); \ - typeof(y) _min2 = (y); \ - (void) (&_min1 == &_min2); \ - _min1 < _min2 ? _min1 : _min2; }) - -#define clamp(val, lo, hi) min((typeof(val))max(val, lo), hi) - /* linux/i2c.h */ #define __deprecated diff --git a/repos/dde_linux/src/drivers/usb_hid/lx_emul.h b/repos/dde_linux/src/drivers/usb_hid/lx_emul.h index 2f778d95a..d182461a5 100644 --- a/repos/dde_linux/src/drivers/usb_hid/lx_emul.h +++ b/repos/dde_linux/src/drivers/usb_hid/lx_emul.h @@ -237,8 +237,6 @@ void vfree(void *addr); struct pm_message {}; typedef struct pm_message pm_message_t; -#define clamp(val, lo, hi) min((typeof(val))max(val, lo), hi) - struct task_struct { char comm[16]; diff --git a/repos/dde_linux/src/drivers/usb_host/lx_emul.cc b/repos/dde_linux/src/drivers/usb_host/lx_emul.cc index 162b08244..91cc60049 100644 --- a/repos/dde_linux/src/drivers/usb_host/lx_emul.cc +++ b/repos/dde_linux/src/drivers/usb_host/lx_emul.cc @@ -596,7 +596,7 @@ int utf16s_to_utf8s(const wchar_t *pwcs, int len, */ u16 *out = (u16 *)s; u16 *in = (u16 *)pwcs; - int length = Genode::min(len, maxlen / 2); + int length = min(len, maxlen / 2); for (int i = 0; i < length; i++) out[i] = in[i]; diff --git a/repos/dde_linux/src/drivers/usb_host/lx_emul.h b/repos/dde_linux/src/drivers/usb_host/lx_emul.h index 8d9d24721..64de8c0ca 100644 --- a/repos/dde_linux/src/drivers/usb_host/lx_emul.h +++ b/repos/dde_linux/src/drivers/usb_host/lx_emul.h @@ -222,15 +222,6 @@ enum { char *kasprintf(gfp_t gfp, const char *fmt, ...); int kstrtouint(const char *s, unsigned int base, unsigned int *res); -#define clamp(val, min, max) ({ \ - typeof(val) __val = (val); \ - typeof(min) __min = (min); \ - typeof(max) __max = (max); \ - (void) (&__val == &__min); \ - (void) (&__val == &__max); \ - __val = __val < __min ? __min: __val; \ - __val > __max ? __max: __val; }) - #define rounddown(x, y) ( \ { \ typeof(x) __x = (x); \ diff --git a/repos/dde_linux/src/drivers/usb_net/lx_emul.h b/repos/dde_linux/src/drivers/usb_net/lx_emul.h index a56cf02b9..bc19f4272 100644 --- a/repos/dde_linux/src/drivers/usb_net/lx_emul.h +++ b/repos/dde_linux/src/drivers/usb_net/lx_emul.h @@ -193,8 +193,6 @@ struct __una_u32 { u32 x; } __attribute__((packed)); u16 get_unaligned_le16(const void *p); u32 get_unaligned_le32(const void *p); -#define clamp(val, lo, hi) min((typeof(val))max(val, lo), hi) - struct completion { unsigned int done; diff --git a/repos/dde_linux/src/include/lx_emul/kernel.h b/repos/dde_linux/src/include/lx_emul/kernel.h index cabae4b4f..5a687d351 100644 --- a/repos/dde_linux/src/include/lx_emul/kernel.h +++ b/repos/dde_linux/src/include/lx_emul/kernel.h @@ -98,19 +98,6 @@ static inline void panic(const char *fmt, ...) type __max2 = (y); \ __max1 > __max2 ? __max1: __max2; }) -/** - * Return minimum of two given values - * - * XXX check how this function is used (argument types) - */ -static inline size_t min(size_t a, size_t b) { - return a < b ? a : b; } - -/** - * Return maximum of two given values - * - * XXX check how this function is used (argument types) - */ #define max(x, y) ({ \ typeof(x) _max1 = (x); \ typeof(y) _max2 = (y); \ @@ -121,6 +108,11 @@ static inline size_t min(size_t a, size_t b) { type __min2 = (y); \ __min1 < __min2 ? __min1: __min2; }) +#define min(x, y) ({ \ + typeof(x) _min1 = (x); \ + typeof(y) _min2 = (y); \ + _min1 > _min2 ? _min2 : _min1; }) + #define abs(x) ( { \ typeof (x) _x = (x); \ _x < 0 ? -_x : _x; }) @@ -138,6 +130,8 @@ static inline size_t min(size_t a, size_t b) { #define round_up(x, y) ((((x)-1) | __round_mask(x, y))+1) #define round_down(x, y) ((x) & ~__round_mask(x, y)) +#define clamp(val, lo, hi) min((typeof(val))max(val, lo), hi) + #define clamp_val(val, min, max) ({ \ typeof(val) __val = (val); \ typeof(val) __min = (min); \ diff --git a/repos/dde_linux/src/lib/lxip/dummies.cc b/repos/dde_linux/src/lib/lxip/dummies.cc index 2347ab0e6..d9aa5907d 100644 --- a/repos/dde_linux/src/lib/lxip/dummies.cc +++ b/repos/dde_linux/src/lib/lxip/dummies.cc @@ -208,7 +208,6 @@ DUMMY(-1, cancel_delayed_work_sync) DUMMY(-1, capable) DUMMY(-1, cipso_v4_validate) DUMMY(-1, __clear_bit) -DUMMY(-1, clamp) DUMMY(-1, clear_bit) DUMMY(-1, cond_resched) DUMMY(-1, cond_resched_softirq) @@ -330,7 +329,6 @@ DUMMY(-1, linkwatch_init_dev) DUMMY(-1, linkwatch_run_queue) DUMMY(-1, local_softirq_pending) DUMMY(-1, lockdep_rtnl_is_held) -DUMMY(-1, min) DUMMY(-1, module_put) DUMMY(-1, move_addr_to_kernel) DUMMY(-1, mq_qdisc_ops) diff --git a/repos/dde_linux/src/lib/lxip/include/lx_emul.h b/repos/dde_linux/src/lib/lxip/include/lx_emul.h index 6f2473e74..b5d08e939 100644 --- a/repos/dde_linux/src/lib/lxip/include/lx_emul.h +++ b/repos/dde_linux/src/lib/lxip/include/lx_emul.h @@ -311,8 +311,6 @@ int scnprintf(char *, size_t, const char *, ...); buf; \ }) -#define clamp(val, lo, hi) min((typeof(val))max(val, lo), hi) - char *get_options(const char *str, int nints, int *ints); int hex_to_bin(char); diff --git a/repos/dde_linux/src/lib/lxip/socket_handler.cc b/repos/dde_linux/src/lib/lxip/socket_handler.cc index 24c008c29..6ffcab227 100644 --- a/repos/dde_linux/src/lib/lxip/socket_handler.cc +++ b/repos/dde_linux/src/lib/lxip/socket_handler.cc @@ -239,7 +239,7 @@ class Net::Socketcall : public Lxip::Socketcall, (struct Linux::sockaddr *)&_call.addr, &len, peer); - *_call.accept.len = Linux::min(*_call.accept.len, len); + *_call.accept.len = min(*_call.accept.len, len); Genode::memcpy(_call.accept.addr, &_call.addr, *_call.accept.len); } diff --git a/repos/dde_linux/src/lib/usb/include/lx_emul.h b/repos/dde_linux/src/lib/usb/include/lx_emul.h index 7f0ef6359..13590df58 100644 --- a/repos/dde_linux/src/lib/usb/include/lx_emul.h +++ b/repos/dde_linux/src/lib/usb/include/lx_emul.h @@ -267,15 +267,6 @@ int kstrtouint(const char *s, unsigned int base, unsigned int *res); int kstrtoul(const char *s, unsigned int base, unsigned long *res); int kstrtou8(const char *s, unsigned int base, u8 *res); -#define clamp(val, min, max) ({ \ - typeof(val) __val = (val); \ - typeof(min) __min = (min); \ - typeof(max) __max = (max); \ - (void) (&__val == &__min); \ - (void) (&__val == &__max); \ - __val = __val < __min ? __min: __val; \ - __val > __max ? __max: __val; }) - #define rounddown(x, y) ( \ { \ typeof(x) __x = (x); \ diff --git a/repos/dde_linux/src/lib/usb/include/usb_nic_component.h b/repos/dde_linux/src/lib/usb/include/usb_nic_component.h index 3634cacf8..c576f4e8e 100644 --- a/repos/dde_linux/src/lib/usb/include/usb_nic_component.h +++ b/repos/dde_linux/src/lib/usb/include/usb_nic_component.h @@ -18,6 +18,12 @@ #include #include +#include +#include +#include +#include +#include + namespace Usb_nic { using namespace Genode; using Genode::size_t; diff --git a/repos/dde_linux/src/lib/usb/lx_emul.cc b/repos/dde_linux/src/lib/usb/lx_emul.cc index 763e79a36..2f9278fbe 100644 --- a/repos/dde_linux/src/lib/usb/lx_emul.cc +++ b/repos/dde_linux/src/lib/usb/lx_emul.cc @@ -899,7 +899,7 @@ int utf16s_to_utf8s(const wchar_t *pwcs, int len, */ u16 *out = (u16 *)s; u16 *in = (u16 *)pwcs; - int length = Genode::min(len, maxlen / 2); + int length = min(len, maxlen / 2); for (int i = 0; i < length; i++) out[i] = in[i]; diff --git a/repos/dde_linux/src/lib/usb/nic/nic.cc b/repos/dde_linux/src/lib/usb/nic/nic.cc index d78667b7f..269fbe995 100644 --- a/repos/dde_linux/src/lib/usb/nic/nic.cc +++ b/repos/dde_linux/src/lib/usb/nic/nic.cc @@ -17,19 +17,12 @@ #include #include -#include -#include -#include -#include -#include - #include #include #include #include "signal.h" - static Signal_helper *_signal = 0; enum {