]>
Commit | Line | Data |
---|---|---|
0d9e8c0b MS |
1 | /* |
2 | * QEMU Hyper-V Dynamic Memory Protocol driver | |
3 | * | |
4 | * Copyright (C) 2020-2023 Oracle and/or its affiliates. | |
5 | * | |
6 | * This work is licensed under the terms of the GNU GPL, version 2 or later. | |
7 | * See the COPYING file in the top-level directory. | |
8 | */ | |
9 | ||
10 | #ifndef HW_HYPERV_HV_BALLOON_INTERNAL_H | |
11 | #define HW_HYPERV_HV_BALLOON_INTERNAL_H | |
12 | ||
13 | #include "qemu/osdep.h" | |
14 | ||
15 | #define HV_BALLOON_PFN_SHIFT 12 | |
16 | #define HV_BALLOON_PAGE_SIZE (1 << HV_BALLOON_PFN_SHIFT) | |
17 | ||
18 | #define SUM_OVERFLOW_U64(in1, in2) ((in1) > UINT64_MAX - (in2)) | |
19 | #define SUM_SATURATE_U64(in1, in2) \ | |
20 | ({ \ | |
21 | uint64_t _in1 = (in1), _in2 = (in2); \ | |
22 | uint64_t _result; \ | |
23 | \ | |
24 | if (!SUM_OVERFLOW_U64(_in1, _in2)) { \ | |
25 | _result = _in1 + _in2; \ | |
26 | } else { \ | |
27 | _result = UINT64_MAX; \ | |
28 | } \ | |
29 | \ | |
30 | _result; \ | |
31 | }) | |
32 | ||
33 | #endif |