blob: 274681cc3154809cad3d5c715bca693a608a8b9c [file] [log] [blame]
Andrew Scullb4b6d4a2019-01-02 15:54:55 +00001/* SPDX-License-Identifier: GPL-2.0 */
2#ifndef _LINUX_RANGE_H
3#define _LINUX_RANGE_H
Olivier Deprez157378f2022-04-04 15:47:50 +02004#include <linux/types.h>
Andrew Scullb4b6d4a2019-01-02 15:54:55 +00005
6struct range {
7 u64 start;
8 u64 end;
9};
10
Olivier Deprez157378f2022-04-04 15:47:50 +020011static inline u64 range_len(const struct range *range)
12{
13 return range->end - range->start + 1;
14}
15
Andrew Scullb4b6d4a2019-01-02 15:54:55 +000016int add_range(struct range *range, int az, int nr_range,
17 u64 start, u64 end);
18
19
20int add_range_with_merge(struct range *range, int az, int nr_range,
21 u64 start, u64 end);
22
23void subtract_range(struct range *range, int az, u64 start, u64 end);
24
25int clean_sort_range(struct range *range, int az);
26
27void sort_range(struct range *range, int nr_range);
28
29#define MAX_RESOURCE ((resource_size_t)~0)
30static inline resource_size_t cap_resource(u64 val)
31{
32 if (val > MAX_RESOURCE)
33 return MAX_RESOURCE;
34
35 return val;
36}
37#endif