kernel/process_capability: Handle kernel version capability flags

This commit is contained in:
Lioncash 2018-12-19 21:28:44 -05:00
parent 010bc677f3
commit e0e84aede0
2 changed files with 18 additions and 1 deletions

View file

@ -315,7 +315,19 @@ ResultCode ProcessCapabilities::HandleProgramTypeFlags(u32 flags) {
} }
ResultCode ProcessCapabilities::HandleKernelVersionFlags(u32 flags) { ResultCode ProcessCapabilities::HandleKernelVersionFlags(u32 flags) {
// TODO: Implement // Yes, the internal member variable is checked in the actual kernel here.
// This might look odd for options that are only allowed to be initialized
// just once, however the kernel has a separate initialization function for
// kernel processes and userland processes. The kernel variant sets this
// member variable ahead of time.
const u32 major_version = kernel_version >> 19;
if (major_version != 0 || flags < 0x80000) {
return ERR_INVALID_CAPABILITY_DESCRIPTOR;
}
kernel_version = flags;
return RESULT_SUCCESS; return RESULT_SUCCESS;
} }

View file

@ -155,6 +155,11 @@ public:
return program_type; return program_type;
} }
/// Gets the kernel version value.
u32 GetKernelVersion() const {
return kernel_version;
}
private: private:
/// Attempts to parse a given sequence of capability descriptors. /// Attempts to parse a given sequence of capability descriptors.
/// ///