/* gpu_v2.c - shared library version 2 (ABI-BREAKING change)
 * Build: gcc -shared -fPIC -Wl,-soname,libgpu.so.2 -o libgpu.so.2.0.0 gpu_v2.c
 * Then:  ln -sf libgpu.so.2.0.0 libgpu.so.2
 *        ln -sf libgpu.so.2     libgpu.so
 *
 * SAME function name, SAME struct name -- but different layout.
 * Any old binary compiled against v1 layout will read garbage.
 */

struct gpu_info {
    int temperature;  /* offset 0  <- was gpu_id in v1! */
    int gpu_id;       /* offset 4  <- was temperature in v1! */
    int power_usage;  /* offset 8  <- new field */
};

void gpu_info_get(struct gpu_info *info) {
    info->temperature = 99;
    info->gpu_id = 42;
    info->power_usage = 250;
}
