open(), O_SYNC, O_DIRECT, and serial port IO timing

Is it possible to use open(), O_SYNC and/or O_DIRECT such that
a serial port write (via USB and an FT232RL or similar chip) can be reliably

In other words, will code about like this work as intended:

int serial_port_fd = open("/dev/ttyUSB0", O_SYNC)
start_time = clock_gettime(CLOCK_MONOTONIC)
write(serial_port_fd, some_data, some_data_length)
end_time = clock_gettime(CLOCK_MONOTONIC)
if ( end_time - start_time > some_duration ) {
  error ("didn't get data to serial port fast enough");

Or can you still end up with the data buffered somewhere short of the actual
serial port on the other end of the FT232 without triggering an error?

Is there some other way to accomplish a timed write?