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 ?

If my understanding are correct, is this POSIX compliant ?


thanks.