MCPcopy Create free account
hub / github.com/NVIDIA/stdexec / __context_base

Method __context_base

include/exec/linux/io_uring_context.hpp:112–132  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

110 struct __context_base : STDEXEC::__immovable
111 {
112 explicit __context_base(unsigned __entries, unsigned __flags = 0)
113 : __params_{__context_base::__init_params(__flags)}
114 , __ring_fd_{__io_uring_setup(__entries, __params_)}
115 , __eventfd_{::eventfd(0, EFD_CLOEXEC)}
116 {
117 __throw_error_code_if(!__eventfd_, errno);
118 auto __sring_sz = __params_.sq_off.array + __params_.sq_entries * sizeof(unsigned);
119 auto __cring_sz = __params_.cq_off.cqes + __params_.cq_entries * sizeof(::io_uring_cqe);
120 auto __sqes_sz = __params_.sq_entries * sizeof(::io_uring_sqe);
121 if (__params_.features & IORING_FEAT_SINGLE_MMAP)
122 {
123 __sring_sz = STDEXEC::__umax({__sring_sz, __cring_sz});
124 __cring_sz = __sring_sz;
125 }
126 __submission_queue_region_ = __map_region(__ring_fd_, IORING_OFF_SQ_RING, __sring_sz);
127 __submission_queue_entries_ = __map_region(__ring_fd_, IORING_OFF_SQES, __sqes_sz);
128 if (!(__params_.features & IORING_FEAT_SINGLE_MMAP))
129 {
130 __completion_queue_region_ = __map_region(__ring_fd_, IORING_OFF_CQ_RING, __cring_sz);
131 }
132 }
133
134 static auto __init_params(unsigned __flags) noexcept -> ::io_uring_params
135 {

Callers

nothing calls this directly

Calls 4

__io_uring_setupFunction · 0.85
__throw_error_code_ifFunction · 0.85
__umaxFunction · 0.85
__map_regionFunction · 0.85

Tested by

no test coverage detected