ФПСУ/IP-клиент for Linux и ядро > 5.5

amorting

New Member
Добрый день!

Использую ФПСУ/IP-клиент под Fedora 31. После обновления ядра с ветки 5.5 до 5.6, а потом и 5.7, не проходит сборка модуля ядра:

Код:
[root@hp14 Drivers]# make
make -C /lib/modules/5.7.9-100.fc31.x86_64/build M=/usr/lib/Amicon_ip-client/Drivers modules
make[1]: вход в каталог «/usr/src/kernels/5.7.9-100.fc31.x86_64»
  CC [M]  /usr/lib/Amicon_ip-client/Drivers/AmiNFFltKern.o
/usr/lib/Amicon_ip-client/Drivers/AmiNFFltKern.c: В функции «KERN_DrvGetCurFtime»:
/usr/lib/Amicon_ip-client/Drivers/AmiNFFltKern.c:353:24: ошибка: неизвестное имя типа «time_t»; имелось в виду «ktime_t»?
  353 |   struct rtc_time ctm; time_t ctime = get_seconds(); rtc_time_to_tm(ctime, &ctm);
      |                        ^~~~~~
      |                        ktime_t
/usr/lib/Amicon_ip-client/Drivers/AmiNFFltKern.c:353:54: ошибка: неявная декларация функции «rtc_time_to_tm»; имелось в виду «rtc_ktime_to_tm»? [-Werror=implicit-function-declaration]
  353 |   struct rtc_time ctm; time_t ctime = get_seconds(); rtc_time_to_tm(ctime, &ctm);
      |                                                      ^~~~~~~~~~~~~~
      |                                                      rtc_ktime_to_tm
/usr/lib/Amicon_ip-client/Drivers/AmiNFFltKern.c:356:21: ошибка: размер «mtm» в памяти неизвестен
  356 |     struct timespec mtm; getnstimeofday(&mtm);
      |                     ^~~
/usr/lib/Amicon_ip-client/Drivers/AmiNFFltKern.c:356:26: ошибка: неявная декларация функции «getnstimeofday» [-Werror=implicit-function-declaration]
  356 |     struct timespec mtm; getnstimeofday(&mtm);
      |                          ^~~~~~~~~~~~~~
/usr/lib/Amicon_ip-client/Drivers/AmiNFFltKern.c:356:21: предупреждение: неиспользуемая переменная «mtm» [-Wunused-variable]
  356 |     struct timespec mtm; getnstimeofday(&mtm);
      |                     ^~~
cc1: некоторые предупреждения считаются ошибками
make[2]: *** [scripts/Makefile.build:267: /usr/lib/Amicon_ip-client/Drivers/AmiNFFltKern.o] Ошибка 1
make[1]: *** [Makefile:1732: /usr/lib/Amicon_ip-client/Drivers] Ошибка 2
make[1]: выход из каталога «/usr/src/kernels/5.7.9-100.fc31.x86_64»
make: *** [Makefile:41: all] Ошибка 2
Поиск в Интернет дал решение:

Код:
[root@hp14 Drivers]# diff -ui AmiNFFltKern.c.orig AmiNFFltKern.c.patched
--- AmiNFFltKern.c.orig    2020-07-17 00:03:19.302795909 +1000
+++ AmiNFFltKern.c.patched    2020-07-23 12:51:48.826571218 +1000
@@ -350,10 +350,10 @@
 void __calling_convention KERN_Sleep(int ms) { msleep(ms); }
 #include <linux/rtc.h>
 void __calling_convention KERN_DrvGetCurFtime(int *sec, int *min, int *hour, int *mday, int *mon, int *year, unsigned long long *microsec) {
-  struct rtc_time ctm; time_t ctime = get_seconds(); rtc_time_to_tm(ctime, &ctm);
+  struct rtc_time ctm; ktime_t ctime = get_seconds(); rtc_time64_to_tm(ctime, &ctm);
   *sec = ctm.tm_sec; *min = ctm.tm_min; *hour = ctm.tm_hour; *mday = ctm.tm_mday; *mon = ctm.tm_mon; *year = ctm.tm_year + 1900;
   if(microsec) {
-    struct timespec mtm; getnstimeofday(&mtm);
+    struct timespec64 mtm; ktime_get_ts64(&mtm);
     *microsec = ((unsigned long long)mtm.tv_sec) * 1000000 + (((unsigned long long)mtm.tv_nsec) >> 10);
   }
 }
После чего модуль собирается и работает.

Планируется ли внести изменение для ядер > 5.5 в официальную сборку ?
 

Dmitriy

Администратор
Команда форума
Добрый день,
поддержка ядер 5.5* реализована в бета-версии 6.0.28.
 
Сверху