Page MenuHomeFreeBSD

D30024.id88323.diff
No OneTemporary

D30024.id88323.diff

Index: sys/compat/linuxkpi/common/include/linux/interrupt.h
===================================================================
--- sys/compat/linuxkpi/common/include/linux/interrupt.h
+++ sys/compat/linuxkpi/common/include/linux/interrupt.h
@@ -208,6 +208,7 @@
unsigned long data);
extern void tasklet_enable(struct tasklet_struct *);
extern void tasklet_disable(struct tasklet_struct *);
+extern void tasklet_disable_nosync(struct tasklet_struct *);
extern int tasklet_trylock(struct tasklet_struct *);
extern void tasklet_unlock(struct tasklet_struct *);
extern void tasklet_unlock_wait(struct tasklet_struct *ts);
Index: sys/compat/linuxkpi/common/src/linux_tasklet.c
===================================================================
--- sys/compat/linuxkpi/common/src/linux_tasklet.c
+++ sys/compat/linuxkpi/common/src/linux_tasklet.c
@@ -33,6 +33,7 @@
#include <sys/proc.h>
#include <sys/sched.h>
+#include <linux/atomic.h>
#include <linux/compiler.h>
#include <linux/interrupt.h>
#include <linux/compat.h>
@@ -62,6 +63,8 @@
DPCPU_DEFINE_STATIC(struct tasklet_worker, tasklet_worker);
+#define smp_mb__after_atomic() barrier()
+
static void
tasklet_handler(void *arg)
{
@@ -227,6 +230,13 @@
tasklet_unlock_wait(ts);
}
+void
+tasklet_disable_nosync(struct tasklet_struct *ts)
+{
+ atomic_inc(&ts->count);
+ smp_mb__after_atomic();
+}
+
int
tasklet_trylock(struct tasklet_struct *ts)
{

File Metadata

Mime Type
text/plain
Expires
Mon, Feb 9, 6:22 AM (16 h, 54 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
28524489
Default Alt Text
D30024.id88323.diff (1 KB)

Event Timeline