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

Flag 

Description

FLUSHR

Flushes read side of stream 

FLUSHW

Flushes write queue 

FLUSHRW

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.