fix:remove redundant code

Change-Id: I8662952ac9d7912aaf2e2e72f779b3def41d14c4
This commit is contained in:
mucor
2021-04-27 10:40:01 +08:00
parent 34f35524aa
commit aa34ffe7c7
5 changed files with 5 additions and 461 deletions

View File

@@ -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;