24 #ifndef SEASTAR_MODULE
25 #include <seastar/core/sstring.hh>
26 #include <seastar/core/future.hh>
27 #include <seastar/util/modules.hh>
37 SEASTAR_MODULE_EXPORT_BEGIN
39 using io_priority_class_id = unsigned;
41 #if SEASTAR_API_LEVEL < 7
45 class io_priority_class {
46 io_priority_class_id _id;
48 io_priority_class() =
delete;
49 explicit io_priority_class(io_priority_class_id
id) noexcept
53 bool rename_registered(sstring name);
56 io_priority_class_id id() const noexcept {
60 [[deprecated(
"Use scheduling_groups and API level >= 7")]]
61 static io_priority_class register_one(sstring name, uint32_t shares);
68 future<> update_shares(uint32_t shares)
const;
77 future<> update_bandwidth(uint64_t bandwidth)
const;
89 future<> rename(sstring new_name) noexcept;
91 unsigned get_shares()
const;
92 sstring get_name()
const;
98 bool registered() const noexcept {
return shares != 0; }
101 static constexpr
unsigned _max_classes = 2048;
102 static std::mutex _register_lock;
103 static std::array<class_info, _max_classes> _infos;
105 friend std::tuple<unsigned, sstring> get_class_info(io_priority_class_id pc);
108 const io_priority_class& default_priority_class();
112 SEASTAR_MODULE_EXPORT_END
115 #if SEASTAR_API_LEVEL >= 7
116 struct maybe_priority_class_ref {
119 struct maybe_priority_class_ref {
120 const io_priority_class& pc;
121 explicit maybe_priority_class_ref(
const io_priority_class& p) noexcept : pc(p) {}
122 maybe_priority_class_ref() noexcept : pc(default_priority_class()) {}
Seastar API namespace.
Definition: abort_on_ebadf.hh:26