On Wed, Sep 15, 2010 at 10:34 PM, matthias <[email protected]>wrote:

> Hi,
>
> the problem is your bond_buffer and how you handle read and writes from it.
> (see below)
>
> Hi thanks I have read and re read the code and many other man pages from
internet.

> > ssize_t bond_read(struct file *filp, char *buf, size_t count, loff_t
> *f_pos)
> > {
> >
> >   /* Transfering data to user space */
> >   copy_to_user(buf,bond_buffer,1);
> you just copy one byte to the buffer instead of count.
>
Yes you are right here but I am not getting as how do I get the exact
location from where I will copy data from kernel space to user space.

>
> >
> >
> >   /* Changing reading position as best suits */
> >   if (*f_pos == 0) {
> >     *f_pos+=1;
> >     return 1;
> >   } else {
> >     return 0;
> >   }
> > };
> >
> >
> >
> >
> > ssize_t bond_write(struct file *filp, char *buf, size_t count, loff_t
> > *f_pos)
> >  {
> >
> >
> >   char *tmp;
> >
> >
> >   tmp=buf+count-1;
> >   copy_from_user(bond_buffer,tmp,1);
> you just copy the last byte from buf (buf+count-1) to your
> bond_buffer. you should copy count bytes, starting by buf.
>
Right I am not clear as how will I get the location of the region where user
has written some thing in the above error you pointed out
so that I can copy the complete characters you mentioned.

Reply via email to