insmod problem - Regarding

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi
I am trying to install a module I wrote using "insmod" on "linux-2.4.18-19.8.0" and I get the
following error.

This is the first linux kernel module that I have written.

Do I need to do a mknod before I do an insmod ? (my kernel module is a simple character driver that
just loops thru the pci devices in the system and returns the <board,slot> information for the given
<vendorId,deviceId>)


***ERROR BEGIN****
# insmod queryDevice.o

queryDevice.o: unresolved symbol open
queryDevice.o: unresolved symbol close
queryDevice.o: unresolved symbol puts
queryDevice.o: unresolved symbol printf
queryDevice.o: unresolved symbol strerror
queryDevice.o: unresolved symbol ioctl
queryDevice.o:
Hint: You are trying to load a module without a GPL compatible license
      and it has unresolved symbols.  Contact the module supplier for
      assistance, only they can help you.
****ERROR END****

Would someone be kind enough to let me know what I am doing wrong?
Do I need any additional libraries that I need to link with ?

I have attached a section of the code if that helps.
I am using the GNU specific file ops initiliazation. Could this be the problem?

Any help would be greatly appreciated.

Thanks for your time
Vijay

************CODE SEGMENT BEGIN************
#ifndef __KERNEL__
#define __KERNEL__
#endif

#ifndef MODULE
#define MODULE
#endif

//  ... OS include files
#include <linux/module.h>
#include <linux/kernel.h>
#include <linux/ioctl.h>
#include <linux/slab.h>
#include <linux/fs.h>
#include <linux/errno.h>
#include <linux/types.h>
#include <linux/pci.h>
#include <asm/uaccess.h>
#include <asm/io.h>

//  ... Static variable declarations
static int queryMajorNum;
static int queryDevRegistered = 0;

// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
//  ... Constants
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
MODULE_AUTHOR("Vijay Venkata");
MODULE_SUPPORTED_DEVICE("All Devices on pcibus with a vendorId and deviceId");
MODULE_DESCRIPTION("Provides Query mechanism to get slot information for a"
                    "given <vendorId,deviceId> tuple");

// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
//  ... Data Types
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

//  ... The Query Device
typedef struct
    {
    //  ... Nothing Device specific
    }query_Dev;

//  ... The pci device
static struct pci_dev*  pPciDev = NULL;

// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
//  ... Device File Operations
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

//  ... The file operations on this device, GNU Specific
struct file_operations queryDevice_fops =
    {
    open: queryDevice_open,
    ioctl: queryDevice_ioctl,
    release: queryDevice_close
    };


//    ... Implementation here


*********CODE SEGMENT END***********

--
Kernelnewbies: Help each other learn about the Linux kernel.
Archive:       http://mail.nl.linux.org/kernelnewbies/
FAQ:           http://kernelnewbies.org/faq/



[Index of Archives]     [Newbies FAQ]     [Linux Kernel Mentors]     [Linux Kernel Development]     [IETF Annouce]     [Git]     [Networking]     [Security]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux RAID]     [Linux SCSI]     [Linux ACPI]
  Powered by Linux