Searched defs:fifo_ (Results 1 - 5 of 5) sorted by relevance
/fuchsia/zircon/system/dev/block/block/ |
H A D | txn-group.h | 56 zx_handle_t fifo_; member in class:TransactionGroup
|
H A D | server.h | 196 fzl::fifo<block_fifo_response_t, block_fifo_request_t> fifo_; member in class:BlockServer
|
H A D | server.cpp | 141 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 D | handler_impl.h | 57 zx::fifo fifo_; member in class:trace::internal::final
|
/fuchsia/zircon/system/ulib/fzl/include/lib/fzl/ |
H A D | fifo.h | 70 zx::fifo fifo_; member in class:fzl::fifo [all...] |
Completed in 79 milliseconds