add memobj_has_pager()
This commit is contained in:
@ -184,6 +184,7 @@ int fileobj_create(int fd, struct memobj **objp, int *maxprotp)
|
||||
|
||||
memset(newobj, 0, sizeof(*newobj));
|
||||
newobj->memobj.ops = &fileobj_ops;
|
||||
newobj->memobj.flags = MF_HAS_PAGER;
|
||||
newobj->handle = result.handle;
|
||||
newobj->sref = 1;
|
||||
newobj->cref = 1;
|
||||
|
||||
@ -18,8 +18,15 @@
|
||||
#include <ihk/lock.h>
|
||||
#include <list.h>
|
||||
|
||||
enum {
|
||||
/* for memobj.flags */
|
||||
MF_HAS_PAGER = 0x0001,
|
||||
};
|
||||
|
||||
struct memobj {
|
||||
struct memobj_ops * ops;
|
||||
uint32_t flags;
|
||||
int8_t padding[4];
|
||||
ihk_spinlock_t lock;
|
||||
};
|
||||
|
||||
@ -74,6 +81,11 @@ static inline void memobj_unlock(struct memobj *obj)
|
||||
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);
|
||||
|
||||
#endif /* HEADER_MEMOBJ_H */
|
||||
|
||||
@ -1708,9 +1708,8 @@ SYSCALL_DECLARE(madvise)
|
||||
goto out;
|
||||
}
|
||||
|
||||
#define MEMOBJ_IS_FILEOBJ(obj) ((obj) != NULL)
|
||||
if (!MEMOBJ_IS_FILEOBJ(range->memobj)) {
|
||||
dkprintf("[%d]sys_madvise(%lx,%lx,%x):not fileobj "
|
||||
if (!range->memobj || !memobj_has_pager(range->memobj)) {
|
||||
dkprintf("[%d]sys_madvise(%lx,%lx,%x):has not pager"
|
||||
"[%lx-%lx) %lx\n",
|
||||
ihk_mc_get_processor_id(), start,
|
||||
len0, advice, range->start,
|
||||
|
||||
Reference in New Issue
Block a user