Messages in this thread | | | Date | Tue, 20 Feb 2001 12:19:09 +0100 | From | Erik Mouw <> | Subject | Re: parameters passing problem in driver module |
| |
On Tue, Feb 20, 2001 at 04:07:55PM +0530, Srinivas Surabhi wrote: > In application program ,code for call to write system call is given > below... > #include<fcntl.h> > main() > { > int count,fd; > fd=open("/dev/pseudo",O_RDWR); > write(fd,buff,5); > } > > In driver module code for getting the buffer and count > > #include<all related header files...> > > int psuedo_write(struct inode*in,struct file*fp,char *buf,int count)
This should read:
static ssize_t pseudo_write(struct file* file, const char *buf, size_t count, loff_t* ppos);
> { > kprintf("<1>pseudo_write routine called \n"); > kprintf("<1>count=%d \n",count); > kprintf("<1>buffer=%s \n",buff); > return 0; > } > /******so here after inserting the module into the kernel using insmod > pseudo.o and executing the application cc -c pseudo_app.c, the o/p on > console is *****/ > > "pseudo_write routine called" > "count=9988345352" /*garbage*/ > "buffer=@#%h" . /*garbage*/ > > /*** but neither the buffer is carried from user space to kernel space nor > the count, why?***/Please help me > out.
Not strange at all, you're using the wrong parameters so you get what you asked for: garbage in, garbage out.
You get the source for all other drivers for free. Use it.
Erik
-- J.A.K. (Erik) Mouw, Information and Communication Theory Group, Department of Electrical Engineering, Faculty of Information Technology and Systems, Delft University of Technology, PO BOX 5031, 2600 GA Delft, The Netherlands Phone: +31-15-2783635 Fax: +31-15-2781843 Email: J.A.K.Mouw@its.tudelft.nl WWW: http://www-ict.its.tudelft.nl/~erik/ - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
| |