Searched defs:fifo_ (Results 1 - 5 of 5) sorted by relevance

/fuchsia/zircon/system/dev/block/block/
H A Dtxn-group.h56 zx_handle_t fifo_; member in class:TransactionGroup
H A Dserver.h196 fzl::fifo<block_fifo_response_t, block_fifo_request_t> fifo_; member in class:BlockServer
H A Dserver.cpp141 ZX_DEBUG_ASSERT(group < MAX_TXN_GROUP_COUNT); groups_[group].Complete(status); } } zx_status_t BlockServer::Read(block_fifo_request_t* requests, size_t* count) { auto cleanup = fbl::MakeAutoCall([this]() { TerminateQueue(); ZX_ASSERT(pending_count_.load() == 0); ZX_ASSERT(in_queue_.is_empty()); fifo_.signal(0, kSignalFifoTerminated); }); zx_status_t status; while (true) { status = fifo_.read(requests, BLOCK_FIFO_MAX_DEPTH, count); zx_signals_t signals; zx_signals_t seen; switch (status) { case ZX_ERR_SHOULD_WAIT: signals = ZX_FIFO_READABLE | ZX_FIFO_PEER_CLOSED | kSignalFifoTerminate | kSignalFifoOpsComplete; if ((status = fifo_.wait_one(signals, zx::time::infinite(), &seen)) != ZX_OK) { return status; } if (seen & kSignalFifoOpsComplete) { BarrierComplete(); continue; } if ((seen & ZX_FIFO_PEER_CLOSED) || (seen & kSignalFifoTerminate)) { return ZX_ERR_PEER_CLOSED; } break; case ZX_OK: cleanup.cancel(); return ZX_OK; default: return status; } } } zx_status_t BlockServer::FindVmoIDLocked(vmoid_t* out) { for (vmoid_t i = last_id_; i < fbl::numeric_limits<vmoid_t>::max(); i++) { if (!tree_.find(i).IsValid()) { *out = i; last_id_ = static_cast<vmoid_t>(i + 1); return ZX_OK; } } for (vmoid_t i = VMOID_INVALID + 1; i < last_id_; i++) { if (!tree_.find(i).IsValid()) { *out = i; last_id_ = static_cast<vmoid_t>(i + 1); return ZX_OK; } } return ZX_ERR_NO_RESOURCES; } zx_status_t BlockServer::AttachVmo(zx::vmo vmo, vmoid_t* out) { zx_status_t status; vmoid_t id; fbl::AutoLock server_lock(&server_lock_); if ((status = FindVmoIDLocked(&id)) != ZX_OK) { return status; } fbl::AllocChecker ac; fbl::RefPtr<IoBuffer> ibuf = fbl::AdoptRef(new (&ac) IoBuffer(fbl::move(vmo), id)); if (!ac.check()) { return ZX_ERR_NO_MEMORY; } tree_.insert(fbl::move(ibuf)); *out = id; return ZX_OK; } void BlockServer::TxnEnd() { size_t old_count = pending_count_.fetch_sub(1); ZX_ASSERT(old_count > 0); if ((old_count == 1) && barrier_in_progress_.load()) { fifo_.signal(0, kSignalFifoOpsComplete); } } void BlockServer::InQueueDrainer() { while (true) { if (in_queue_.is_empty()) { return; } auto msg = in_queue_.begin(); if (deferred_barrier_before_) { msg->op.command |= BLOCK_FL_BARRIER_BEFORE; deferred_barrier_before_ = false; } if (msg->op.command & BLOCK_FL_BARRIER_BEFORE) argument
[all...]
/fuchsia/zircon/system/ulib/trace-provider/
H A Dhandler_impl.h57 zx::fifo fifo_; member in class:trace::internal::final
/fuchsia/zircon/system/ulib/fzl/include/lib/fzl/
H A Dfifo.h70 zx::fifo fifo_; member in class:fzl::fifo
[all...]

Completed in 79 milliseconds