linux/include/linux/nmi.h
<<
>>
Prefs
   1/*
   2 *  linux/include/linux/nmi.h
   3 */
   4#ifndef LINUX_NMI_H
   5#define LINUX_NMI_H
   6
   7#include <linux/sched.h>
   8#include <asm/irq.h>
   9
  10/**
  11 * touch_nmi_watchdog - restart NMI watchdog timeout.
  12 * 
  13 * If the architecture supports the NMI watchdog, touch_nmi_watchdog()
  14 * may be used to reset the timeout - for code which intentionally
  15 * disables interrupts for a long time. This call is stateless.
  16 */
  17#if defined(CONFIG_HAVE_NMI_WATCHDOG) || defined(CONFIG_HARDLOCKUP_DETECTOR)
  18#include <asm/nmi.h>
  19extern void touch_nmi_watchdog(void);
  20#else
  21static inline void touch_nmi_watchdog(void)
  22{
  23        touch_softlockup_watchdog();
  24}
  25#endif
  26
  27#if defined(CONFIG_HARDLOCKUP_DETECTOR)
  28extern void hardlockup_detector_disable(void);
  29#else
  30static inline void hardlockup_detector_disable(void)
  31{
  32}
  33#endif
  34
  35/*
  36 * Create trigger_all_cpu_backtrace() out of the arch-provided
  37 * base function. Return whether such support was available,
  38 * to allow calling code to fall back to some other mechanism:
  39 */
  40#ifdef arch_trigger_all_cpu_backtrace
  41static inline bool trigger_all_cpu_backtrace(void)
  42{
  43        arch_trigger_all_cpu_backtrace(true);
  44
  45        return true;
  46}
  47static inline bool trigger_allbutself_cpu_backtrace(void)
  48{
  49        arch_trigger_all_cpu_backtrace(false);
  50        return true;
  51}
  52#else
  53static inline bool trigger_all_cpu_backtrace(void)
  54{
  55        return false;
  56}
  57static inline bool trigger_allbutself_cpu_backtrace(void)
  58{
  59        return false;
  60}
  61#endif
  62
  63#ifdef CONFIG_LOCKUP_DETECTOR
  64int hw_nmi_is_cpu_stuck(struct pt_regs *);
  65u64 hw_nmi_get_sample_period(int watchdog_thresh);
  66extern int nmi_watchdog_enabled;
  67extern int soft_watchdog_enabled;
  68extern int watchdog_user_enabled;
  69extern int watchdog_thresh;
  70extern int sysctl_softlockup_all_cpu_backtrace;
  71struct ctl_table;
  72extern int proc_watchdog(struct ctl_table *, int ,
  73                         void __user *, size_t *, loff_t *);
  74extern int proc_nmi_watchdog(struct ctl_table *, int ,
  75                             void __user *, size_t *, loff_t *);
  76extern int proc_soft_watchdog(struct ctl_table *, int ,
  77                              void __user *, size_t *, loff_t *);
  78extern int proc_watchdog_thresh(struct ctl_table *, int ,
  79                                void __user *, size_t *, loff_t *);
  80#endif
  81
  82#ifdef CONFIG_HAVE_ACPI_APEI_NMI
  83#include <asm/nmi.h>
  84#endif
  85
  86#endif
  87