0001
0002 #ifndef _LINUX_RANGE_H
0003 #define _LINUX_RANGE_H
0004 #include <linux/types.h>
0005
0006 struct range {
0007 u64 start;
0008 u64 end;
0009 };
0010
0011 static inline u64 range_len(const struct range *range)
0012 {
0013 return range->end - range->start + 1;
0014 }
0015
0016 int add_range(struct range *range, int az, int nr_range,
0017 u64 start, u64 end);
0018
0019
0020 int add_range_with_merge(struct range *range, int az, int nr_range,
0021 u64 start, u64 end);
0022
0023 void subtract_range(struct range *range, int az, u64 start, u64 end);
0024
0025 int clean_sort_range(struct range *range, int az);
0026
0027 void sort_range(struct range *range, int nr_range);
0028
0029 #define MAX_RESOURCE ((resource_size_t)~0)
0030 static inline resource_size_t cap_resource(u64 val)
0031 {
0032 if (val > MAX_RESOURCE)
0033 return MAX_RESOURCE;
0034
0035 return val;
0036 }
0037 #endif