mirror of
https://github.com/RGBCube/serenity
synced 2025-05-28 11:25:09 +00:00
Kernel: Add MADV_GET_VOLATILE for checking the volatile flag
Sometimes you might want to know if a purgeable region is volatile.
This commit is contained in:
parent
1ad5568759
commit
487f9b373b
3 changed files with 8 additions and 0 deletions
|
@ -363,6 +363,12 @@ int Process::sys$madvise(void* address, size_t size, int advice)
|
||||||
vmobject.set_was_purged(false);
|
vmobject.set_was_purged(false);
|
||||||
return was_purged ? 1 : 0;
|
return was_purged ? 1 : 0;
|
||||||
}
|
}
|
||||||
|
if (advice & MADV_GET_VOLATILE) {
|
||||||
|
if (!region->vmobject().is_purgeable())
|
||||||
|
return -EPERM;
|
||||||
|
auto& vmobject = static_cast<PurgeableVMObject&>(region->vmobject());
|
||||||
|
return vmobject.is_volatile() ? 0 : 1;
|
||||||
|
}
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -36,6 +36,7 @@
|
||||||
|
|
||||||
#define MADV_SET_VOLATILE 0x100
|
#define MADV_SET_VOLATILE 0x100
|
||||||
#define MADV_SET_NONVOLATILE 0x200
|
#define MADV_SET_NONVOLATILE 0x200
|
||||||
|
#define MADV_GET_VOLATILE 0x400
|
||||||
|
|
||||||
#define F_DUPFD 0
|
#define F_DUPFD 0
|
||||||
#define F_GETFD 1
|
#define F_GETFD 1
|
||||||
|
|
|
@ -20,6 +20,7 @@
|
||||||
|
|
||||||
#define MADV_SET_VOLATILE 0x100
|
#define MADV_SET_VOLATILE 0x100
|
||||||
#define MADV_SET_NONVOLATILE 0x200
|
#define MADV_SET_NONVOLATILE 0x200
|
||||||
|
#define MADV_GET_VOLATILE 0x400
|
||||||
|
|
||||||
__BEGIN_DECLS
|
__BEGIN_DECLS
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue