fix:remove redundant code
Change-Id: I8662952ac9d7912aaf2e2e72f779b3def41d14c4
This commit is contained in:
@@ -123,149 +123,6 @@ VOID OsDeletePageCacheLru(LosFilePage *page)
|
||||
OsPageCacheDel(page);
|
||||
}
|
||||
|
||||
#if VFS_IMPL_LATER
|
||||
STATIC LosFilePage *OsPagecacheGetPageAndFill(struct file *filp, VM_OFFSET_T pgOff, size_t *readSize, VADDR_T *kvaddr)
|
||||
{
|
||||
LosFilePage *page = NULL;
|
||||
struct page_mapping *mapping = filp->f_mapping;
|
||||
|
||||
page = OsFindGetEntry(mapping, pgOff);
|
||||
if (page != NULL) {
|
||||
OsSetPageLocked(page->vmPage);
|
||||
OsPageRefIncLocked(page);
|
||||
*kvaddr = (VADDR_T)(UINTPTR)OsVmPageToVaddr(page->vmPage);
|
||||
*readSize = PAGE_SIZE;
|
||||
} else {
|
||||
page = OsPageCacheAlloc(mapping, pgOff);
|
||||
if (page == NULL) {
|
||||
VM_ERR("Failed to alloc a page frame");
|
||||
return page;
|
||||
}
|
||||
OsSetPageLocked(page->vmPage);
|
||||
*kvaddr = (VADDR_T)(UINTPTR)OsVmPageToVaddr(page->vmPage);
|
||||
|
||||
file_seek(filp, pgOff << PAGE_SHIFT, SEEK_SET);
|
||||
/* "ReadPage" func exists definitely in this procedure */
|
||||
*readSize = filp->f_vnode->u.i_mops->readpage(filp, (char *)(UINTPTR)*kvaddr, PAGE_SIZE);
|
||||
if (*readSize == 0) {
|
||||
VM_ERR("read 0 bytes");
|
||||
OsCleanPageLocked(page->vmPage);
|
||||
}
|
||||
OsAddToPageacheLru(page, mapping, pgOff);
|
||||
}
|
||||
|
||||
return page;
|
||||
}
|
||||
|
||||
|
||||
ssize_t OsMappingRead(struct file *filp, char *buf, size_t size)
|
||||
{
|
||||
INT32 ret;
|
||||
vaddr_t kvaddr = 0;
|
||||
UINT32 intSave;
|
||||
struct stat bufStat;
|
||||
size_t readSize = 0;
|
||||
size_t readTotal = 0;
|
||||
size_t readLeft = size;
|
||||
LosFilePage *page = NULL;
|
||||
VM_OFFSET_T pos = file_seek(filp, 0, SEEK_CUR);
|
||||
VM_OFFSET_T pgOff = pos >> PAGE_SHIFT;
|
||||
INT32 offInPage = pos % PAGE_SIZE;
|
||||
struct page_mapping *mapping = filp->f_mapping;
|
||||
INT32 nPages = (ROUNDUP(pos + size, PAGE_SIZE) - ROUNDDOWN(pos, PAGE_SIZE)) >> PAGE_SHIFT;
|
||||
|
||||
ret = stat(filp->f_path, &bufStat);
|
||||
if (ret != OK) {
|
||||
VM_ERR("Get file size failed. (filepath=%s)", filp->f_path);
|
||||
return 0;
|
||||
}
|
||||
|
||||
if (pos >= bufStat.st_size) {
|
||||
PRINT_INFO("%s filp->f_pos >= bufStat.st_size (pos=%ld, fileSize=%ld)\n", filp->f_path, pos, bufStat.st_size);
|
||||
return 0;
|
||||
}
|
||||
|
||||
LOS_SpinLockSave(&mapping->list_lock, &intSave);
|
||||
|
||||
for (INT32 i = 0; (i < nPages) && readLeft; i++, pgOff++) {
|
||||
page = OsPagecacheGetPageAndFill(filp, pgOff, &readSize, &kvaddr);
|
||||
if ((page == NULL) || (readSize == 0)) {
|
||||
break;
|
||||
}
|
||||
if (readSize < PAGE_SIZE) {
|
||||
readLeft = readSize;
|
||||
}
|
||||
|
||||
readSize = MIN2((PAGE_SIZE - offInPage), readLeft);
|
||||
|
||||
(VOID)memcpy_s((VOID *)buf, readLeft, (char *)(UINTPTR)kvaddr + offInPage, readSize);
|
||||
buf += readSize;
|
||||
readLeft -= readSize;
|
||||
readTotal += readSize;
|
||||
|
||||
offInPage = 0;
|
||||
|
||||
OsCleanPageLocked(page->vmPage);
|
||||
}
|
||||
|
||||
LOS_SpinUnlockRestore(&mapping->list_lock, intSave);
|
||||
file_seek(filp, pos + readTotal, SEEK_SET);
|
||||
|
||||
return readTotal;
|
||||
}
|
||||
#endif
|
||||
|
||||
ssize_t OsMappingWrite(struct file *filp, const char *buf, size_t size)
|
||||
{
|
||||
VADDR_T kvaddr;
|
||||
UINT32 intSave;
|
||||
INT32 writeSize = 0;
|
||||
size_t writeLeft = size;
|
||||
VM_OFFSET_T pos = file_seek(filp, 0, SEEK_CUR);
|
||||
VM_OFFSET_T pgOff = pos >> PAGE_SHIFT;
|
||||
INT32 offInPage = pos % PAGE_SIZE;
|
||||
LosFilePage *page = NULL;
|
||||
struct page_mapping *mapping = filp->f_mapping;
|
||||
INT32 nPages = (ROUNDUP(pos + size, PAGE_SIZE) - ROUNDDOWN(pos, PAGE_SIZE)) >> PAGE_SHIFT;
|
||||
|
||||
LOS_SpinLockSave(&mapping->list_lock, &intSave);
|
||||
|
||||
for (INT32 i = 0; i < nPages; i++, pgOff++) {
|
||||
page = OsFindGetEntry(mapping, pgOff);
|
||||
if (page) {
|
||||
kvaddr = (VADDR_T)(UINTPTR)OsVmPageToVaddr(page->vmPage);
|
||||
OsSetPageLocked(page->vmPage);
|
||||
OsPageRefIncLocked(page);
|
||||
} else {
|
||||
page = OsPageCacheAlloc(mapping, pgOff);
|
||||
if (page == NULL) {
|
||||
VM_ERR("Failed to alloc a page frame");
|
||||
break;
|
||||
}
|
||||
kvaddr = (VADDR_T)(UINTPTR)OsVmPageToVaddr(page->vmPage);
|
||||
OsAddToPageacheLru(page, mapping, pgOff);
|
||||
OsSetPageLocked(page->vmPage);
|
||||
}
|
||||
|
||||
writeSize = MIN2((PAGE_SIZE - offInPage), writeLeft);
|
||||
|
||||
(VOID)memcpy_s((char *)(UINTPTR)kvaddr + offInPage, writeLeft, buf, writeSize);
|
||||
buf += writeSize;
|
||||
writeLeft -= writeSize;
|
||||
|
||||
OsMarkPageDirty(page, NULL, offInPage, writeSize);
|
||||
|
||||
offInPage = 0;
|
||||
|
||||
OsCleanPageLocked(page->vmPage);
|
||||
}
|
||||
|
||||
LOS_SpinUnlockRestore(&mapping->list_lock, intSave);
|
||||
|
||||
file_seek(filp, pos + size - writeLeft, SEEK_SET);
|
||||
return (size - writeLeft);
|
||||
}
|
||||
|
||||
STATIC VOID OsPageCacheUnmap(LosFilePage *fpage, LosArchMmu *archMmu, VADDR_T vaddr)
|
||||
{
|
||||
UINT32 intSave;
|
||||
|
||||
Reference in New Issue
Block a user