Line 7: |
Line 7: |
| | | |
| Each service is used by: | | Each service is used by: |
− | * "nvdrv": regular applications | + | * "nvdrv": Applications. |
− | * "nvdrv:a": applets | + | ** [[#Permissions|Permission]] mask is [3.0.0+] 0xA82B ([1.0.0-2.3.0] 0x2B). |
− | * "nvdrv:s": sysmodules | + | * "nvdrv:a": Applets. |
− | * "nvdrv:t": factory titles | + | ** [[#Permissions|Permission]] mask is [3.0.0+] 0x10A9 ([1.0.0-2.3.0] 0xA9). |
| + | * "nvdrv:s": Sysmodules. |
| + | ** [[#Permissions|Permission]] mask is [3.0.0+] 0x439E ([1.0.0-2.3.0] 0x39E). |
| + | * "nvdrv:t": Factory. |
| + | ** [[#Permissions|Permission]] mask is 0xFFFFFFFF. |
| | | |
| {| class="wikitable" border="1" | | {| class="wikitable" border="1" |
Line 109: |
Line 113: |
| | | |
| Official user-processes starting with 3.0.0 now use this at the end of nvdrv service init with value 0x1. | | Official user-processes starting with 3.0.0 now use this at the end of nvdrv service init with value 0x1. |
| + | |
| + | = Permissions = |
| + | Each nvdrv service is initialized with a bitfield that controls access to nodes and other operations. |
| + | |
| + | {| class="wikitable" border="1" |
| + | ! Bits |
| + | ! Description |
| + | |- |
| + | | 0 |
| + | | Can access [[#/dev/nvhost-gpu|/dev/nvhost-gpu]], [[#/dev/nvhost-ctrl-gpu|/dev/nvhost-ctrl-gpu]] and [[#/dev/nvhost-as-gpu|/dev/nvhost-as-gpu]]. |
| + | |- |
| + | | 1 |
| + | | Can access [[#/dev/nvhost-dbg-gpu|/dev/nvhost-dbg-gpu]] and [[#/dev/nvhost-prof-gpu|/dev/nvhost-prof-gpu]]. |
| + | |- |
| + | | 2 |
| + | | Can access [[#/dev/nvsched-ctrl|/dev/nvsched-ctrl]]. |
| + | |- |
| + | | 3 |
| + | | Can access [[#Channels|/dev/nvhost-vic]]. |
| + | |- |
| + | | 4 |
| + | | Can access [[#Channels|/dev/nvhost-msenc]]. |
| + | |- |
| + | | 5 |
| + | | Can access [[#Channels|/dev/nvhost-nvdec]]. |
| + | |- |
| + | | 6 |
| + | | |
| + | |- |
| + | | 7 |
| + | | Can access [[#Channels|/dev/nvhost-nvjpg]]. |
| + | |- |
| + | | 8 |
| + | | Can access [[#Channels|/dev/nvhost-display]], [[#/dev/nvcec-ctrl|/dev/nvcec-ctrl]], [[#/dev/nvhdcp_up-ctrl|/dev/nvhdcp_up-ctrl]], [[#/dev/nvdisp-ctrl|/dev/nvdisp-ctrl]], [[#/dev/nvdisp-disp0, /dev/nvdisp-disp1|/dev/nvdisp-disp0]], [[#/dev/nvdisp-disp0, /dev/nvdisp-disp1|/dev/nvdisp-disp1]], [[#/dev/nvdcutil-disp0, /dev/nvdcutil-disp1|/dev/nvdcutil-disp0]] and [[#/dev/nvdcutil-disp0, /dev/nvdcutil-disp1|/dev/nvdcutil-disp1]]. |
| + | |- |
| + | | 9 |
| + | | |
| + | |- |
| + | | 10 |
| + | | |
| + | |- |
| + | | 11 |
| + | | Can use [[#FinishInitialize|FinishInitialize]]. |
| + | |- |
| + | | 12 |
| + | | |
| + | |- |
| + | | 13 |
| + | | |
| + | |- |
| + | | 14 |
| + | | |
| + | |- |
| + | | 15 |
| + | | |
| + | |- |
| + | | 16-31 |
| + | | Unused. |
| + | |} |
| + | |
| + | Nodes [[#/dev/nvmap|/dev/nvmap]], [[#/dev/nvhost-ctrl|/dev/nvhost-ctrl]] and [[#/dev/nverpt-ctrl|/dev/nverpt-ctrl]] are always accessible. |
| | | |
| = Ioctls = | | = Ioctls = |