openmosix breaking /proc module

Irfan Habib <irfanhab-/[email protected]>
Newsgroups gmane.linux.cluster.openmosix.devel
Message-ID <[email protected]>
Hi,

I'm trying to get this simple /proc module taken from the Linux Kernel Module Programming guide, to compile, but it gives me the following error in a file related to openmosix

/lib/modules/2.4.26-om1/build/include/hpc/hpctask.h:103: error: storage size of `features' isn't known
proc.c:196: error: storage size of `File_Ops_4_Our_Proc_File' isn't known
proc.c:226: error: storage size of `Inode_Ops_4_Our_Proc_File' isn't known
proc.c:249: error: storage size of `Our_Proc_File' isn't known
make: *** [proc.o] Error 1


The kernel module is as follows

      #include <linux/kernel.h>   /* We're doing kernel work */ #include<linux/module.h>   /* Specifically, a module */ #include <linux/proc_fs.h> #ifndef KERNEL_VERSION #define KERNEL_VERSION(a,b,c) ((a)*65536+(b)*256+(c)) #endif    #if LINUX_VERSION_CODE >= KERNEL_VERSION(2,2,0) #include <asm/uaccess.h>  /* for get_user and put_user */ #endif #define MESSAGE_LENGTH 80 static char Message[MESSAGE_LENGTH];  #if LINUX_VERSION_CODE &gt;= KERNEL_VERSION(2,2,0) static ssize_t module_output(     struct file *file,   /* The file read */     char *buf, /* The buffer to put data to (in the                 * user segment) */     size_t len,  /* The length of the buffer */     loff_t *offset) /* Offset in the file - ignore */ #else static int module_output(     struct inode *inode, /* The inode read */     struct file *file,   /* The file read */     char *buf, /* The buffer to put data to (in the
                  * user segment) */     int len)  /* The length of the buffer */ #endif
 {   static int finished = 0;   int i;   char message[MESSAGE_LENGTH+30];    if (finished) {     finished = 0;     return 0;   }    sprintf(message, "Last input:%s", Message);   for(i=0; i&lt;len && message[i]; i++)      put_user(message[i], buf+i);    finished = 1;     return i;  /* Return the number of bytes "read" */ }  #if LINUX_VERSION_CODE >= KERNEL_VERSION(2,2,0) static ssize_t module_input(     struct file *file,   /* The file itself */     const char *buf,     /* The buffer with input */     size_t length,       /* The buffer's length */     loff_t *offset)      /* offset to file - ignore */ #else static int module_input(     struct inode *inode, /* The file's inode */     struct file *file,   /* The file itself */     const char *buf,     /* The buffer with the input */     int length)          /* The buffer's length */ #endif {   int i;    for(i=0; i<MESSAGE_LENGTH-1 && i<leng
 th; i++) #if LINUX_VERSION_CODE >= KERNEL_VERSION(2,2,0)     get_user(Message[i],
 buf+i);   #else      Message[i] = get_user(buf+i); #endif   Message[i] = '\0';  /* we want a standard, zero                         * terminated string */    return i; }   static int module_permission(struct inode *inode, int op) {    if (op == 4 || (op == 2 && current->euid == 0))     return 0;     return -EACCES; }   int module_open(struct inode *inode, struct file *file) {   MOD_INC_USE_COUNT;     return 0; }  #if LINUX_VERSION_CODE >= KERNEL_VERSION(2,2,0) int module_close(struct inode *inode, struct file *file) #else void module_close(struct inode *inode, struct file *file) #endif {   MOD_DEC_USE_COUNT;  #if LINUX_VERSION_CODE >= KERNEL_VERSION(2,2,0)   return 0;  /* success */ #endif }  static struct file_operations File_Ops_4_Our_Proc_File =   {     NULL,  /* lseek */     module_output,  /* "read" from the file */     module_input,   /* "write" to the file */     NULL,  /* readdi
 r */     NULL,  /* select */     NULL,  /* ioctl */     NULL,  /* mmap */    
 module_open,    /* Somebody opened the file */ #if LINUX_VERSION_CODE >= KERNEL_VERSION(2,2,0)     NULL,   /* flush, added here in version 2.2 */ #endif     module_close,    /* Somebody closed the file */   };  static struct inode_operations Inode_Ops_4_Our_Proc_File =   {     &File_Ops_4_Our_Proc_File,     NULL, /* create */     NULL, /* lookup */     NULL, /* link */     NULL, /* unlink */     NULL, /* symlink */     NULL, /* mkdir */     NULL, /* rmdir */     NULL, /* mknod */     NULL, /* rename */     NULL, /* readlink */     NULL, /* follow_link */     NULL, /* readpage */     NULL, /* writepage */     NULL, /* bmap */     NULL, /* truncate */     module_permission /* check for permissions */   };   /* Directory entry */ static struct proc_dir_entry Our_Proc_File =    {     0, /* Inode number - ignore, it will be filled by          * proc_register[_dynamic] */     7, /* Length of 
 the file name */     "rw_test", /* The file name */     S_IFREG | S_IRUGO | S_IWUSR,    
     1,  /* Number of links (directories where the           * file is referenced) */     0, 0,  /* The uid and gid for the file -              * we give it to root */     80, /* The size of the file reported by ls. */     &Inode_Ops_4_Our_Proc_File,      /* A pointer to the inode structure for      * the file, if we need it. In our case we      * do, because we need a write function. */     NULL       /* The read function for the file. Irrelevant,       * because we put it in the inode structure above */   };     /* Module initialization and cleanup ******************* */  /* Initialize the module - register the proc file */ int init_module() {   /* Success if proc_register[_dynamic] is a success,     * failure otherwise */ #if LINUX_VERSION_CODE >= KERNEL_VERSION(2,2,0)   /* In version 2.2, proc_register assign a dynamic     * inode number automatically if it is zero in the     * struc
 ture , so there's no more need for     * proc_register_dynamic    */   return
 proc_register(&proc_root, &Our_Proc_File); #else   return proc_register_dynamic(&proc_root, &Our_Proc_File); #endif }   /* Cleanup - unregister our file from /proc */ void cleanup_module() {   proc_unregister(&proc_root, Our_Proc_File.low_ino); }  

How do I get this to compile on openmosix?
Is there any sample openmosix module which writes to /proc, which I look at?
Regards
Irfan



-------------------------------------------------------------------------
Take Surveys. Earn Cash. Influence the Future of IT
Join SourceForge.net's Techsay panel and you'll get the chance to share your
opinions on IT & business topics through brief surveys -- and earn cash
http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.