kernel/process_capability: Handle kernel version capability flags
This commit is contained in:
		
							parent
							
								
									010bc677f3
								
							
						
					
					
						commit
						e0e84aede0
					
				@ -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;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
@ -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.
 | 
				
			||||||
    ///
 | 
					    ///
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
		Reference in New Issue
	
	Block a user