FAT performance improvement. In large files, seeking to a position fromt he beginning of the file can be very time consuming. ftell does lssek(fd, 0, SET_CURR). In that case, that is wasted time since we are going to seek to the same position. This fix short-circutes fat_seek() in all cases where we attempt to seek to curren position. Suggested by Nate Weibley
This commit is contained in:
parent
1f9799b68d
commit
610afe9cd9
|
@ -1054,6 +1054,18 @@ static off_t fat_seek(FAR struct file *filep, off_t offset, int whence)
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Special case: We are seeking to the current position. This would
|
||||||
|
* happen normally with ftell() which does lseek(fd, 0, SEEK_CUR) but can
|
||||||
|
* also happen in other situation such as when SEEK_SET is used to assure
|
||||||
|
* assure sequential access in a multi-threaded environment where there
|
||||||
|
* may be are multiple users to the file descriptor.
|
||||||
|
*/
|
||||||
|
|
||||||
|
if (position == filep->f_pos)
|
||||||
|
{
|
||||||
|
return OK;
|
||||||
|
}
|
||||||
|
|
||||||
/* Make sure that the mount is still healthy */
|
/* Make sure that the mount is still healthy */
|
||||||
|
|
||||||
fat_semtake(fs);
|
fat_semtake(fs);
|
||||||
|
|
Loading…
Reference in New Issue