range.h 775 B

12345678910111213141516171819202122232425262728293031323334353637
  1. /* SPDX-License-Identifier: GPL-2.0 */
  2. #ifndef _LINUX_RANGE_H
  3. #define _LINUX_RANGE_H
  4. #include <linux/types.h>
  5. struct range {
  6. u64 start;
  7. u64 end;
  8. };
  9. static inline u64 range_len(const struct range *range)
  10. {
  11. return range->end - range->start + 1;
  12. }
  13. int add_range(struct range *range, int az, int nr_range,
  14. u64 start, u64 end);
  15. int add_range_with_merge(struct range *range, int az, int nr_range,
  16. u64 start, u64 end);
  17. void subtract_range(struct range *range, int az, u64 start, u64 end);
  18. int clean_sort_range(struct range *range, int az);
  19. void sort_range(struct range *range, int nr_range);
  20. #define MAX_RESOURCE ((resource_size_t)~0)
  21. static inline resource_size_t cap_resource(u64 val)
  22. {
  23. if (val > MAX_RESOURCE)
  24. return MAX_RESOURCE;
  25. return val;
  26. }
  27. #endif