kernel/process_capability: Handle kernel version capability flags
This commit is contained in:
		| @@ -315,7 +315,19 @@ ResultCode ProcessCapabilities::HandleProgramTypeFlags(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; | ||||
| } | ||||
|  | ||||
|   | ||||
| @@ -155,6 +155,11 @@ public: | ||||
|         return program_type; | ||||
|     } | ||||
|  | ||||
|     /// Gets the kernel version value. | ||||
|     u32 GetKernelVersion() const { | ||||
|         return kernel_version; | ||||
|     } | ||||
|  | ||||
| private: | ||||
|     /// Attempts to parse a given sequence of capability descriptors. | ||||
|     /// | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 Lioncash
					Lioncash