Page MenuHomeFreeBSD

D18041.diff
No OneTemporary

D18041.diff

Index: sys/compat/linuxkpi/common/include/linux/device.h
===================================================================
--- sys/compat/linuxkpi/common/include/linux/device.h
+++ sys/compat/linuxkpi/common/include/linux/device.h
@@ -183,6 +183,14 @@
#define dev_printk(lvl, dev, fmt, ...) \
device_printf((dev)->bsddev, fmt, ##__VA_ARGS__)
+#define dev_err_once(dev, ...) do { \
+ static bool __dev_err_once; \
+ if (!__dev_err_once) { \
+ __dev_err_once = 1; \
+ dev_err(dev, __VA_ARGS__); \
+ } \
+} while (0)
+
#define dev_err_ratelimited(dev, ...) do { \
static linux_ratelimit_t __ratelimited; \
if (linux_ratelimited(&__ratelimited)) \
Index: sys/compat/linuxkpi/common/include/linux/fs.h
===================================================================
--- sys/compat/linuxkpi/common/include/linux/fs.h
+++ sys/compat/linuxkpi/common/include/linux/fs.h
@@ -319,4 +319,13 @@
#define shmem_truncate_range(...) \
linux_shmem_truncate_range(__VA_ARGS__)
+static inline int
+simple_open(struct inode *inode, struct file *file)
+{
+ // BSDFIXME: Is it OK to do same as Linux here??
+ if (inode->i_private)
+ file->private_data = inode->i_private;
+ return 0;
+}
+
#endif /* _LINUX_FS_H_ */
Index: sys/compat/linuxkpi/common/include/linux/hardirq.h
===================================================================
--- sys/compat/linuxkpi/common/include/linux/hardirq.h
+++ sys/compat/linuxkpi/common/include/linux/hardirq.h
@@ -37,6 +37,7 @@
#include <sys/bus.h>
#include <sys/interrupt.h>
-#define synchronize_irq(irq) _intr_drain((irq))
+#define synchronize_irq(irq) _intr_drain((irq))
+#define synchronize_hardirq(irq) _intr_drain((irq))
#endif /* _LINUX_HARDIRQ_H_ */
Index: sys/compat/linuxkpi/common/include/linux/kernel.h
===================================================================
--- sys/compat/linuxkpi/common/include/linux/kernel.h
+++ sys/compat/linuxkpi/common/include/linux/kernel.h
@@ -130,9 +130,11 @@
#define ALIGN(x, y) roundup2((x), (y))
#undef PTR_ALIGN
#define PTR_ALIGN(p, a) ((__typeof(p))ALIGN((uintptr_t)(p), (a)))
+#define IS_ALIGNED(x, a) (((x) & ((__typeof(x))(a) - 1)) == 0)
#define DIV_ROUND_UP(x, n) howmany(x, n)
#define __KERNEL_DIV_ROUND_UP(x, n) howmany(x, n)
#define DIV_ROUND_UP_ULL(x, n) DIV_ROUND_UP((unsigned long long)(x), (n))
+#define DIV_ROUND_DOWN_ULL(x, n) (((unsigned long long)(x) / (n)) * (n))
#define FIELD_SIZEOF(t, f) sizeof(((t *)0)->f)
#define printk(...) printf(__VA_ARGS__)
Index: sys/compat/linuxkpi/common/include/linux/ktime.h
===================================================================
--- sys/compat/linuxkpi/common/include/linux/ktime.h
+++ sys/compat/linuxkpi/common/include/linux/ktime.h
@@ -35,7 +35,8 @@
#include <linux/time.h>
#include <linux/jiffies.h>
-#define ktime_get_ts(x) getnanouptime(x)
+#define ktime_get_ts(x) getnanotime(x)
+#define ktime_get_raw_ts(x) getnanotime(x)
/* time values in nanoseconds */
typedef s64 ktime_t;
@@ -172,11 +173,19 @@
return (ktime_set(tv.tv_sec, tv.tv_usec * NSEC_PER_USEC));
}
+static inline int64_t
+timespec64_to_ns(struct timespec64 *ts)
+{
+ return ((int64_t) ts->tv_sec * NSEC_PER_SEC) + ts->tv_nsec;
+}
+
#define ktime_to_timespec(kt) ns_to_timespec(kt)
#define ktime_to_timespec64(kt) ns_to_timespec(kt)
#define ktime_to_timeval(kt) ns_to_timeval(kt)
#define ktime_to_ns(kt) (kt)
#define ktime_get_ts64(ts) ktime_get_ts(ts)
+#define ktime_get_raw_ts64(ts) ktime_get_raw_ts(ts)
+#define getrawmonotonic64(ts) ktime_get_raw_ts64(ts)
static inline int64_t
ktime_get_ns(void)
@@ -238,7 +247,7 @@
{
struct timespec ts;
- nanouptime(&ts);
+ nanotime(&ts);
return (ktime_to_ns(timespec_to_ktime(ts)));
}
Index: sys/compat/linuxkpi/common/include/linux/random.h
===================================================================
--- sys/compat/linuxkpi/common/include/linux/random.h
+++ sys/compat/linuxkpi/common/include/linux/random.h
@@ -43,6 +43,15 @@
arc4rand(buf, nbytes, 0);
}
+static inline uint32_t
+get_random_u32(void)
+{
+ uint32_t val;
+
+ get_random_bytes(&val, sizeof(val));
+ return (val);
+}
+
static inline u_int
get_random_int(void)
{
Index: sys/compat/linuxkpi/common/include/linux/sched.h
===================================================================
--- sys/compat/linuxkpi/common/include/linux/sched.h
+++ sys/compat/linuxkpi/common/include/linux/sched.h
@@ -178,4 +178,12 @@
return ((uint64_t)ts.tv_sec * NSEC_PER_SEC + ts.tv_nsec);
}
+static inline const char *
+get_task_comm(char *buf, struct task_struct *task)
+{
+
+ buf[0] = 0; /* buffer is too small */
+ return (task->comm);
+}
+
#endif /* _LINUX_SCHED_H_ */
Index: sys/compat/linuxkpi/common/include/linux/slab.h
===================================================================
--- sys/compat/linuxkpi/common/include/linux/slab.h
+++ sys/compat/linuxkpi/common/include/linux/slab.h
@@ -43,6 +43,8 @@
MALLOC_DECLARE(M_KMALLOC);
#define kvmalloc(size) kmalloc(size, 0)
+#define kvzalloc(size, flags) kmalloc(size, (flags) | __GFP_ZERO)
+#define kvcalloc(n, size, flags) kvmalloc_array(n, size, (flags) | __GFP_ZERO)
#define kzalloc(size, flags) kmalloc(size, (flags) | __GFP_ZERO)
#define kzalloc_node(size, flags, node) kmalloc(size, (flags) | __GFP_ZERO)
#define kfree_const(ptr) kfree(ptr)
Index: sys/compat/linuxkpi/common/include/linux/srcu.h
===================================================================
--- sys/compat/linuxkpi/common/include/linux/srcu.h
+++ sys/compat/linuxkpi/common/include/linux/srcu.h
@@ -34,6 +34,9 @@
#define srcu_dereference(ptr,srcu) ((__typeof(*(ptr)) *)(ptr))
+#define DEFINE_STATIC_SRCU(name) \
+ static struct srcu_struct name = {};
+
/* prototypes */
extern int srcu_read_lock(struct srcu_struct *);

File Metadata

Mime Type
text/plain
Expires
Wed, Mar 12, 12:45 PM (8 h, 13 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
17119556
Default Alt Text
D18041.diff (5 KB)

Event Timeline