Я не могу понять портирование патчей с ядра Linux на дистрибутив Suse. Похоже, что SuSE не поддерживает версию ядра согласно вышестоящему или имеет свой собственный способ поддержки версии ядра.
Например, изменение в ядре API было сделано в ядре как: File include / linux / fs.h в версии ядра v4.13.16, это:
extern ssize_t kernel_write(struct file *, const char *, size_t, loff_t);
В версии ядра v4.14 это:
extern ssize_t kernel_write(struct file *, const void *, size_t, loff_t *);
Разработчики могут использовать KERNEL_VERSION
макрос для различения guish какой использовать.
#if KERNEL_VERSION(4, 14, 0) < LINUX_VERSION_CODE
ret = kernel_write(file_ptr, &value, 1, &position);
#else
ret = kernel_write(file_ptr, &value, 1, position);
#endif
Однако это не работает в ядре SuSE. Я вижу, что в ядре SuSE версии 4.12.14-195 патч от v4.14 включен.
Так как же разработчики драйверов справляются с таким несоответствием? Есть ли в SuSE специальный макрос linux?