127811d8cabe56e0c3622251b049086f49face4ffYinghai Lu#ifndef _LINUX_RANGE_H
227811d8cabe56e0c3622251b049086f49face4ffYinghai Lu#define _LINUX_RANGE_H
327811d8cabe56e0c3622251b049086f49face4ffYinghai Lu
427811d8cabe56e0c3622251b049086f49face4ffYinghai Lustruct range {
527811d8cabe56e0c3622251b049086f49face4ffYinghai Lu	u64   start;
627811d8cabe56e0c3622251b049086f49face4ffYinghai Lu	u64   end;
727811d8cabe56e0c3622251b049086f49face4ffYinghai Lu};
827811d8cabe56e0c3622251b049086f49face4ffYinghai Lu
927811d8cabe56e0c3622251b049086f49face4ffYinghai Luint add_range(struct range *range, int az, int nr_range,
1027811d8cabe56e0c3622251b049086f49face4ffYinghai Lu		u64 start, u64 end);
1127811d8cabe56e0c3622251b049086f49face4ffYinghai Lu
1227811d8cabe56e0c3622251b049086f49face4ffYinghai Lu
1327811d8cabe56e0c3622251b049086f49face4ffYinghai Luint add_range_with_merge(struct range *range, int az, int nr_range,
1427811d8cabe56e0c3622251b049086f49face4ffYinghai Lu				u64 start, u64 end);
1527811d8cabe56e0c3622251b049086f49face4ffYinghai Lu
1627811d8cabe56e0c3622251b049086f49face4ffYinghai Luvoid subtract_range(struct range *range, int az, u64 start, u64 end);
1727811d8cabe56e0c3622251b049086f49face4ffYinghai Lu
1827811d8cabe56e0c3622251b049086f49face4ffYinghai Luint clean_sort_range(struct range *range, int az);
1927811d8cabe56e0c3622251b049086f49face4ffYinghai Lu
2027811d8cabe56e0c3622251b049086f49face4ffYinghai Luvoid sort_range(struct range *range, int nr_range);
2127811d8cabe56e0c3622251b049086f49face4ffYinghai Lu
229ad3f2c7c69659c343843393944d739fec1f2e73Yinghai Lu#define MAX_RESOURCE ((resource_size_t)~0)
239ad3f2c7c69659c343843393944d739fec1f2e73Yinghai Lustatic inline resource_size_t cap_resource(u64 val)
249ad3f2c7c69659c343843393944d739fec1f2e73Yinghai Lu{
259ad3f2c7c69659c343843393944d739fec1f2e73Yinghai Lu	if (val > MAX_RESOURCE)
269ad3f2c7c69659c343843393944d739fec1f2e73Yinghai Lu		return MAX_RESOURCE;
279ad3f2c7c69659c343843393944d739fec1f2e73Yinghai Lu
289ad3f2c7c69659c343843393944d739fec1f2e73Yinghai Lu	return val;
299ad3f2c7c69659c343843393944d739fec1f2e73Yinghai Lu}
3027811d8cabe56e0c3622251b049086f49face4ffYinghai Lu#endif
31