1 // -*- mode:C++; tab-width:8; c-basic-offset:2; indent-tabs-mode:t -*-
2 // vim: ts=8 sw=2 smarttab
6 #include <seastar/core/reactor.hh>
7 #include <sys/eventfd.h>
9 namespace ceph::thread
{
11 /// a synchronization primitive can be used to block a seastar thread, until
12 /// another thread notifies it.
14 seastar::file_desc file_desc
;
16 seastar::pollable_fd_state fd_state
;
20 : file_desc
{seastar::file_desc::eventfd(0, 0)},
22 fd_state
{std::move(file_desc
)}
24 seastar::future
<> wait() {
25 return seastar::engine().read_some(fd_state
, &event
, sizeof(event
))
27 return seastar::now();
32 ::eventfd_write(fd
, result
);
36 } // namespace ceph::thread