---
title: IOBasicOutputQueue
framework: kernel
role: symbol
role_heading: Class
path: kernel/iobasicoutputqueue
---

# IOBasicOutputQueue

A concrete implementation of an IOOutputQueue.

## Declaration

```occ
class IOBasicOutputQueue : IOOutputQueue
```

## Overview

Overview This object uses a mutex to protect the packet queue from multiple producers. A single producer is promoted to become a consumer when the queue is not active. Otherwise, the producer will simply queue the packet and return without blocking. The flow of packets from the queue to its target can be controlled by calling methods such as start(), stop(), or service(). The target is expected to call those methods from a single threaded context, i.e. the work loop context in a network driver. In addition, the target must also return a status for every packet delivered by the consumer thread. This return value is the only mechanism that the target can use to manage the queue when it is running on the consumer thread.

## Topics

### Miscellaneous

- [enqueue](kernel/iobasicoutputqueue/1811623-enqueue.md)
- [flush](kernel/iobasicoutputqueue/1811630-flush.md)
- [free](kernel/iobasicoutputqueue/1811636-free.md)
- [getCapacity](kernel/iobasicoutputqueue/1811642-getcapacity.md)
- [getDropCount](kernel/iobasicoutputqueue/1811646-getdropcount.md)
- [getOutputCount](kernel/iobasicoutputqueue/1811651-getoutputcount.md)
- [getRetryCount](kernel/iobasicoutputqueue/1811660-getretrycount.md)
- [getSize](kernel/iobasicoutputqueue/1811664-getsize.md)
- [getStallCount](kernel/iobasicoutputqueue/1811671-getstallcount.md)
- [getState](kernel/iobasicoutputqueue/1811677-getstate.md)
- [getStatisticsData](kernel/iobasicoutputqueue/1811683-getstatisticsdata.md)
- [handleNetworkDataAccess](kernel/iobasicoutputqueue/1811690-handlenetworkdataaccess.md)
- [init](kernel/iobasicoutputqueue/1811696-init.md)
- [output](kernel/iobasicoutputqueue/1811702-output.md)
- [service](kernel/iobasicoutputqueue/1811708-service.md)
- [serviceThread](kernel/iobasicoutputqueue/1811713-servicethread.md)
- [setCapacity](kernel/iobasicoutputqueue/1811721-setcapacity.md)
- [start](kernel/iobasicoutputqueue/1811726-start.md)
- [stop](kernel/iobasicoutputqueue/1811734-stop.md)
- [withTarget(IONetworkController *, UInt32)](kernel/iobasicoutputqueue/1811748-withtarget.md)
- [withTarget(IONetworkController *, UInt32, UInt32)](kernel/iobasicoutputqueue/1811755-withtarget.md)
- [withTarget(OSObject *, IOOutputAction, UInt32)](kernel/iobasicoutputqueue/1811763-withtarget.md)
- [withTarget(OSObject *, IOOutputAction, UInt32, UInt32)](kernel/iobasicoutputqueue/1811770-withtarget.md)

### Constants

- [GetStateBits](kernel/iobasicoutputqueue/getstatebits.md)
- [ServiceAsync](kernel/iobasicoutputqueue/serviceasync.md)

### Instance Methods

- [dequeue](kernel/iobasicoutputqueue/1567089-dequeue.md)
- [enqueue](kernel/iobasicoutputqueue/1567090-enqueue.md)
- [flush](kernel/iobasicoutputqueue/1567093-flush.md)
- [free](kernel/iobasicoutputqueue/1567099-free.md)
- [getCapacity](kernel/iobasicoutputqueue/1567102-getcapacity.md)
- [getDropCount](kernel/iobasicoutputqueue/1567083-getdropcount.md)
- [getMetaClass](kernel/iobasicoutputqueue/1567085-getmetaclass.md)
- [getOutputCount](kernel/iobasicoutputqueue/1567084-getoutputcount.md)
- [getRetryCount](kernel/iobasicoutputqueue/1567098-getretrycount.md)
- [getSize](kernel/iobasicoutputqueue/1567096-getsize.md)
- [getStallCount](kernel/iobasicoutputqueue/1567081-getstallcount.md)
- [getState](kernel/iobasicoutputqueue/1567095-getstate.md)
- [getStatisticsData](kernel/iobasicoutputqueue/1567086-getstatisticsdata.md)
- [handleNetworkDataAccess](kernel/iobasicoutputqueue/1567097-handlenetworkdataaccess.md)
- [output](kernel/iobasicoutputqueue/1567088-output.md)
- [service](kernel/iobasicoutputqueue/1567082-service.md)
- [serviceThread](kernel/iobasicoutputqueue/1567087-servicethread.md)
- [setCapacity](kernel/iobasicoutputqueue/1567103-setcapacity.md)
- [start](kernel/iobasicoutputqueue/1567094-start.md)
- [stop](kernel/iobasicoutputqueue/1567100-stop.md)

### Type Methods

- [dispatchNetworkDataNotification](kernel/iobasicoutputqueue/1567091-dispatchnetworkdatanotification.md)
- [withTarget](kernel/iobasicoutputqueue/1567101-withtarget.md)
- [withTarget](kernel/iobasicoutputqueue/3516604-withtarget.md)

## Relationships

### Inherits From

- [IOOutputQueue](kernel/iooutputqueue.md)

## See Also

### Output Queues

- [IOGatedOutputQueue](kernel/iogatedoutputqueue.md)
- [IOOutputQueue](kernel/iooutputqueue.md)
