I'm learning to make kernel modules and am currently working on a block device driver.
I had installed kernel version 2.2.16-22 (RH - 7.0) and then changed it to 2.2.16 (downloaded from
PROBLEM : When I try to "insmod blkdev.o" it gives a message
"unresolved symbol __constant_test_bit
unresolved symbol __test_bit"
and the module is not inserted . These two are being generated because I'm using
INIT_REQUEST. If I put INIT_REQUEST in comments (/* */) the module gets inserted.
But of course it doesn't work the way it should because of obvious reasons.
Can anybody tell me where am I going wrong ?
NOTE : I've included <asm/bitops.h> which has these two functions.
HOW I INSTALLED MY NEW KERNEL (2.2.16): Probably I'm going wrong in my links. So here I
reproduce the actual steps I took
1. tar -xvf linux-2.2.16 in /usr/src
2. The new source tree was installed in /usr/src/linux so,
mv linux linux-new
ln -s /usr/src/linux-new linux
3. Then I got my links right i.e. in /usr/include I did
ln -s /usr/src/linux/include/linux linux
ln -s /usr/src/linux/include/asm asm
ln -s /usr/src/linux/include/scsi scsi
4. cd /usr/src/linux
5. cp /usr/src/linux/arch/i-386/boot/bzImage /boot/new
6. Updated /etc/lilo.conf and ran lilo
7. Rebooted from this new kernel
8. Now I compiled my block device driver module and tried to insert it and it gave me the aforesaid
NOTE : 1. They say RH7.0 doesn't have a stable gcc so I had done
rm -f gcc
ln -s /usr/bin/kgcc gcc
before recompiling the kernel.
2. insmod blkdev.o -f doesn't work either
I'm not on any mailing list so please reply to me separately
Thanks for your time
I'd be glad if somebody can help me out