ublk-cpp v0.0
Loading...
Searching...
No Matches
control.hpp
Go to the documentation of this file.
1
5
6#pragma once
7
10
11namespace ublk {
12
21inline auto get_queue_affinity(int control_fd, uint32_t dev_id, uint16_t q_id,
22 cpu_set_t *cpuset) noexcept {
23 return detail::task_invoke(detail::control_get_queue_affinity_t{},
24 control_fd, dev_id, q_id, cpuset);
25}
26
34inline auto get_dev_info(int control_fd, uint32_t dev_id,
35 ublksrv_ctrl_dev_info *info) noexcept {
36 return detail::task_invoke(detail::control_get_dev_info_t{}, control_fd,
37 dev_id, info);
38}
39
47inline auto add_dev(int control_fd, ublksrv_ctrl_dev_info *info) noexcept {
48 return raw::add_dev(control_fd, info) |
49 detail::ex::then([](int32_t) noexcept {});
50}
51
58inline auto del_dev(int control_fd, uint32_t dev_id) noexcept {
59 return detail::task_invoke(detail::control_del_dev_t{}, control_fd, dev_id);
60}
61
69inline auto start_dev(int control_fd, uint32_t dev_id,
70 int32_t daemon_pid) noexcept {
71 return detail::task_invoke(detail::control_start_dev_t{}, control_fd,
72 dev_id, daemon_pid);
73}
74
81inline auto stop_dev(int control_fd, uint32_t dev_id) noexcept {
82 return detail::task_invoke(detail::control_stop_dev_t{}, control_fd,
83 dev_id);
84}
85
93inline auto set_params(int control_fd, uint32_t dev_id,
94 const ublk_params *params) noexcept {
95 return detail::task_invoke(detail::control_set_params_t{}, control_fd,
96 dev_id, params);
97}
98
106inline auto get_params(int control_fd, uint32_t dev_id,
107 ublk_params *params) noexcept {
108 return detail::task_invoke(detail::control_get_params_t{}, control_fd,
109 dev_id, params);
110}
111
118inline auto start_user_recovery(int control_fd, uint32_t dev_id) noexcept {
119 return detail::task_invoke(detail::control_start_user_recovery_t{},
120 control_fd, dev_id);
121}
122
130inline auto end_user_recovery(int control_fd, uint32_t dev_id,
131 int32_t daemon_pid) noexcept {
132 return detail::task_invoke(detail::control_end_user_recovery_t{},
133 control_fd, dev_id, daemon_pid);
134}
135
142inline auto get_features(int control_fd, uint64_t *features) noexcept {
143 return raw::get_features(control_fd, features) |
144 detail::ex::then([](int32_t) noexcept {});
145}
146
153inline auto del_dev_async(int control_fd, uint32_t dev_id) noexcept {
154 return detail::task_invoke(detail::control_del_dev_async_t{}, control_fd,
155 dev_id);
156}
157
165inline auto update_size(int control_fd, uint32_t dev_id,
166 uint64_t sectors) noexcept {
167 return detail::task_invoke(detail::control_update_size_t{}, control_fd,
168 dev_id, sectors);
169}
170
179inline auto quiesce_dev(int control_fd, uint32_t dev_id,
180 uint64_t timeout_ms) noexcept {
181 return detail::task_invoke(detail::control_quiesce_dev_t{}, control_fd,
182 dev_id, timeout_ms);
183}
184
191inline auto try_stop_dev(int control_fd, uint32_t dev_id) noexcept {
192 return detail::task_invoke(detail::control_try_stop_dev_t{}, control_fd,
193 dev_id);
194}
195
206inline auto register_shm_buf(int control_fd, uint32_t dev_id,
207 const ublk_shmem_buf_reg *reg) noexcept {
208 return detail::task_invoke(detail::control_register_shm_buf_t{}, control_fd,
209 dev_id, reg);
210}
211
220inline auto unregister_shm_buf(int control_fd, uint32_t dev_id,
221 uint64_t buf_index) noexcept {
222 return detail::task_invoke(detail::control_unregister_shm_buf_t{},
223 control_fd, dev_id, buf_index);
224}
225
226} // namespace ublk
Implementation of ublk control command interface.
auto get_features(Fd fd, uint64_t *features) noexcept
Get the feature flags supported by the ublk driver.
Definition raw.hpp:267
auto add_dev(Fd fd, ublksrv_ctrl_dev_info *info) noexcept
Add a new ublk device.
Definition raw.hpp:80
The main namespace of the ublk-cpp library.
Definition ublk.hpp:21
auto stop_dev(int control_fd, uint32_t dev_id) noexcept
Stop a ublk device.
Definition control.hpp:81
auto end_user_recovery(int control_fd, uint32_t dev_id, int32_t daemon_pid) noexcept
End user recovery for a ublk device.
Definition control.hpp:130
auto get_features(int control_fd, uint64_t *features) noexcept
Get the feature flags supported by the ublk driver.
Definition control.hpp:142
auto get_params(int control_fd, uint32_t dev_id, ublk_params *params) noexcept
Get the parameters of a ublk device.
Definition control.hpp:106
auto register_shm_buf(int control_fd, uint32_t dev_id, const ublk_shmem_buf_reg *reg) noexcept
Register a shared memory buffer for zero-copy I/O on a ublk device (UBLK_F_SHMEM_ZC).
Definition control.hpp:206
auto unregister_shm_buf(int control_fd, uint32_t dev_id, uint64_t buf_index) noexcept
Unregister a shared memory buffer from a ublk device.
Definition control.hpp:220
auto quiesce_dev(int control_fd, uint32_t dev_id, uint64_t timeout_ms) noexcept
Quiesce a ublk device (UBLK_F_QUIESCE).
Definition control.hpp:179
auto update_size(int control_fd, uint32_t dev_id, uint64_t sectors) noexcept
Update the size of a ublk device.
Definition control.hpp:165
auto set_params(int control_fd, uint32_t dev_id, const ublk_params *params) noexcept
Set the parameters of a ublk device.
Definition control.hpp:93
auto start_dev(int control_fd, uint32_t dev_id, int32_t daemon_pid) noexcept
Start a ublk device.
Definition control.hpp:69
auto del_dev_async(int control_fd, uint32_t dev_id) noexcept
Delete a ublk device asynchronously.
Definition control.hpp:153
auto get_dev_info(int control_fd, uint32_t dev_id, ublksrv_ctrl_dev_info *info) noexcept
Get the device information for a specific ublk device.
Definition control.hpp:34
auto try_stop_dev(int control_fd, uint32_t dev_id) noexcept
Try to stop a ublk device if it has no openers (UBLK_F_SAFE_STOP_DEV).
Definition control.hpp:191
auto start_user_recovery(int control_fd, uint32_t dev_id) noexcept
Start user recovery for a ublk device.
Definition control.hpp:118
auto add_dev(int control_fd, ublksrv_ctrl_dev_info *info) noexcept
Add a new ublk device.
Definition control.hpp:47
auto get_queue_affinity(int control_fd, uint32_t dev_id, uint16_t q_id, cpu_set_t *cpuset) noexcept
Get the queue affinity for a specific ublk queue.
Definition control.hpp:21
auto del_dev(int control_fd, uint32_t dev_id) noexcept
Delete a ublk device.
Definition control.hpp:58
Task environment utils.