I THINK YOUR KERNEL IS NOT EXPORTING THOSE SYMBOLS . HOW DID YOU COMPILE THE FILE.
SHYAM
shyamjithe.c.s Networking & Communications Group Tata Elxsi Ltd. (Ph) +91-471-2527214 (Fax) +91-471-2527215 ____________________________________
----- Original Message ----- From: "linux lover" <linux_lover2004@xxxxxxxxx>
To: "Srinivas G." <srinivasg@xxxxxxxxxxxxxxxxxxxxx>; <shyamjithe@xxxxxxxxxxxxxxx>; <bulb@xxxxxx>; <amith@xxxxxxxxxxxxxxx>; <karthik301176@xxxxxxxxx>; <gauravd_linux@xxxxxxxxx>; <godepankaj@xxxxxxxxxxxxxx>; <J.A.K.Mouw@xxxxxxxxxxxxxxxxx>
Cc: <kernelnewbies@xxxxxxxxxxxx>
Sent: Tuesday, February 22, 2005 10:44 AM
Subject: Re: Creating a file in kernel Module -- working fine
Hello Srinivas, I am using RedHat 9 with its kernel 2.4.20-8 . When i make your program it compiled successfully but i am getting following errors while i insmod insmod cf.o cf.o: unresolved symbol sys_open cf.o: unresolved symbol sys_write
regards, linux_lover.
--- "Srinivas G." <srinivasg@xxxxxxxxxxxxxxxxxxxxx> wrote:
------------------------------------------------------------------Dear All,
I have gone through your mails. Based on those mail messages I have created a test module in the kernel to create a file. It was compiled fine with out any error messages and working fine.
I am using Red Hat 7.3 with 2.4.18-3 kernel version. Please fine the code below.
cre_fil.c
------------------------------------------------------------------------#include <linux/kernel.h> #include <linux/module.h> #include <asm/fcntl.h> /* for O_WRONLY */ #include <linux/syscall.h> /* for sys_ functions */ #include <asm/uaccess.h> /* for set_fs(), get_fs() etc. */ #include <linux/string.h> /* for string length */ #include <linux/slab.h> /* for kmalloc */
MODULE_LICENSE("GPL");
typedef struct tagWRITE_TEST { unsigned long fd; unsigned long x;
}WRITE_TEST, *PWRITE_TEST;
PWRITE_TEST ptest;
void SysPrint(char * pString, ...) { static char buff[1024]; va_list ap;
va_start(ap,pString); vsprintf((char *)buff, pString, ap); va_end(ap);
sys_write(ptest->fd,(char *)buff,strlen(buff)); }
int init_module(void) {
printk("<%s> invoked!\n",__FUNCTION__); printk("File Creation Testing in Kernel Module!\n");
set_fs(get_ds());
/* allocate the memory for structre */ ptest = (PWRITE_TEST)kmalloc(sizeof(WRITE_TEST),GFP_KERNEL); if(ptest == NULL) { printk("Structure Memory Allocation Fails!\n"); return -ENOMEM; }
ptest->fd = sys_open("srcdebug.txt", O_CREAT | O_WRONLY, 644); if (ptest->fd == 0) { printk("File Creation Error!!!\n"); return 1; }
SysPrint("File Creation Testing in Kernel Module!\n"); SysPrint("Srinivas Testing the File Creation\n");
/* close the file here */ sys_close(ptest->fd);
return 0; }
void cleanup_module(void) { printk("Good bye!\n");
/* free the allocated memory */ kfree(ptest);
}
Makefile ------------------------------------------------ INCDIR=/usr/src/linux-2.4/include
CFLAGS=-DMODULE -D__KERNEL__ -I$(INCDIR) -O2 -Wall
OBJS=cre_fil.o TARGET=cf.o
$(TARGET): $(OBJS) $(LD) -r -o $(TARGET) $(OBJS)
clean: $(RM) -f $(TARGET) $(OBJS)
--
I need some information. Where can I get the information for sys_create, sys_write, sys_read, set_fs, get_fs, get_ds etc calls?
Please provide any links which are related to that calls or any books.
Thanks and regards, Srinivas G
__________________________________
Do you Yahoo!?
All your favorites on one personal page - Try My Yahoo!
http://my.yahoo.com
-- Kernelnewbies: Help each other learn about the Linux kernel. Archive: http://mail.nl.linux.org/kernelnewbies/ FAQ: http://kernelnewbies.org/faq/