mirror of
https://github.com/drasko/codezero.git
synced 2026-01-12 02:43:15 +01:00
Moved vnum to priv_data of vm_file since its only related to vfs files.
This commit is contained in:
@@ -17,5 +17,6 @@ int sys_read(l4id_t sender, int fd, void *buf, int count);
|
||||
int sys_write(l4id_t sender, int fd, void *buf, int count);
|
||||
int sys_lseek(l4id_t sender, int fd, off_t offset, int whence);
|
||||
|
||||
#define vm_file_to_vnum(f) (*(unsigned long *)((f)->priv_data))
|
||||
extern struct list_head vm_file_list;
|
||||
#endif /* __MM0_FILE_H__ */
|
||||
|
||||
@@ -130,7 +130,6 @@ struct vm_object {
|
||||
|
||||
/* In memory representation of either a vfs file, a device. */
|
||||
struct vm_file {
|
||||
unsigned long vnum;
|
||||
unsigned long length;
|
||||
unsigned int type;
|
||||
struct list_head list;
|
||||
|
||||
@@ -13,6 +13,7 @@
|
||||
#include <l4/api/kip.h>
|
||||
#include <posix/sys/types.h>
|
||||
#include <string.h>
|
||||
#include <file.h>
|
||||
|
||||
/* List of all generic files */
|
||||
LIST_HEAD(vm_file_list);
|
||||
@@ -92,7 +93,7 @@ int vfs_receive_sys_open(l4id_t sender, l4id_t opener, int fd,
|
||||
|
||||
/* Check if that vm_file is already in the list */
|
||||
list_for_each_entry(vmfile, &vm_file_list, list) {
|
||||
if (vmfile->vnum == vnum) {
|
||||
if (vm_file_to_vnum(vmfile) == vnum) {
|
||||
/* Add a reference to it from the task */
|
||||
t->fd[fd].vmfile = vmfile;
|
||||
vmfile->vm_obj.refcnt++;
|
||||
@@ -105,7 +106,7 @@ int vfs_receive_sys_open(l4id_t sender, l4id_t opener, int fd,
|
||||
return (int)vmfile;
|
||||
|
||||
/* Initialise and add it to global list */
|
||||
vmfile->vnum = vnum;
|
||||
vm_file_to_vnum(vmfile) = vnum;
|
||||
vmfile->length = length;
|
||||
vmfile->vm_obj.pager = &file_pager;
|
||||
list_add(&vmfile->vm_obj.list, &vm_file_list);
|
||||
@@ -172,7 +173,7 @@ int read_file_pages(struct vm_file *vmfile, unsigned long pfn_start,
|
||||
if (IS_ERR(page)) {
|
||||
printf("%s: %s:Could not read page %d "
|
||||
"from file with vnum: 0x%x\n", __TASKNAME__,
|
||||
__FUNCTION__, f_offset, vmfile->vnum);
|
||||
__FUNCTION__, f_offset, vm_file_to_vnum(vmfile));
|
||||
return (int)page;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -88,7 +88,8 @@ struct page *file_page_in(struct vm_object *vm_obj, unsigned long page_offset)
|
||||
l4_map(paddr, vaddr, 1, MAP_USR_RW_FLAGS, VFS_TID);
|
||||
|
||||
/* Syscall to vfs to read into the page. */
|
||||
if ((err = vfs_read(f->vnum, page_offset, 1, vaddr)) < 0)
|
||||
if ((err = vfs_read(vm_file_to_vnum(f), page_offset,
|
||||
1, vaddr)) < 0)
|
||||
goto out_err;
|
||||
|
||||
/* Unmap it from vfs */
|
||||
|
||||
Reference in New Issue
Block a user