Don't do this; it's bad enough that there's a race between I2C_SETFREQUENCY and I2C_TRANSFER, but the race between I2C_SETADDRESS and I2C_READ/WRITE means that you may end up talking to the wrong device.

This is why the I2C driver *only* exports ::transfer. You should use it.