|
@@ -466,6 +466,20 @@ static inline void tasklet_hi_schedule(struct tasklet_struct *t)
|
|
|
__tasklet_hi_schedule(t);
|
|
|
}
|
|
|
|
|
|
+extern void __tasklet_hi_schedule_first(struct tasklet_struct *t);
|
|
|
+
|
|
|
+/*
|
|
|
+ * This version avoids touching any other tasklets. Needed for kmemcheck
|
|
|
+ * in order not to take any page faults while enqueueing this tasklet;
|
|
|
+ * consider VERY carefully whether you really need this or
|
|
|
+ * tasklet_hi_schedule()...
|
|
|
+ */
|
|
|
+static inline void tasklet_hi_schedule_first(struct tasklet_struct *t)
|
|
|
+{
|
|
|
+ if (!test_and_set_bit(TASKLET_STATE_SCHED, &t->state))
|
|
|
+ __tasklet_hi_schedule_first(t);
|
|
|
+}
|
|
|
+
|
|
|
|
|
|
static inline void tasklet_disable_nosync(struct tasklet_struct *t)
|
|
|
{
|