Thanks. It worked.

On Sat, Sep 25, 2010 at 12:46 AM, John Mahoney <[email protected]> wrote:

> On Fri, Sep 24, 2010 at 9:38 AM, sri <[email protected]> wrote:
> > My driver write routine is not working properly.
> > As a result, when I do echo "123" > /dev/eater, the process is stopping
> and
> > the control goes into an infinite loop.
> > lsmod showed my driver was in use by 2 processes.
> > Now if i want to forcefully remove my driver module from kernel, how to
> do
> > that?
> >
> > Below is the write routine:
> > static int eater_write(struct file *file, const char *buf, size_t lbuf,
> > loff_t *ppos)
> > {
> >         int actual_data_allowed_to_write;
> >         int data_written;
> >         int data_to_copy=0;
> >
> >         printk("requested bytes to write: %d\n", lbuf);
> >
> >         actual_data_allowed_to_write = MAXSIZE - *ppos;
> >
> >         printk("allowed bytes to write: %d\n",
> > actual_data_allowed_to_write);
> >
> >         if(actual_data_allowed_to_write == 0)
> >         {
> >                 printk("Device has no space to write. format it\n");
> >                 return(actual_data_allowed_to_write);
> >         }
> >
> >         //if available space can accommodate data to write
> >         if(actual_data_allowed_to_write > lbuf)
> >                 data_to_copy=lbuf;
> >         //if available space can't accommodate date to write
> >         if(actual_data_allowed_to_write < lbuf)
> >                 data_to_copy=actual_data_allowed_to_write;
> >
> >         printk("data_to_copy: %d\n", data_to_copy);
> >
> >         data_written=copy_from_user(eater_space + *ppos, /* to */ \
> >                                 buf, /* from */ \
> >                                 data_to_copy);
>
> Also, copy_from_user returns the number of bytes which could NOT be
> written.
>
> SO
>
> data_written = data_to_copy - data_written;
>
> >         //update device memory with new position
> >         *ppos += data_to_copy;
> >         printk("\nWrote %d bytes\n", data_written);
> >
> >         return(data_written);
> > }
> >
> > Appreciate any help.
> >
> > /Sri.
> >
>



-- 
--
 Krishna Mohan B

Reply via email to