2013/1/29 Tobias Boege <tobias@gambas-buch.de>
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 Kernelnewbies@kernelnewbies.org http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies