STREAMS Programming Guide

Flush Handling

All modules and drivers are expected to handle the flushing of messages. The user may cause data to be flushed of queued messages from a Stream by the submission of an I_FLUSH ioctl(2). Data may be flushed from the read side, write side, or both sides of a Stream.

ioctl (fd, I_FLUSH, arg);

Table 4-4 describes the arguments that may be passed to M_FLUSH.

Table 4-4 M_FLUSH Arguments and bi_flag values




Flushes read side of Stream 


Flushes write queue 


Flushes both read and write queues 

Flushing Priority Bands

In addition to being able to flush all the data from a queue, a specific band may be flushed using the I_FLUSHBAND ioctl(2).

ioctl (fd, I_FLUSHBAND, bandp); 

The ioctl(2) is passed pointer to a bandinfo structure. The bi_pri field indicates the band priority to be flushed (values from 0 to 255). The bi_flag field indicates the type of flush to do. The legal values for bi_flag are defined in Table 4-4. bandinfo has the following format:

struct bandinfo {
		unsigned char    bi_pri;
		int              bi_flag;

See "Flushing Priority Band", which describes M_FLUSHBAND processing, for details on how modules and drivers should handle flush band requests.