add memobj_has_pager()

This commit is contained in:
NAKAMURA Gou
2014-07-03 12:06:29 +09:00
parent d59628e131
commit 9efb5e4fc5
3 changed files with 15 additions and 3 deletions

View File

@ -184,6 +184,7 @@ int fileobj_create(int fd, struct memobj **objp, int *maxprotp)
memset(newobj, 0, sizeof(*newobj)); memset(newobj, 0, sizeof(*newobj));
newobj->memobj.ops = &fileobj_ops; newobj->memobj.ops = &fileobj_ops;
newobj->memobj.flags = MF_HAS_PAGER;
newobj->handle = result.handle; newobj->handle = result.handle;
newobj->sref = 1; newobj->sref = 1;
newobj->cref = 1; newobj->cref = 1;

View File

@ -18,8 +18,15 @@
#include <ihk/lock.h> #include <ihk/lock.h>
#include <list.h> #include <list.h>
enum {
/* for memobj.flags */
MF_HAS_PAGER = 0x0001,
};
struct memobj { struct memobj {
struct memobj_ops * ops; struct memobj_ops * ops;
uint32_t flags;
int8_t padding[4];
ihk_spinlock_t lock; ihk_spinlock_t lock;
}; };
@ -74,6 +81,11 @@ static inline void memobj_unlock(struct memobj *obj)
ihk_mc_spinlock_unlock_noirq(&obj->lock); ihk_mc_spinlock_unlock_noirq(&obj->lock);
} }
static inline int memobj_has_pager(struct memobj *obj)
{
return !!(obj->flags & MF_HAS_PAGER);
}
int fileobj_create(int fd, struct memobj **objp, int *maxprotp); int fileobj_create(int fd, struct memobj **objp, int *maxprotp);
#endif /* HEADER_MEMOBJ_H */ #endif /* HEADER_MEMOBJ_H */

View File

@ -1708,9 +1708,8 @@ SYSCALL_DECLARE(madvise)
goto out; goto out;
} }
#define MEMOBJ_IS_FILEOBJ(obj) ((obj) != NULL) if (!range->memobj || !memobj_has_pager(range->memobj)) {
if (!MEMOBJ_IS_FILEOBJ(range->memobj)) { dkprintf("[%d]sys_madvise(%lx,%lx,%x):has not pager"
dkprintf("[%d]sys_madvise(%lx,%lx,%x):not fileobj "
"[%lx-%lx) %lx\n", "[%lx-%lx) %lx\n",
ihk_mc_get_processor_id(), start, ihk_mc_get_processor_id(), start,
len0, advice, range->start, len0, advice, range->start,