2013/1/29 Tobias Boege <[email protected]>

> On Tue, 29 Jan 2013, Karaoui mohamed lamine wrote:
> > Hello,
> >
> > I was looking at how a syscall read/write was done, and i found this :
> >
> >    ....
> >    loff_t pos = file_pos_read(f.file);
> >    ret = vfs_read(f.file, buf, count, &pos);
> >    file_pos_write(f.file, pos);
> >    fdput(f);
> >    ...
> >
> > My questions are :
> >
> > Where did the locking go? I would have imaginated something like :
> >
> >    ....
> >    *lock(f);*
> >    loff_t pos = file_pos_read(f.file);
> >    ret = vfs_read(f.file, buf, count, &pos);
> >    file_pos_write(f.file, pos);
> >    fdput(f);
> >    *unlock(f);*
> >    ...
> >
> > If multiple threads try to read/write at the same time, they could
> > read/write at the same offset ?
> >
>
> Look some lines above:
>
>         struct fd f = fdget(fd);
>

This function is supposed to return the file reference, does do the locking
?
It seems that i can't find the lock instruction( with all those rcu
instructions, i am little lost), can you guide me throught ?


>
> Regards,
> Tobi
>
>
> _______________________________________________
> Kernelnewbies mailing list
> [email protected]
> http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies
>
_______________________________________________
Kernelnewbies mailing list
[email protected]
http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies

Reply via email to