Changes

Jump to navigation Jump to search
271 bytes removed ,  00:26, 3 September 2017
Line 161: Line 161:     
== Permissions ==
 
== Permissions ==
Each time permissions are checked, the [[#fsp-pr|process-obj]] is loaded using the session PID, then a func is called with the permissions-type. The func retval is checked, then the permissions [[Error_codes|error]] is thrown if needed.
+
Every time permissions are checked, the process registration [[#fsp-pr]] is loaded using the session processID. The permission data is populated with data from the [[NPDM]],
   −
Internally in that process-obj load func, it will load the obj as normal when the PID is >6, otherwise it will use a fixed obj. If not done already, that fixed obj will be initialized using fixed input data, via the same code used internally by [[#fsp-pr]].
+
If the processID is <= 6 (which happens only for built-in sysmodules), it will use a hardcoded registration data.
   −
In general this func uses the input permissions-type to determine what mask value to use. That value is masked with the [[NPDM|permissions]] from the above process-obj. When the result is 0, 0 is returned, otherwise non-zero is returned. The default non-zero retval is basically 0x3.
+
Note that the functions check whether or not at least one bit is set in the mask. This means that, you don't need to set 0xFFFFFFFFFFFFFFFF to get all permissions: it suffices to set 0x8000000000000000.
   −
Panic is triggered when the input type is >{max value} / invalid.
+
If the code were to request an invalid input type, panic. But this never happens.
   −
Func0:
+
=== RwPermissions ===
 
{| class="wikitable" border="1"
 
{| class="wikitable" border="1"
 
|-
 
|-
Line 209: Line 209:  
|}
 
|}
   −
Func1(non-zero retval is always 0x1):
+
=== BoolPermissions ===
 
{| class="wikitable" border="1"
 
{| class="wikitable" border="1"
 
|-
 
|-

Navigation menu