LinuxQuestions.org
Latest LQ Deal: Latest LQ Deals
Home Forums Tutorials Articles Register
Go Back   LinuxQuestions.org > Forums > Linux Forums > Linux - Hardware > Linux - Embedded & Single-board computer
User Name
Password
Linux - Embedded & Single-board computer This forum is for the discussion of Linux on both embedded devices and single-board computers (such as the Raspberry Pi, BeagleBoard and PandaBoard). Discussions involving Arduino, plug computers and other micro-controller like devices are also welcome.

Notices


Reply
  Search this Thread
Old 07-07-2010, 04:52 AM   #1
vivignesh
LQ Newbie
 
Registered: Jul 2010
Posts: 18

Rep: Reputation: 0
Cool Device driver program


Hi, i am trying to write modular programm,
but when i try to compile i come to know i dont have any files in /usr/src/linux.

i have installed fedora 12 which has 2.6.31.5-127.fc12.i686.PAE

i am including in my code
linux/kernel.h
linux/module.h

Those are not present directory in /usr/src/linux is not present.

My goal is to compile modular programs.

I am newbie
Please help me how to do .....



Hi i have downloaded kernel-2.6.31.5-127.fc12.src.rpm
i extracted and i found there are lot of patches along with linux-2.6.31.tar.bz2.
I extracted linux-2.6.31.tar.bz2 and copied whole directory linux-2.6.31 to /usr/src/ , The code what i have written is
module1.c
[Code]
#include<linux/kernel.h>
#include<linux/module.h>

int init_module(void)
{

printk("In Init module \n");
}

void cleanup_module(void)
{

printk("In Cleanup module \n");
}
[/COLOR]

i compiled using
gcc -DMODULE -D__KERNEL__ -I /usr/src/linux-2.6.31/include/ -c module1.c

The error what i am getting is

In file included from /usr/src/linux-2.6.31/include/linux/kernel.h:11,
from module1.c:1:
/usr/src/linux-2.6.31/include/linux/linkage.h:5:25: error: asm/linkage.h: No such file or directory
In file included from /usr/src/linux-2.6.31/include/linux/kernel.h:15,
from module1.c:1:
/usr/src/linux-2.6.31/include/linux/bitops.h:17:24: error: asm/bitops.h: No such file or directory
In file included from module1.c:1:
/usr/src/linux-2.6.31/include/linux/kernel.h:21:21: error: asm/bug.h: No such file or directory
In file included from /usr/src/linux-2.6.31/include/linux/list.h:6,
from /usr/src/linux-2.6.31/include/linux/module.h:9,
from module1.c:2:
/usr/src/linux-2.6.31/include/linux/prefetch.h:14:27: error: asm/processor.h: No such file or directory
/usr/src/linux-2.6.31/include/linux/prefetch.h:15:23: error: asm/cache.h: No such file or directory
In file included from /usr/src/linux-2.6.31/include/linux/module.h:9,
from module1.c:2:
/usr/src/linux-2.6.31/include/linux/list.h:7:24: error: asm/system.h: No such file or directory
In file included from /usr/src/linux-2.6.31/include/linux/preempt.h:9,
from /usr/src/linux-2.6.31/include/linux/spinlock.h:50,
from /usr/src/linux-2.6.31/include/linux/seqlock.h:29,
from /usr/src/linux-2.6.31/include/linux/time.h:8,
from /usr/src/linux-2.6.31/include/linux/stat.h:60,
from /usr/src/linux-2.6.31/include/linux/module.h:10,
from module1.c:2:
/usr/src/linux-2.6.31/include/linux/thread_info.h:56:29: error: asm/thread_info.h: No such file or directory
In file included from /usr/src/linux-2.6.31/include/linux/preempt.h:9,
from /usr/src/linux-2.6.31/include/linux/spinlock.h:50,
from /usr/src/linux-2.6.31/include/linux/seqlock.h:29,
from /usr/src/linux-2.6.31/include/linux/time.h:8,
from /usr/src/linux-2.6.31/include/linux/stat.h:60,
from /usr/src/linux-2.6.31/include/linux/module.h:10,
from module1.c:2:
/usr/src/linux-2.6.31/include/linux/thread_info.h:65: warning: ‘struct thread_info’ declared inside parameter list
/usr/src/linux-2.6.31/include/linux/thread_info.h:65: warning: its scope is only this definition or declaration, which is probably not what you want
/usr/src/linux-2.6.31/include/linux/thread_info.h: In function ‘set_ti_thread_flag’:
/usr/src/linux-2.6.31/include/linux/thread_info.h:67: error: dereferencing pointer to incomplete type
/usr/src/linux-2.6.31/include/linux/thread_info.h: At top level:
/usr/src/linux-2.6.31/include/linux/thread_info.h:70: warning: ‘struct thread_info’ declared inside parameter list
/usr/src/linux-2.6.31/include/linux/thread_info.h: In function ‘clear_ti_thread_flag’:
/usr/src/linux-2.6.31/include/linux/thread_info.h:72: error: dereferencing pointer to incomplete type
/usr/src/linux-2.6.31/include/linux/thread_info.h: At top level:
/usr/src/linux-2.6.31/include/linux/thread_info.h:75: warning: ‘struct thread_info’ declared inside parameter list
/usr/src/linux-2.6.31/include/linux/thread_info.h: In function ‘test_and_set_ti_thread_flag’:
/usr/src/linux-2.6.31/include/linux/thread_info.h:77: error: dereferencing pointer to incomplete type
/usr/src/linux-2.6.31/include/linux/thread_info.h: At top level:
/usr/src/linux-2.6.31/include/linux/thread_info.h:80: warning: ‘struct thread_info’ declared inside parameter list
/usr/src/linux-2.6.31/include/linux/thread_info.h: In function ‘test_and_clear_ti_thread_flag’:
/usr/src/linux-2.6.31/include/linux/thread_info.h:82: error: dereferencing pointer to incomplete type
/usr/src/linux-2.6.31/include/linux/thread_info.h: At top level:
/usr/src/linux-2.6.31/include/linux/thread_info.h:85: warning: ‘struct thread_info’ declared inside parameter list
/usr/src/linux-2.6.31/include/linux/thread_info.h: In function ‘test_ti_thread_flag’:
/usr/src/linux-2.6.31/include/linux/thread_info.h:87: error: dereferencing pointer to incomplete type
In file included from /usr/src/linux-2.6.31/include/linux/seqlock.h:29,
from /usr/src/linux-2.6.31/include/linux/time.h:8,
from /usr/src/linux-2.6.31/include/linux/stat.h:60,
from /usr/src/linux-2.6.31/include/linux/module.h:10,
from module1.c:2:
/usr/src/linux-2.6.31/include/linux/spinlock.h:364:24: error: asm/atomic.h: No such file or directory
In file included from /usr/src/linux-2.6.31/include/linux/time.h:9,
from /usr/src/linux-2.6.31/include/linux/stat.h:60,
from /usr/src/linux-2.6.31/include/linux/module.h:10,
from module1.c:2:
/usr/src/linux-2.6.31/include/linux/math64.h:5:23: error: asm/div64.h: No such file or directory
In file included from /usr/src/linux-2.6.31/include/linux/mmzone.h:9,
from /usr/src/linux-2.6.31/include/linux/gfp.h:4,
from /usr/src/linux-2.6.31/include/linux/kmod.h:22,
from /usr/src/linux-2.6.31/include/linux/module.h:13,
from module1.c:2:
/usr/src/linux-2.6.31/include/linux/wait.h:26:25: error: asm/current.h: No such file or directory
In file included from /usr/src/linux-2.6.31/include/linux/bitmap.h:8,
from /usr/src/linux-2.6.31/include/linux/nodemask.h:95,
from /usr/src/linux-2.6.31/include/linux/mmzone.h:16,
from /usr/src/linux-2.6.31/include/linux/gfp.h:4,
from /usr/src/linux-2.6.31/include/linux/kmod.h:22,
from /usr/src/linux-2.6.31/include/linux/module.h:13,
from module1.c:2:
/usr/src/linux-2.6.31/include/linux/string.h:21:24: error: asm/string.h: No such file or directory
In file included from /usr/src/linux-2.6.31/include/linux/gfp.h:4,
from /usr/src/linux-2.6.31/include/linux/kmod.h:22,
from /usr/src/linux-2.6.31/include/linux/module.h:13,
from module1.c:2:
/usr/src/linux-2.6.31/include/linux/mmzone.h:18:26: error: linux/bounds.h: No such file or directory
/usr/src/linux-2.6.31/include/linux/mmzone.h:20:22: error: asm/page.h: No such file or directory
In file included from /usr/src/linux-2.6.31/include/linux/gfp.h:4,
from /usr/src/linux-2.6.31/include/linux/kmod.h:22,
from /usr/src/linux-2.6.31/include/linux/module.h:13,
from module1.c:2:
/usr/src/linux-2.6.31/include/linux/mmzone.h: At top level:
/usr/src/linux-2.6.31/include/linux/mmzone.h:288: error: ‘MAX_NR_ZONES’ undeclared here (not in a function)
/usr/src/linux-2.6.31/include/linux/mmzone.h:335: error: expected specifier-qualifier-list before ‘atomic_long_t’
In file included from /usr/src/linux-2.6.31/include/linux/notifier.h:14,
from /usr/src/linux-2.6.31/include/linux/memory_hotplug.h:6,
from /usr/src/linux-2.6.31/include/linux/mmzone.h:642,
from /usr/src/linux-2.6.31/include/linux/gfp.h:4,
from /usr/src/linux-2.6.31/include/linux/kmod.h:22,
from /usr/src/linux-2.6.31/include/linux/module.h:13,
from module1.c:2:
/usr/src/linux-2.6.31/include/linux/rwsem.h:22:65: error: asm/rwsem.h: No such file or directory
In file included from /usr/src/linux-2.6.31/include/linux/memory_hotplug.h:6,
from /usr/src/linux-2.6.31/include/linux/mmzone.h:642,
from /usr/src/linux-2.6.31/include/linux/gfp.h:4,
from /usr/src/linux-2.6.31/include/linux/kmod.h:22,
from /usr/src/linux-2.6.31/include/linux/module.h:13,
from module1.c:2:
/usr/src/linux-2.6.31/include/linux/notifier.h:62: error: field ‘rwsem’ has incomplete type
In file included from /usr/src/linux-2.6.31/include/linux/gfp.h:4,
from /usr/src/linux-2.6.31/include/linux/kmod.h:22,
from /usr/src/linux-2.6.31/include/linux/module.h:13,
from module1.c:2:
/usr/src/linux-2.6.31/include/linux/mmzone.h: In function ‘populated_zone’:
/usr/src/linux-2.6.31/include/linux/mmzone.h:675: error: ‘struct zone’ has no member named ‘present_pages’
/usr/src/linux-2.6.31/include/linux/mmzone.h: In function ‘is_normal’:
/usr/src/linux-2.6.31/include/linux/mmzone.h:724: error: ‘struct zone’ has no member named ‘zone_pgdat’
In file included from /usr/src/linux-2.6.31/include/linux/gfp.h:7,
from /usr/src/linux-2.6.31/include/linux/kmod.h:22,
from /usr/src/linux-2.6.31/include/linux/module.h:13,
from module1.c:2:
/usr/src/linux-2.6.31/include/linux/topology.h:34:26: error: asm/topology.h: No such file or directory
In file included from /usr/src/linux-2.6.31/include/linux/gfp.h:8,
from /usr/src/linux-2.6.31/include/linux/kmod.h:22,
from /usr/src/linux-2.6.31/include/linux/module.h:13,
from module1.c:2:
/usr/src/linux-2.6.31/include/linux/mmdebug.h:4:28: error: linux/autoconf.h: No such file or directory
In file included from /usr/src/linux-2.6.31/include/linux/module.h:14,
from module1.c:2:
/usr/src/linux-2.6.31/include/linux/elf.h:7:21: error: asm/elf.h: No such file or directory
In file included from /usr/src/linux-2.6.31/include/linux/tracepoint.h:18,
from /usr/src/linux-2.6.31/include/linux/module.h:19,
from module1.c:2:
/usr/src/linux-2.6.31/include/linux/rcupdate.h:64:2: error: #error "Unknown RCU implementation specified to kernel configuration"
In file included from module1.c:2:
/usr/src/linux-2.6.31/include/linux/module.h:20:23: error: asm/local.h: No such file or directory
/usr/src/linux-2.6.31/include/linux/module.h:22:24: error: asm/module.h: No such file or directory
In file included from module1.c:2:
/usr/src/linux-2.6.31/include/linux/module.h: At top level:
/usr/src/linux-2.6.31/include/linux/module.h:714: error: expected ‘;’, ‘,’ or ‘)’ before ‘*’ token


if i give uname -r i am getting the following

[root@rajguruvin rgv]# uname -r
2.6.31.5-127.fc12.i686.PAE


if i give yum install kernel-devel i am getting

[root@rajguruvin rgv]# yum install kernel-devel
Loaded plugins: presto, refresh-packagekit
Setting up Install Process
Package kernel-devel-2.6.32.14-127.fc12.i686 already installed and latest version
Nothing to do


Where it went wrong.....
 
Old 07-07-2010, 05:49 AM   #2
irmin
Member
 
Registered: Jan 2010
Location: the universe
Distribution: Slackware (modified), Slackware64 (modified), openSuSE (modified)
Posts: 342

Rep: Reputation: 62
Try to add "-I/usr/src/linux-2.6.31/arch/x86/include" to your compiler flags, since /usr/src/linux-2.6.31/include does not contain platform specific files.
 
Old 07-07-2010, 06:14 AM   #3
daff_vadi
LQ Newbie
 
Registered: Jul 2010
Posts: 5

Rep: Reputation: 0
try running "make menuconfig" in the installed kernel directory and save the configuration. And then build your module
 
Old 07-07-2010, 06:24 AM   #4
vivignesh
LQ Newbie
 
Registered: Jul 2010
Posts: 18

Original Poster
Rep: Reputation: 0
Cool

Quote:
Originally Posted by irmin View Post
Try to add "-I/usr/src/linux-2.6.31/arch/x86/include" to your compiler flags, since /usr/src/linux-2.6.31/include does not contain platform specific files.
i tried still its not working

[root@rajguruvin rgv]# gcc -DMODULE -D__KERNEL__ -I /usr/src/linux/arch/x86/include -c module1.c
module1.c:1:23: error: asm/kernel.h: No such file or directory
In file included from module1.c:2:
/usr/src/linux/arch/x86/include/asm/module.h:4:32: error: asm-generic/module.h: No such file or directory
/usr/src/linux/arch/x86/include/asm/module.h:59:2: error: #error unknown processor family
[root@rajguruvin rgv]#
 
Old 07-07-2010, 09:57 PM   #5
daff_vadi
LQ Newbie
 
Registered: Jul 2010
Posts: 5

Rep: Reputation: 0
"asm" is a symbolic link to architecture specific header files in include directory which is not present by default. make menuconfig creates the link.
then compile yr module using "gcc -DMODULE -D__KERNEL__ -I /usr/src/linux-2.6.31/include/ -c module1.c"
think it should work.
 
Old 07-07-2010, 11:39 PM   #6
vivignesh
LQ Newbie
 
Registered: Jul 2010
Posts: 18

Original Poster
Rep: Reputation: 0
Quote:
Originally Posted by daff_vadi View Post
"asm" is a symbolic link to architecture specific header files in include directory which is not present by default. make menuconfig creates the link.
then compile yr module using "gcc -DMODULE -D__KERNEL__ -I /usr/src/linux-2.6.31/include/ -c module1.c"
think it should work.
make menuconfig - how to do that?
 
Old 07-08-2010, 06:44 AM   #7
pixellany
LQ Veteran
 
Registered: Nov 2005
Location: Annapolis, MD
Distribution: Mint
Posts: 17,809

Rep: Reputation: 743Reputation: 743Reputation: 743Reputation: 743Reputation: 743Reputation: 743Reputation: 743
Quote:
Originally Posted by vivignesh View Post
make menuconfig - how to do that?
Look up the manual for the "make" command-----menuconfig is one of the options?

More generally, have you studied the documentation for GCC (including make)?
 
Old 07-08-2010, 09:56 AM   #8
irmin
Member
 
Registered: Jan 2010
Location: the universe
Distribution: Slackware (modified), Slackware64 (modified), openSuSE (modified)
Posts: 342

Rep: Reputation: 62
Quote:
Originally Posted by vivignesh View Post
i tried still its not working

[root@rajguruvin rgv]# gcc -DMODULE -D__KERNEL__ -I /usr/src/linux/arch/x86/include -c module1.c
module1.c:1:23: error: asm/kernel.h: No such file or directory
In file included from module1.c:2:
/usr/src/linux/arch/x86/include/asm/module.h:4:32: error: asm-generic/module.h: No such file or directory
/usr/src/linux/arch/x86/include/asm/module.h:59:2: error: #error unknown processor family
[root@rajguruvin rgv]#
This is because your kernel source is not configured. Go to the toplevel kernel source directory and type "make oldconfig && make prepare". Then try again.

Furthermore there is no such header file: "asm/kernel.h"
It is called "linux/kernel.h"
 
Old 07-19-2010, 02:12 AM   #9
zaks_974
LQ Newbie
 
Registered: Jul 2010
Location: Bangalore
Distribution: fedora
Posts: 24

Rep: Reputation: 1
Looks like, vvignesh is completely new to kernel. I will spoon feed him

Just do the foll

1) mkdir new_dir
2) cp linux-2.6.31.tar.bz2 new_dir
3) cd new_dir
4) tar xvjf linux-2.6.31.tar.bz2
5) make defconfig
6) make
7) make modules
8) make install modules

You might get an error "No such file or directory at this stage". Create the directory it asks for in /lib/modules/
This will create a new kernel for you and will have an entry in grub

Reboot the system
Select the newly built kernel


1) Now compile your module with

make -C <location_of_new_dir> SUBDIRS=$PWD modules

Create a Makefile
obj-m += <your_module_name.o>

Last edited by zaks_974; 07-19-2010 at 02:13 AM.
 
  


Reply



Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is Off
HTML code is Off



Similar Threads
Thread Thread Starter Forum Replies Last Post
How to write device driver program using Python in linux shail_csp Programming 3 11-30-2008 07:57 PM
Multiple Device driver from single device driver???? rickhg12hs Linux - Kernel 3 05-25-2008 12:11 AM
Problem in compiling a device driver program p.arun Linux - Kernel 4 01-23-2008 01:14 AM
device driver program swamy suresh Programming 1 06-08-2007 09:39 AM
Help with converting a userspace PCI program to a Device Driver cstrask Linux - Hardware 0 10-31-2005 09:07 PM

LinuxQuestions.org > Forums > Linux Forums > Linux - Hardware > Linux - Embedded & Single-board computer

All times are GMT -5. The time now is 08:17 PM.

Main Menu
Advertisement
My LQ
Write for LQ
LinuxQuestions.org is looking for people interested in writing Editorials, Articles, Reviews, and more. If you'd like to contribute content, let us know.
Main Menu
Syndicate
RSS1  Latest Threads
RSS1  LQ News
Twitter: @linuxquestions
Open Source Consulting | Domain Registration