Just being thorough, haven't seriously thought them through yet.  Each takes a file descriptor, the last two a low carnality flag as well:

tcdrain - wait for transmission of output

tcflush - flush non-transmitted output data, non-read input data, or both

And this one reminds us of the still with us fun of stop and start characters, classically ^S/^Q brought to us by DEC according to Wikipedia.  I assume we should kill them dead in our with- and without- procedures:

tcflow - suspend or restart the transmission or reception of data

- Harold