kernel: added new prctl CMD_GET_MANAGER_UID to get the uid of the crowned manager

manager: show crowned manager uid in infocard when developer options is enabled
This commit is contained in:
Rifat Azad
2025-06-30 14:19:07 +06:00
parent 98b9863041
commit 4e3f06d405
7 changed files with 48 additions and 1 deletions
@@ -28,6 +28,9 @@ object Natives {
// 12569: support get hook mode
const val MINIMAL_SUPPORTED_HOOK_MODE = 12569
// 12750: support get manager UID
const val MINIMAL_SUPPORTED_MANAGER_UID = 12751
const val KERNEL_SU_DOMAIN = "u:r:su:s0"
const val ROOT_UID = 0
@@ -54,6 +57,12 @@ object Natives {
external fun uidShouldUmount(uid: Int): Boolean
/**
* Get the UID of the current root manager.
* @return manager UID, or -1 if unavailable.
*/
external fun getManagerUid(): Int
/**
* Get a string indicating the SU hook mode enabled in kernel.
* The return values are:
@@ -550,6 +550,8 @@ private fun InfoCard(autoExpand: Boolean = false) {
var expanded by rememberSaveable { mutableStateOf(false) }
val developerOptionsEnabled = prefs.getBoolean("enable_developer_options", false)
LaunchedEffect(autoExpand) {
if (autoExpand) {
expanded = true
@@ -598,7 +600,14 @@ private fun InfoCard(autoExpand: Boolean = false) {
val managerVersion = getManagerVersion(context)
InfoCardItem(
label = stringResource(R.string.home_manager_version),
content = "${managerVersion.first} (${managerVersion.second})",
content = if (
developerOptionsEnabled &&
Natives.version >= Natives.MINIMAL_SUPPORTED_MANAGER_UID
) {
"${managerVersion.first} (${managerVersion.second}) | UID: ${Natives.getManagerUid()}"
} else {
"${managerVersion.first} (${managerVersion.second})"
},
icon = painterResource(R.drawable.ic_ksu_next),
)