---
title: IOStream
framework: kernel
role: symbol
role_heading: Class
path: kernel/iostream
---

# IOStream

A class representing a stream of data buffers passed from kernel to user space and back again.

## Declaration

```occ
class IOStream : IOService
```

## Overview

Overview The IOStream class defines a mechanism for moving buffers of data from kernel space to user space or vice-versa. The policy for which direction the data flows and the nature of the data is left up the the implementer of the driver which uses IOStream. Although it is expected that the client of an IOStream will be in user space, this is not required. References to "output" mean "from the IOStream to the user client", and "input" means "from the user client to the IOStream."

## Topics

### Stream control

- [getStreamMode](kernel/iostream/1809626-getstreammode.md)
- [setStreamMode](kernel/iostream/1809631-setstreammode.md)
- [startStream](kernel/iostream/1809638-startstream.md)
- [stopStream](kernel/iostream/1809642-stopstream.md)
- [suspendStream](kernel/iostream/1809648-suspendstream.md)

### Queueing and dequeueing buffers

- [dequeueInputEntry](kernel/iostream/1809653-dequeueinputentry.md)
- [enqueueOutputBuffer](kernel/iostream/1809665-enqueueoutputbuffer.md)
- [enqueueOutputEntry](kernel/iostream/1809670-enqueueoutputentry.md)

### Opening and closing streams

- [handleClose](kernel/iostream/1809680-handleclose.md)
- [handleOpen](kernel/iostream/1809688-handleopen.md)

### Managing user clients

- [newUserClient](kernel/iostream/1809695-newuserclient.md)

### Managing shared queues

- [createQueues](kernel/iostream/1809702-createqueues.md)
- [destroyQueues](kernel/iostream/1809709-destroyqueues.md)
- [getInputQueue](kernel/iostream/1809718-getinputqueue.md)
- [getInputQueueMemoryDescriptor](kernel/iostream/1809727-getinputqueuememorydescriptor.md)
- [getOutputQueue](kernel/iostream/1809738-getoutputqueue.md)
- [getOutputQueueMemoryDescriptor](kernel/iostream/1809744-getoutputqueuememorydescriptor.md)

### Managing notifications

- [inputCallback](kernel/iostream/1809754-inputcallback.md)
- [inputSyncCallback](kernel/iostream/1809761-inputsynccallback.md)

### Managing notification ports

- [getInputPort](kernel/iostream/1809770-getinputport.md)
- [getOutputPort](kernel/iostream/1809774-getoutputport.md)
- [sendOutputNotification](kernel/iostream/1809783-sendoutputnotification.md)
- [setInputPort](kernel/iostream/1809793-setinputport.md)
- [setOutputPort](kernel/iostream/1809801-setoutputport.md)

### Managing buffers in an IOStream

- [addBuffer](kernel/iostream/1809807-addbuffer.md)
- [addBuffers](kernel/iostream/1809814-addbuffers.md)
- [getBufferCount](kernel/iostream/1809821-getbuffercount.md)
- [getBuffers](kernel/iostream/1809828-getbuffers.md)
- [getBufferWithID](kernel/iostream/1809834-getbufferwithid.md)
- [removeAllBuffers()](kernel/iostream/1809839-removeallbuffers.md)
- [removeAllBuffers()](kernel/iostream/1809846-removeallbuffers.md)
- [removeBuffer(IOStreamBuffer *)](kernel/iostream/1809852-removebuffer.md)
- [removeBuffer(IOStreamBufferID)](kernel/iostream/1809860-removebuffer.md)

### Creating IOStream objects

- [free](kernel/iostream/1809867-free.md)
- [initWithBuffers](kernel/iostream/1809875-initwithbuffers.md)
- [withBuffers](kernel/iostream/1809882-withbuffers.md)

### Instance Methods

- [addBuffer](kernel/iostream/1589858-addbuffer.md)
- [addBuffers](kernel/iostream/1589843-addbuffers.md)
- [createQueues](kernel/iostream/1589877-createqueues.md)
- [dequeueInputEntry](kernel/iostream/1589881-dequeueinputentry.md)
- [destroyQueues](kernel/iostream/1589871-destroyqueues.md)
- [enqueueOutputBuffer](kernel/iostream/1589872-enqueueoutputbuffer.md)
- [enqueueOutputEntry](kernel/iostream/1589856-enqueueoutputentry.md)
- [free](kernel/iostream/1589852-free.md)
- [getBufferCount](kernel/iostream/1589838-getbuffercount.md)
- [getBufferWithID](kernel/iostream/1589840-getbufferwithid.md)
- [getBuffers](kernel/iostream/1589876-getbuffers.md)
- [getInputPort](kernel/iostream/1589874-getinputport.md)
- [getInputQueue](kernel/iostream/1589835-getinputqueue.md)
- [getInputQueueMemoryDescriptor](kernel/iostream/1589879-getinputqueuememorydescriptor.md)
- [getMetaClass](kernel/iostream/1589853-getmetaclass.md)
- [getOutputPort](kernel/iostream/1589854-getoutputport.md)
- [getOutputQueue](kernel/iostream/1589847-getoutputqueue.md)
- [getOutputQueueMemoryDescriptor](kernel/iostream/1589862-getoutputqueuememorydescriptor.md)
- [getStreamMode](kernel/iostream/1589841-getstreammode.md)
- [handleClose](kernel/iostream/1589873-handleclose.md)
- [handleOpen](kernel/iostream/1589839-handleopen.md)
- [init](kernel/iostream/1589846-init.md)
- [initWithBuffers](kernel/iostream/1589845-initwithbuffers.md)
- [inputCallback](kernel/iostream/1589831-inputcallback.md)
- [inputSyncCallback](kernel/iostream/1589880-inputsynccallback.md)
- [newUserClient](kernel/iostream/1589851-newuserclient.md)
- [removeAllBuffers](kernel/iostream/1589878-removeallbuffers.md)
- [removeBuffer](kernel/iostream/1589833-removebuffer.md)
- [removeBuffer](kernel/iostream/3516782-removebuffer.md)
- [sendOutputNotification](kernel/iostream/1589861-sendoutputnotification.md)
- [setInputPort](kernel/iostream/1589836-setinputport.md)
- [setOutputPort](kernel/iostream/1589866-setoutputport.md)
- [setStreamMode](kernel/iostream/1589870-setstreammode.md)
- [startStream](kernel/iostream/1589837-startstream.md)
- [stopStream](kernel/iostream/1589863-stopstream.md)
- [suspendStream](kernel/iostream/1589867-suspendstream.md)

### Type Methods

- [withBuffers](kernel/iostream/1589868-withbuffers.md)

## Relationships

### Inherits From

- [IOService](kernel/ioservice.md)

## See Also

### User-Space Interactions

- [IOSharedDataQueue](kernel/ioshareddataqueue.md)
- [IOSharedInterruptController](kernel/iosharedinterruptcontroller.md)
- [IOUserClient](kernel/iouserclient.md)
- [IOStreamUserClient](kernel/iostreamuserclient.md)
- [IOStreamBuffer](kernel/iostreambuffer.md)
- [OSAction_IOUserClient_KernelCompletion](kernel/osaction_iouserclient_kernelcompletion.md)
- [OSAction_IOUserClient_KernelCompletionInterface](kernel/osaction_iouserclient_kernelcompletioninterface.md)
