Changeset 368ee04 in mainline for uspace/srv/vfs/vfs_pager.c
- Timestamp:
- 2017-04-05T18:10:39Z (8 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- 93ad8166
- Parents:
- 39f892a9 (diff), 2166728 (diff)
Note: this is a merge changeset, the changes displayed below correspond to the merge itself.
Use the(diff)
links above to see all the changes relative to each parent. - File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/srv/vfs/vfs_pager.c
r39f892a9 r368ee04 50 50 int rc; 51 51 52 vfs_file_t *file = vfs_file_get(fd);53 if (!file) {54 async_answer_0(rid, ENOENT);55 return;56 }57 58 52 page = as_area_create(AS_AREA_ANY, page_size, 59 53 AS_AREA_READ | AS_AREA_WRITE | AS_AREA_CACHEABLE, … … 61 55 62 56 if (page == AS_MAP_FAILED) { 63 vfs_file_put(file);64 57 async_answer_0(rid, ENOMEM); 65 58 return; … … 71 64 }; 72 65 73 fibril_mutex_lock(&file->lock);74 file->pos = offset;75 fibril_mutex_unlock(&file->lock);76 77 66 size_t total = 0; 67 aoff64_t pos = offset; 78 68 do { 79 rc = vfs_rdwr_internal(fd, true, &chunk);69 rc = vfs_rdwr_internal(fd, pos, true, &chunk); 80 70 if (rc != EOK) 81 71 break; … … 83 73 break; 84 74 total += chunk.size; 75 pos += chunk.size; 85 76 chunk.buffer += chunk.size; 86 77 chunk.size = page_size - total; 87 78 } while (total < page_size); 88 89 vfs_file_put(file);90 79 91 80 async_answer_1(rid, rc, (sysarg_t) page);
Note:
See TracChangeset
for help on using the changeset viewer.