Help compiling & running these two kernel module that share a variable between them

From: linux.lover (linux.lover2004_at_gmail.com)
Date: 02/21/05


Date: 20 Feb 2005 21:20:44 -0800

Hello,
           I created my proc file kernel module as
#define MODULE
#define __KERNEL__
#define EXPORT_SYMTAB

#include <linux/module.h>
#include <linux/kernel.h>
#include <linux/init.h>
#include <linux/proc_fs.h>
#include <asm/uaccess.h>
#define STRING_LEN 8

char mysec[STRING_LEN+1];
struct proc_dir_entry *myfile_file;
EXPORT_SYMBOL(mysec);

int proc_read_myfile(char *page, char **start, off_t
off, int count, int *eof, void *data)
{
  int len;
  len = sprintf(page, "%s", mysec);
  printk(KERN_INFO "You Requested for Writing
File\n");
  return len;
}

int proc_write_myfile(struct file *file, const char
*page,unsigned long count, void *data)
{
  int len=(count>STRING_LEN ? STRING_LEN : count);
  if(copy_from_user(mysec, page, len)){
    return -EFAULT;
  }
  mysec[len] = '\0';
  printk(KERN_INFO "You Requested for Reading File
with val=%s\n",mysec);
  return len;
}

static int __init init_myfile(void)
{
  myfile_file = create_proc_entry("myfile", 0666, NULL);
  if(myfile_file == NULL) {
    return -ENOMEM;
}
  strcpy(mysec,"mymodule");
  myfile_file->data = &mysec;
  myfile_file->read_proc = &proc_read_myfile;
  myfile_file->write_proc = &proc_write_myfile;
  myfile_file->owner = THIS_MODULE;

  printk(KERN_INFO "PROC FILE IS initialized\n");
  return 0;
}

static void __exit cleanup_myfile(void)
{
  remove_proc_entry("myfile", NULL);
  printk(KERN_INFO "MODULE PROC FILE removed\n");
}
module_init(init_myfile);
module_exit(cleanup_myfile);
MODULE_LICENSE("GPL");

And my readfile.c which is another kernel module as
#define MODULE
#define __KERNEL__
#include <linux/module.h>
#include <linux/kernel.h>
#include <linux/init.h>

extern char mysec[];
void readfile(void)
{
printk(KERN_INFO "FILE CONTAINS string=%s\n",mysec);
}

static int __init init_myrfile(void)
{
  printk(KERN_INFO "MODULE PROC READ FILE
initialized\n");
  readfile();
  return 0;
}

static void __exit cleanup_myrfile(void)
{
  printk(KERN_INFO "MODULE PROC READ FILE removed\n");
}
module_init(init_myrfile);
module_exit(cleanup_myrfile);
MODULE_LICENSE("GPL");

But i am getting error for readfile while i give insmod readfile.o.
I require your help to have mysec variable be shared between 2 kernel modules?
Whats wrong in above programs?

regrds,
linux_lover.



Relevant Pages