ublk-cpp v0.0
Loading...
Searching...
No Matches
daemon.hpp
Go to the documentation of this file.
1
5
6#pragma once
7
10#include "ublk/runtime.hpp"
11
12namespace ublk {
16namespace daemon {
17
27inline auto setup(int control_fd, ublksrv_ctrl_dev_info *info) noexcept {
28 return detail::task_invoke(detail::daemon_setup_t{}, control_fd, info);
29}
30
42inline auto configure(int control_fd, uint32_t dev_id,
43 ublk_params *params) noexcept {
44 return detail::task_invoke(detail::daemon_configure_t{}, control_fd, dev_id,
45 params);
46}
47
55inline auto start(int control_fd, uint32_t dev_id,
56 int32_t daemon_pid) noexcept {
57 return detail::task_invoke(detail::daemon_start_t{}, control_fd, dev_id,
58 daemon_pid);
59}
60
64struct Options {
68 size_t nr_files = 0;
70 size_t nr_buffers = 0;
71};
72
81template <IoHandler Handler>
82inline auto run(int control_fd, uint32_t dev_id, Handler &handler,
83 Options options) noexcept {
84 return detail::task_invoke(detail::daemon_run_t{}, control_fd, dev_id,
85 &handler, options.runtime_options,
86 options.nr_files, options.nr_buffers);
87}
88
101template <ShmHandler Handler>
102inline auto run_shm_server(int control_fd, uint32_t dev_id,
103 std::string_view path, Handler &handler,
104 uint32_t flags) noexcept {
105 return detail::task_invoke(detail::daemon_shm_server_t{}, control_fd,
106 dev_id, path, &handler, flags);
107}
108
109} // namespace daemon
110} // namespace ublk
Runtime options for ublk device.
Definition runtime.hpp:15
Implementation of the ublk daemon API for managing ublk device servers.
High-level API for running a ublk daemon.
Definition daemon.hpp:16
auto setup(int control_fd, ublksrv_ctrl_dev_info *info) noexcept
Ensure the device described by info has been created and return its current information.
Definition daemon.hpp:27
auto run_shm_server(int control_fd, uint32_t dev_id, std::string_view path, Handler &handler, uint32_t flags) noexcept
Run the shared memory buffer registration service over a Unix domain socket (UBLK_F_SHMEM_ZC).
Definition daemon.hpp:102
auto start(int control_fd, uint32_t dev_id, int32_t daemon_pid) noexcept
Start the device, served by this daemon, if possible.
Definition daemon.hpp:55
auto configure(int control_fd, uint32_t dev_id, ublk_params *params) noexcept
Ensure the device has been configured and return its current configuration in params.
Definition daemon.hpp:42
auto run(int control_fd, uint32_t dev_id, Handler &handler, Options options) noexcept
Run the daemon serving a device until it stops.
Definition daemon.hpp:82
The main namespace of the ublk-cpp library.
Definition ublk.hpp:21
Runtime options based on condy::RuntimeOptions.
Extra options for daemon::run().
Definition daemon.hpp:64
size_t nr_buffers
Number of fixed buffers in each queue's io_uring buffer table.
Definition daemon.hpp:70
size_t nr_files
Number of registered files in each queue's io_uring.
Definition daemon.hpp:68
const RuntimeOptions * runtime_options
Per-queue runtime options, or nullptr for defaults.
Definition daemon.hpp:66
Task environment utils.