#endif /* !(defined(MODULE) && (LINUX_VERSION_CODE >= KERNEL_VERSION(3,14,0)) */
+#if LINUX_VERSION_CODE > KERNEL_VERSION(3, 1, 0)
+ #define task_job(task) (task->jobctl)
+#else /* LINUX_VERSION_CODE > KERNEL_VERSION(3, 1, 0) */
+ #define task_job(task) (task->group_stop)
+#endif /* LINUX_VERSION_CODE > KERNEL_VERSION(3, 1, 0) */
+
+
+
/* --------------------- Declaration of module dependencies ----------------- */
#define DECLARE_MOD_FUNC_DEP(name, ret, ...) ret(*__ref_##name)(__VA_ARGS__)
#include <linux/module.h>
#include <linux/spinlock.h>
#include <kprobe/swap_kprobes.h>
+#include <kprobe/swap_kprobes_deps.h>
#include <ksyms/ksyms.h>
#include "swap_ktd.h"
#include "swap_td_raw.h"
static bool task_prepare_is(struct task_struct *task)
{
- return !!(task->jobctl & kTD_JOBCTL_PREPARE);
+ return !!(task_job(task) & kTD_JOBCTL_PREPARE);
}
static void task_prepare_set(struct task_struct *task)
{
- if (!(task->jobctl & kTD_JOBCTL_PREPARE))
- task->jobctl |= kTD_JOBCTL_PREPARE;
+ if (!(task_job(task) & kTD_JOBCTL_PREPARE))
+ task_job(task) |= kTD_JOBCTL_PREPARE;
else
WARN(1, KTD_PREFIX "already prepare");
static void task_prepare_clear(struct task_struct *task)
{
- if (task->jobctl & kTD_JOBCTL_PREPARE)
- task->jobctl &= ~kTD_JOBCTL_PREPARE;
+ if (task_job(task) & kTD_JOBCTL_PREPARE)
+ task_job(task) &= ~kTD_JOBCTL_PREPARE;
else
WARN(1, KTD_PREFIX "is not prepare");