hw_watchpoint.h 793 B

123456789101112131415161718192021222324252627282930313233343536
  1. #ifndef __HW_BREAKPOINT_H
  2. #define __HW_BREAKPOINT_H
  3. typedef int (*wp_handler) (phys_addr_t addr);
  4. struct wp_event {
  5. phys_addr_t virt;
  6. phys_addr_t phys;
  7. int type;
  8. wp_handler handler;
  9. int in_use;
  10. int auto_disable;
  11. };
  12. #define WP_EVENT_TYPE_READ 1
  13. #define WP_EVENT_TYPE_WRITE 2
  14. #define WP_EVENT_TYPE_ALL 3
  15. #define init_wp_event(__e, __v, __p, __t, __h) \
  16. do { \
  17. (__e)->virt = (phys_addr_t)(__v); \
  18. (__e)->phys = (phys_addr_t)(__p); \
  19. (__e)->type = (__t); \
  20. (__e)->handler = (wp_handler)(__h); \
  21. (__e)->auto_disable = 0; \
  22. } while (0)
  23. #define auto_disable_wp(__e) \
  24. {\
  25. (__e)->auto_disable = 1; \
  26. }
  27. extern int add_hw_watchpoint(struct wp_event *wp_event);
  28. extern int del_hw_watchpoint(struct wp_event *wp_event);
  29. #endif /* !__HW_BREAKPOINT_H */