Closed travisdowns closed 4 years ago
It does compile now with kernel 4.4 in a virtual machine. However, I currently do not have access to an actual machine with that kernel to test if it works properly.
It works for me now, on the same machine where it failed before (with a few probably innocuous warnings):
travis@skylake-x:~/dev/nanoBench$ make
make -C user/
make[1]: Entering directory '/home/travis/dev/nanoBench/user'
make[1]: Nothing to be done for 'all'.
make[1]: Leaving directory '/home/travis/dev/nanoBench/user'
cd kernel; make
make[1]: Entering directory '/home/travis/dev/nanoBench/kernel'
make -C /lib/modules/4.4.0-170-generic/build M=/home/travis/dev/nanoBench/kernel modules
make[2]: Entering directory '/usr/src/linux-headers-4.4.0-170-generic'
CC [M] /home/travis/dev/nanoBench/kernel/nb_km.o
/home/travis/dev/nanoBench/kernel/nb_km.c: In function ‘read_file_into_buffer’:
/home/travis/dev/nanoBench/kernel/nb_km.c:88:23: warning: passing argument 2 of ‘kernel_read’ makes integer from pointer without a cast [-Wint-conversion]
kernel_read(filp, *buf, file_size, &pos);
^~~~
In file included from include/linux/proc_fs.h:8,
from /home/travis/dev/nanoBench/kernel/nb_km.c:16:
include/linux/fs.h:2607:39: note: expected ‘loff_t’ {aka ‘long long int’} but argument is of type ‘char *’
extern int kernel_read(struct file *, loff_t, char *, unsigned long);
^~~~~~
/home/travis/dev/nanoBench/kernel/nb_km.c:88:29: warning: passing argument 3 of ‘kernel_read’ makes pointer from integer without a cast [-Wint-conversion]
kernel_read(filp, *buf, file_size, &pos);
^~~~~~~~~
In file included from include/linux/proc_fs.h:8,
from /home/travis/dev/nanoBench/kernel/nb_km.c:16:
include/linux/fs.h:2607:47: note: expected ‘char *’ but argument is of type ‘size_t’ {aka ‘long unsigned int’}
extern int kernel_read(struct file *, loff_t, char *, unsigned long);
^~~~~~
/home/travis/dev/nanoBench/kernel/nb_km.c:88:40: warning: passing argument 4 of ‘kernel_read’ makes integer from pointer without a cast [-Wint-conversion]
kernel_read(filp, *buf, file_size, &pos);
^~~~
In file included from include/linux/proc_fs.h:8,
from /home/travis/dev/nanoBench/kernel/nb_km.c:16:
include/linux/fs.h:2607:55: note: expected ‘long unsigned int’ but argument is of type ‘loff_t *’ {aka ‘long long int *’}
extern int kernel_read(struct file *, loff_t, char *, unsigned long);
^~~~~~~~~~~~~
CC [M] /home/travis/dev/nanoBench/kernel/../common/nanoBench.o
LD [M] /home/travis/dev/nanoBench/kernel/nb.o
Building modules, stage 2.
MODPOST 1 modules
CC /home/travis/dev/nanoBench/kernel/nb.mod.o
LD [M] /home/travis/dev/nanoBench/kernel/nb.ko
make[2]: Leaving directory '/usr/src/linux-headers-4.4.0-170-generic'
make[1]: Leaving directory '/home/travis/dev/nanoBench/kernel'
travis@skylake-x:~/dev/nanoBench$ sudo insmod kernel/nb.ko
[sudo] password for travis:
travis@skylake-x:~/dev/nanoBench$
Thanks for the quick turnaround!
The kernel module fails to build on Ubuntu 16.04 with kernel 4.4:
I think the set_memory functions were instead in
asm/cacheflush.h
on earlier kernels (I don't know exactly when the cutover happend).Maybe there is a way to use the correct header, e.g., depending which header is available?