-
Notifications
You must be signed in to change notification settings - Fork 3
/
register_device.hpp
45 lines (40 loc) · 1.21 KB
/
register_device.hpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
/*
* ghex-org
*
* Copyright (c) 2014-2023, ETH Zurich
* All rights reserved.
*
* Please, refer to the LICENSE file in the root directory.
* SPDX-License-Identifier: BSD-3-Clause
*/
#pragma once
#include <hwmalloc/register.hpp>
namespace hwmalloc
{
namespace detail
{
// default implementation: call normal registration
template<class Context>
constexpr auto
register_device_memory(Context&& c, void* ptr, std::size_t size) noexcept(
noexcept(hwmalloc::register_memory(std::forward<Context>(c), ptr, size)))
-> decltype(hwmalloc::register_memory(std::forward<Context>(c), ptr, size))
{
return hwmalloc::register_memory(std::forward<Context>(c), ptr, size);
}
struct register_device_fn
{
template<typename Context>
constexpr auto operator()(Context&& c, void* ptr, std::size_t size) const
noexcept(noexcept(register_device_memory(std::forward<Context>(c), ptr, size)))
-> decltype(register_device_memory(std::forward<Context>(c), ptr, size))
{
return register_device_memory(std::forward<Context>(c), ptr, size);
}
};
} // namespace detail
namespace
{
constexpr auto const& register_device_memory = static_const_v<detail::register_device_fn>;
}
} // namespace hwmalloc