All the example code I've seen reads the acceleration and magnetic field values by polling the appropriate registers.
x.l = i2c_read(OUT_X_L_A);
x.h = i2c_read(OUT_X_H_A);
y.l = i2c_read(OUT_Y_L_A);
y.h = i2c_read(OUT_Y_H_A);
z.l = i2c_read(OUT_Z_L_A);
z.h = i2c_read(OUT_Z_H_A);
When does the sensor update the register values? How do I know when to read the registers?
I am concerned that the chip could update the register value between polling the OUT_X_L_A and OUT_X_L_H, resulting in a corrupt reading.