Add support for evklib to use struct proc_ops 64/27164/1 12.93.0 marlin/12.93.0 marlin_12.93.0
authorYoshiki Ito <ito.yoshiki001@jp.panasonic.com>
Thu, 10 Feb 2022 00:14:58 +0000 (09:14 +0900)
committerYoshiki Ito <ito.yoshiki001@jp.panasonic.com>
Thu, 10 Feb 2022 05:21:01 +0000 (14:21 +0900)
Kernel 5.6 and later replaced struct file_operations with struct proc_ops.
Enabling agl-refhw-h3 feature or virtio-aarch64 machine configuration
will cause build errors. This patch enables kernel-module-evklib to use
struct proc_ops at 5.6 and later to avoid the errors.

Bug-AGL: SPEC-4254

Signed-off-by: Yoshiki Ito <ito.yoshiki001@jp.panasonic.com>
Change-Id: Ie78913fc16d245403b7e283b8bdea94c7ea7d666

module/kernel-module-evklib/evk_lib.c

index e6dd238..504b2e1 100755 (executable)
@@ -53,6 +53,10 @@ typedef __s32 INT32;
 typedef __s64 INT64;
 #endif /* !STANDARD_INT_DEFINITIONS */
 
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(5,6,0)
+#define HAVE_PROC_OPS
+#endif
+
 #define ENABLE_PROC_FS 1
 
 #define EVK_NAME "evk"
@@ -1839,6 +1843,14 @@ evk_procFS_queue_open(struct inode *inode, struct file *file)
   return single_open(file, evk_procFS_queue_show, NULL);
 }
 
+#ifdef HAVE_PROC_OPS
+static struct proc_ops evk_proc_flag_fops = {
+  .proc_open    = evk_procFS_flag_open,
+  .proc_read    = seq_read,
+  .proc_lseek  = seq_lseek,
+  .proc_release = single_release,
+};
+#else
 static struct file_operations evk_proc_flag_fops = {
   .owner   = THIS_MODULE,
   .open    = evk_procFS_flag_open,
@@ -1846,7 +1858,16 @@ static struct file_operations evk_proc_flag_fops = {
   .llseek  = seq_lseek,
   .release = single_release,
 };
-
+#endif /* HAVE_PROC_OPS */
+
+#ifdef HAVE_PROC_OPS
+static struct proc_ops evk_proc_flag64_fops = {
+  .proc_open    = evk_procFS_flag64_open,
+  .proc_read    = seq_read,
+  .proc_lseek  = seq_lseek,
+  .proc_release = single_release,
+};
+#else
 static struct file_operations evk_proc_flag64_fops = {
   .owner   = THIS_MODULE,
   .open    = evk_procFS_flag64_open,
@@ -1854,7 +1875,16 @@ static struct file_operations evk_proc_flag64_fops = {
   .llseek  = seq_lseek,
   .release = single_release,
 };
-
+#endif /* HAVE_PROC_OPS */
+
+#ifdef HAVE_PROC_OPS
+static struct proc_ops evk_proc_queue_fops = {
+  .proc_open    = evk_procFS_queue_open,
+  .proc_read    = seq_read,
+  .proc_lseek  = seq_lseek,
+  .proc_release = single_release,
+};
+#else
 static struct file_operations evk_proc_queue_fops = {
   .owner   = THIS_MODULE,
   .open    = evk_procFS_queue_open,
@@ -1862,6 +1892,7 @@ static struct file_operations evk_proc_queue_fops = {
   .llseek  = seq_lseek,
   .release = single_release,
 };
+#endif /* HAVE_PROC_OPS */
 #endif /*ENABLE_PROC_FS*/
 
 __init int