#include <linux/context_tracking.h>
  #include <linux/entry-common.h>
+ #include <linux/resume_user_mode.h>
  #include <linux/highmem.h>
 +#include <linux/jump_label.h>
  #include <linux/livepatch.h>
  #include <linux/audit.h>
  #include <linux/tick.h>
  }
  
  /* Workaround to allow gradual conversion of architecture code */
- void __weak arch_do_signal_or_restart(struct pt_regs *regs, bool has_signal) { }
- 
- static void handle_signal_work(struct pt_regs *regs, unsigned long ti_work)
- {
-       if (ti_work & _TIF_NOTIFY_SIGNAL)
-               tracehook_notify_signal();
- 
-       arch_do_signal_or_restart(regs, ti_work & _TIF_SIGPENDING);
- }
+ void __weak arch_do_signal_or_restart(struct pt_regs *regs) { }
  
 +#ifdef CONFIG_RT_DELAYED_SIGNALS
 +static inline void raise_delayed_signal(void)
 +{
 +      if (unlikely(current->forced_info.si_signo)) {
 +              force_sig_info(¤t->forced_info);
 +              current->forced_info.si_signo = 0;
 +      }
 +}
 +#else
 +static inline void raise_delayed_signal(void) { }
 +#endif
 +
  static unsigned long exit_to_user_mode_loop(struct pt_regs *regs,
                                            unsigned long ti_work)
  {
 
   *  Adaptive scheduling granularity, math enhancements by Peter Zijlstra
   *  Copyright (C) 2007 Red Hat, Inc., Peter Zijlstra
   */
 +#include <linux/energy_model.h>
 +#include <linux/mmap_lock.h>
 +#include <linux/hugetlb_inline.h>
 +#include <linux/jiffies.h>
 +#include <linux/mm_api.h>
 +#include <linux/highmem.h>
 +#include <linux/spinlock_api.h>
 +#include <linux/cpumask_api.h>
 +#include <linux/lockdep_api.h>
 +#include <linux/softirq.h>
 +#include <linux/refcount_api.h>
 +#include <linux/topology.h>
 +#include <linux/sched/clock.h>
 +#include <linux/sched/cond_resched.h>
 +#include <linux/sched/cputime.h>
 +#include <linux/sched/isolation.h>
 +
 +#include <linux/cpuidle.h>
 +#include <linux/interrupt.h>
 +#include <linux/mempolicy.h>
 +#include <linux/mutex_api.h>
 +#include <linux/profile.h>
 +#include <linux/psi.h>
 +#include <linux/ratelimit.h>
++#include <linux/task_work.h>
 +
 +#include <asm/switch_to.h>
 +
 +#include <linux/sched/cond_resched.h>
 +
  #include "sched.h"
 +#include "stats.h"
 +#include "autogroup.h"
  
  /*
   * Targeted preemption latency for CPU-bound tasks: