Hi Sahil On Fri, Mar 20, 2015 at 6:14 PM, sahil aggarwal <sahil.agg15@xxxxxxxxx> wrote: > Does it mean that in kernel space the direction bitfields are reversed.? No it doesn't mean that. > > On 20 March 2015 at 18:12, sahil aggarwal <sahil.agg15@xxxxxxxxx> wrote: >> Hi Pranay, >> >> Can you help me with this too.? In case of _IOC_READ why VERIFY_WRITE >> and in case of _IOC_WRITE why VERIFY_READ.? . Book says its kernel >> oriented so concept of read and write is reversed. >> >> if(_IOC_DIR(cmd) & _IOC_READ) >> err = !access_ok(VERIFY_WRITE, (void __user*)arg, _IOC_SIZE(cmd)); >> else if(_IOC_DIR(cmd) & _IOC_WRITE) >> err = !access_ok(VERIFY_READ, (void __user*)arg, _IOC_SIZE(cmd)); >> if(err) >> return -EFAULT; >> >> Thanks >> Regards >> >> >> >> >> >> >> On 20 March 2015 at 12:36, sahil aggarwal <sahil.agg15@xxxxxxxxx> wrote: >>> Hi Pranay >>> >>> Well explained. >>> >>> Thank you. >>> >>> On 20 March 2015 at 11:46, Pranay Srivastava <pranjas@xxxxxxxxx> wrote: >>>> Hi Sahil >>>> >>>> On Sun, Mar 15, 2015 at 10:17 AM, sahil aggarwal <sahil.agg15@xxxxxxxxx> wrote: >>>>> hi all, >>>>> >>>>> Going through scull driver code, i see read function reads only till >>>>> end of 1 quantum, so do kernel call read multiple times if count from >>>>> q_pos exceeds quantum size limit.? >>>>> >>>>> >>>>> Ref: ldd3. >>>>> >>>>> if(count > quantum - q_pos) >>>>> count = quantum - q_pos; >>>>> if(copy_to_user(buf, dptr->data[s_pos] + q_pos,count)){ >>>>> retval = -EFAULT; >>>>> goto out; >>>>> } >>>> >>>> If you are not using the default read/write routines, then its up to >>>> you to code that. >>>> >>>> Kernel doesn't do multiple read calls. It'll do only what you asked it >>>> for no more but it can do less. For example, a file is say 100 KiB and >>>> you are reading say 4KiB in a loop when do you stop? >>>> >>>> Simply put it's the user space application which is doing the looping >>>> and repeatedly doing read calls because it assumes that file isn't >>>> finished. >>>> >>>> So again when do you stop reading from the file, without knowing size >>>> of the file.? >>>> >>>>> *f_pos += count; >>>>> retval = count; >>>>> >>>>> Thanks >>>>> Regards >>>>> >>>>> _______________________________________________ >>>>> Kernelnewbies mailing list >>>>> Kernelnewbies@xxxxxxxxxxxxxxxxx >>>>> http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies >>>> >>>> >>>> >>>> -- >>>> ---P.K.S -- ---P.K.S _______________________________________________ Kernelnewbies mailing list Kernelnewbies@xxxxxxxxxxxxxxxxx http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies