igt_atomic.c 750 B

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. // SPDX-License-Identifier: MIT
  2. /*
  3. * Copyright © 2018 Intel Corporation
  4. */
  5. #include <linux/preempt.h>
  6. #include <linux/bottom_half.h>
  7. #include <linux/irqflags.h>
  8. #include "igt_atomic.h"
  9. static void __preempt_begin(void)
  10. {
  11. preempt_disable();
  12. }
  13. static void __preempt_end(void)
  14. {
  15. preempt_enable();
  16. }
  17. static void __softirq_begin(void)
  18. {
  19. local_bh_disable();
  20. }
  21. static void __softirq_end(void)
  22. {
  23. local_bh_enable();
  24. }
  25. static void __hardirq_begin(void)
  26. {
  27. local_irq_disable();
  28. }
  29. static void __hardirq_end(void)
  30. {
  31. local_irq_enable();
  32. }
  33. const struct igt_atomic_section igt_atomic_phases[] = {
  34. { "preempt", __preempt_begin, __preempt_end },
  35. { "softirq", __softirq_begin, __softirq_end },
  36. { "hardirq", __hardirq_begin, __hardirq_end },
  37. { }
  38. };