The header <linux/i2c.h> is provided by glibc and is needed from user-space because it contains the definitions of e.g. I2C_TENBIT, I2C_SLAVE, ... However, it contains many declarations and definitions that only make sense when included from within the kernel, and that make no sense in user-space (e.g. i2c_master_send(), struct i2c_driver). Additionally, user-space C source files that include <linux/i2c.h> do not compile.
Created attachment 1124 [details] An example that demonstrates that <linux/i2c.h> gives compilation problems
The linux headers are not part of glibc, they are added by your distribution and come from the Linux kernel source package. There's nothing we can do.