|
|
c5cada |
From c9e41cd3485fa1a65dc6206c5b210b4be4c5597c Mon Sep 17 00:00:00 2001
|
|
|
c5cada |
From: =?UTF-8?q?=C3=81kos=20Uzonyi?= <uzonyi.akos@gmail.com>
|
|
|
c5cada |
Date: Sat, 13 Jun 2020 18:18:32 +0200
|
|
|
c5cada |
Subject: [PATCH 120/138] Move ilog* functions from util.c to defs.h
|
|
|
c5cada |
|
|
|
c5cada |
* util.c (ILOG2_ITER_, ilog2_klong, ilog2_64, ilog2_32): Move ...
|
|
|
c5cada |
* defs.h: ... here.
|
|
|
c5cada |
---
|
|
|
c5cada |
defs.h | 60 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
|
|
c5cada |
util.c | 62 --------------------------------------------------------------
|
|
|
c5cada |
2 files changed, 60 insertions(+), 62 deletions(-)
|
|
|
c5cada |
|
|
|
c5cada |
diff --git a/defs.h b/defs.h
|
|
|
c5cada |
index 3aa07fb..d8bd513 100644
|
|
|
c5cada |
--- a/defs.h
|
|
|
c5cada |
+++ b/defs.h
|
|
|
c5cada |
@@ -1698,4 +1698,64 @@ scno_is_valid(kernel_ulong_t scno)
|
|
|
c5cada |
|
|
|
c5cada |
# define SYS_FUNC(syscall_name) int SYS_FUNC_NAME(sys_ ## syscall_name)(struct tcb *tcp)
|
|
|
c5cada |
|
|
|
c5cada |
+#define ILOG2_ITER_(val_, ret_, bit_) \
|
|
|
c5cada |
+ do { \
|
|
|
c5cada |
+ typeof(ret_) shift_ = \
|
|
|
c5cada |
+ ((val_) > ((((typeof(val_)) 1) \
|
|
|
c5cada |
+ << (1 << (bit_))) - 1)) << (bit_); \
|
|
|
c5cada |
+ (val_) >>= shift_; \
|
|
|
c5cada |
+ (ret_) |= shift_; \
|
|
|
c5cada |
+ } while (0)
|
|
|
c5cada |
+
|
|
|
c5cada |
+/**
|
|
|
c5cada |
+ * Calculate floor(log2(val)), with the exception of val == 0, for which 0
|
|
|
c5cada |
+ * is returned as well.
|
|
|
c5cada |
+ *
|
|
|
c5cada |
+ * @param val 64-bit value to calculate integer base-2 logarithm for.
|
|
|
c5cada |
+ * @return (unsigned int) floor(log2(val)) if val > 0, 0 if val == 0.
|
|
|
c5cada |
+ */
|
|
|
c5cada |
+static inline unsigned int
|
|
|
c5cada |
+ilog2_64(uint64_t val)
|
|
|
c5cada |
+{
|
|
|
c5cada |
+ unsigned int ret = 0;
|
|
|
c5cada |
+
|
|
|
c5cada |
+ ILOG2_ITER_(val, ret, 5);
|
|
|
c5cada |
+ ILOG2_ITER_(val, ret, 4);
|
|
|
c5cada |
+ ILOG2_ITER_(val, ret, 3);
|
|
|
c5cada |
+ ILOG2_ITER_(val, ret, 2);
|
|
|
c5cada |
+ ILOG2_ITER_(val, ret, 1);
|
|
|
c5cada |
+ ILOG2_ITER_(val, ret, 0);
|
|
|
c5cada |
+
|
|
|
c5cada |
+ return ret;
|
|
|
c5cada |
+}
|
|
|
c5cada |
+
|
|
|
c5cada |
+/**
|
|
|
c5cada |
+ * Calculate floor(log2(val)), with the exception of val == 0, for which 0
|
|
|
c5cada |
+ * is returned as well.
|
|
|
c5cada |
+ *
|
|
|
c5cada |
+ * @param val 32-bit value to calculate integer base-2 logarithm for.
|
|
|
c5cada |
+ * @return (unsigned int) floor(log2(val)) if val > 0, 0 if val == 0.
|
|
|
c5cada |
+ */
|
|
|
c5cada |
+static inline unsigned int
|
|
|
c5cada |
+ilog2_32(uint32_t val)
|
|
|
c5cada |
+{
|
|
|
c5cada |
+ unsigned int ret = 0;
|
|
|
c5cada |
+
|
|
|
c5cada |
+ ILOG2_ITER_(val, ret, 4);
|
|
|
c5cada |
+ ILOG2_ITER_(val, ret, 3);
|
|
|
c5cada |
+ ILOG2_ITER_(val, ret, 2);
|
|
|
c5cada |
+ ILOG2_ITER_(val, ret, 1);
|
|
|
c5cada |
+ ILOG2_ITER_(val, ret, 0);
|
|
|
c5cada |
+
|
|
|
c5cada |
+ return ret;
|
|
|
c5cada |
+}
|
|
|
c5cada |
+
|
|
|
c5cada |
+#if SIZEOF_KERNEL_LONG_T > 4
|
|
|
c5cada |
+# define ilog2_klong ilog2_64
|
|
|
c5cada |
+#else
|
|
|
c5cada |
+# define ilog2_klong ilog2_32
|
|
|
c5cada |
+#endif
|
|
|
c5cada |
+
|
|
|
c5cada |
+#undef ILOG2_ITER_
|
|
|
c5cada |
+
|
|
|
c5cada |
#endif /* !STRACE_DEFS_H */
|
|
|
c5cada |
diff --git a/util.c b/util.c
|
|
|
c5cada |
index 59696b5..cde76c1 100644
|
|
|
c5cada |
--- a/util.c
|
|
|
c5cada |
+++ b/util.c
|
|
|
c5cada |
@@ -1120,68 +1120,6 @@ dumpiov_upto(struct tcb *const tcp, const int len, const kernel_ulong_t addr,
|
|
|
c5cada |
#undef iov
|
|
|
c5cada |
}
|
|
|
c5cada |
|
|
|
c5cada |
-#define ILOG2_ITER_(val_, ret_, bit_) \
|
|
|
c5cada |
- do { \
|
|
|
c5cada |
- typeof(ret_) shift_ = \
|
|
|
c5cada |
- ((val_) > ((((typeof(val_)) 1) \
|
|
|
c5cada |
- << (1 << (bit_))) - 1)) << (bit_); \
|
|
|
c5cada |
- (val_) >>= shift_; \
|
|
|
c5cada |
- (ret_) |= shift_; \
|
|
|
c5cada |
- } while (0)
|
|
|
c5cada |
-
|
|
|
c5cada |
-#if SIZEOF_KERNEL_LONG_T > 4
|
|
|
c5cada |
-
|
|
|
c5cada |
-# define ilog2_klong ilog2_64
|
|
|
c5cada |
-/**
|
|
|
c5cada |
- * Calculate floor(log2(val)), with the exception of val == 0, for which 0
|
|
|
c5cada |
- * is returned as well.
|
|
|
c5cada |
- *
|
|
|
c5cada |
- * @param val 64-bit value to calculate integer base-2 logarithm for.
|
|
|
c5cada |
- * @return (unsigned int) floor(log2(val)) if val > 0, 0 if val == 0.
|
|
|
c5cada |
- */
|
|
|
c5cada |
-static inline unsigned int
|
|
|
c5cada |
-ilog2_64(uint64_t val)
|
|
|
c5cada |
-{
|
|
|
c5cada |
- unsigned int ret = 0;
|
|
|
c5cada |
-
|
|
|
c5cada |
- ILOG2_ITER_(val, ret, 5);
|
|
|
c5cada |
- ILOG2_ITER_(val, ret, 4);
|
|
|
c5cada |
- ILOG2_ITER_(val, ret, 3);
|
|
|
c5cada |
- ILOG2_ITER_(val, ret, 2);
|
|
|
c5cada |
- ILOG2_ITER_(val, ret, 1);
|
|
|
c5cada |
- ILOG2_ITER_(val, ret, 0);
|
|
|
c5cada |
-
|
|
|
c5cada |
- return ret;
|
|
|
c5cada |
-}
|
|
|
c5cada |
-
|
|
|
c5cada |
-#else /* SIZEOF_KERNEL_LONG_T == 4 */
|
|
|
c5cada |
-
|
|
|
c5cada |
-# define ilog2_klong ilog2_32
|
|
|
c5cada |
-/**
|
|
|
c5cada |
- * Calculate floor(log2(val)), with the exception of val == 0, for which 0
|
|
|
c5cada |
- * is returned as well.
|
|
|
c5cada |
- *
|
|
|
c5cada |
- * @param val 32-bit value to calculate integer base-2 logarithm for.
|
|
|
c5cada |
- * @return (unsigned int) floor(log2(val)) if val > 0, 0 if val == 0.
|
|
|
c5cada |
- */
|
|
|
c5cada |
-static inline unsigned int
|
|
|
c5cada |
-ilog2_32(uint32_t val)
|
|
|
c5cada |
-{
|
|
|
c5cada |
- unsigned int ret = 0;
|
|
|
c5cada |
-
|
|
|
c5cada |
- ILOG2_ITER_(val, ret, 4);
|
|
|
c5cada |
- ILOG2_ITER_(val, ret, 3);
|
|
|
c5cada |
- ILOG2_ITER_(val, ret, 2);
|
|
|
c5cada |
- ILOG2_ITER_(val, ret, 1);
|
|
|
c5cada |
- ILOG2_ITER_(val, ret, 0);
|
|
|
c5cada |
-
|
|
|
c5cada |
- return ret;
|
|
|
c5cada |
-}
|
|
|
c5cada |
-
|
|
|
c5cada |
-#endif /* SIZEOF_KERNEL_LONG_T */
|
|
|
c5cada |
-
|
|
|
c5cada |
-#undef ILOG2_ITER_
|
|
|
c5cada |
-
|
|
|
c5cada |
void
|
|
|
c5cada |
dumpstr(struct tcb *const tcp, const kernel_ulong_t addr,
|
|
|
c5cada |
const kernel_ulong_t len)
|
|
|
c5cada |
--
|
|
|
c5cada |
2.1.4
|
|
|
c5cada |
|