Re: [kernel]which the file define the variable of "phys_base"?

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

 



It didn’t show me anything like that. It worked well. Here is what I have - note that I changed couple of things in printk statement but that shouldn’t affect your errors:

__________________________________________________
Program - lx.c

#include <linux/module.h>               // for printk()
#include <linux/mm.h>             // for struct page
#include <asm/page.h>             // for struct page
#include <asm/pgtable.h>                // for ZERO_PAGE

static int __init init_hello( void )
{
        int i;
        struct page * zero_page;
        printk(KERN_ALERT "\n   Kello, the first! \n\n" );
        i = 0x100;
        zero_page = ZERO_PAGE(&i);
        printk(KERN_ALERT " the ZERO address is %p", zero_page);
        return  0;
}

static void __exit exit_hello( void )
{
        printk(KERN_ALERT "\n   Goodbye now... \n\n" );
}

MODULE_LICENSE("GPL");
module_init(init_hello);
module_exit(exit_hello);

Makefile

obj-m :=lx.o


KDIR= /lib/modules/$(shell uname -r)/build

all:
$(MAKE) -C $(KDIR) SUBDIRS=$(PWD) modules

clean:
rm -rf $(wildcard *.o *.ko mo* Mo* *.mod.c)

____________________________________________________

Running make gives me(I’m in a Virtual Machine so the page addresses may be messed up):

sunny@ubuntu: make
make -C /lib/modules/3.11.0-12-generic/build SUBDIRS=/home/sunny/Documents/ modules
make[1]: Entering directory `/usr/src/linux-headers-3.11.0-12-generic'
  Building modules, stage 2.
  MODPOST 1 modules
make[1]: Leaving directory `/usr/src/linux-headers-3.11.0-12-generic'

sunny@ubuntu: sudo insmod lx.ko
sunny@ubuntu: sudo rmmod lx
sunny@ubuntu: sudo dmesg | tail -6
[48391.359434]    Kello, the first! 
[48391.359434] 
[48320.368773]  the ZERO address is ffffea0000079b40
[48391.359439]  the ZERO address is ffffea0000079b40<1>[48411.409906] 
[48411.409906]    Goodbye now... 
[48411.409906] 

Hope this helps! Don’t forget to ‘reply all’ so that others in the mailing list could also see your/my problem/solution.

- Sunny

On Feb 24, 2014, at 7:32 PM, lx <lxlenovostar@xxxxxxxxx> wrote:

hi :
    If i command the "insmod zero.ko"; the wrong messages is:
##############
insmod: error inserting 'zero.ko': -1 Unknown symbol in module
##############


2014-02-25 2:33 GMT+08:00 Sunny <sundarcs@xxxxxxx>:
Hi,

I’m not sure about the “pays_base” warning, but your code runs fine in my machine. What happens if you ignore the warning and load the module anyway?

- Sunny

On Feb 24, 2014, at 9:04 AM, lx <lxlenovostar@xxxxxxxxx> wrote:

hi all:
      the codes is:
#########################################
#include <linux/module.h>               // for printk()
#include <linux/mm.h>             // for struct page
#include <asm/page.h>             // for struct page
#include <asm/pgtable.h>                // for ZERO_PAGE

static int __init init_hello( void )
{
        int i;
        struct page * zero_page;
        printk( "\n   Kello, the first! \n\n" );
        i = 0x100;
        zero_page = ZERO_PAGE(&i);
        printk(" the ZERO address is %p", zero_page);
        return  0;
}

static void __exit exit_hello( void )
{
        printk( "\n   Goodbye now... \n\n" );
}

MODULE_LICENSE("GPL");
module_init(init_hello);
module_exit(exit_hello);
#########################################

I complier it. by:
#########################################
make -C /lib/modules/`uname -r`/build M=`pwd`
#########################################

the results is:
#########################################
[root@localhost kernel_test]# make -C /lib/modules/`uname -r`/build M=`pwd`
make: Entering directory `/usr/src/kernels/2.6.18-308.el5-x86_64'
  CC [M]  /opt/lx/kernel/kernel_test/zero.o
  Building modules, stage 2.
  MODPOST
WARNING: "phys_base" [/opt/lx/kernel/kernel_test/zero.ko] undefined!
  LD [M]  /opt/lx/kernel/kernel_test/zero.ko
make: Leaving directory `/usr/src/kernels/2.6.18-308.el5-x86_64'
#########################################

I try to find the file which defined the "phys_base", for examples;

But I can't find the file of init.c in my computer. Please tell me some ways to solve it, thank you.

_______________________________________________
Kernelnewbies mailing list
Kernelnewbies@xxxxxxxxxxxxxxxxx
http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies



_______________________________________________
Kernelnewbies mailing list
Kernelnewbies@xxxxxxxxxxxxxxxxx
http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies

[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