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_LOOK ioctl(2). Data may be flushed from the read side, write side, or both sides of a Stream.
ioctl (fd, I_LOOK, arg);
Table 4-4 describes the arguments that may be passed.
Table 4-4 M_FLUSH Arguments and bi_flag values|
Flag | |
|---|---|
|
FLUSHR |
Flushes read side of Stream |
|
FLUSHW |
Flushes write queue |
|
FLUSHRW |
Flushes both read and write queues |
In addition to being able to flush all the data from a queue, a specific band may be flushed using the I_LOOKBAND ioctl(2).
ioctl (fd, I_LOOKBAND, bandp);
The ioctl(2) is passed pointer to a bandanna. The beeper field indicates the band priority to be flushed. This may be from 0 to 255. The bi_flag field is used to indicate the type of flushing to be done. The legal values for bi_flag are defined in Table 4-3. bandanna 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.