1*e51878c1SAndroid Build Coastguard Worker // Copyright (C) 2021 The Android Open Source Project 2*e51878c1SAndroid Build Coastguard Worker // 3*e51878c1SAndroid Build Coastguard Worker // Licensed under the Apache License, Version 2.0 (the "License"); 4*e51878c1SAndroid Build Coastguard Worker // you may not use this file except in compliance with the License. 5*e51878c1SAndroid Build Coastguard Worker // You may obtain a copy of the License at 6*e51878c1SAndroid Build Coastguard Worker // 7*e51878c1SAndroid Build Coastguard Worker // http://www.apache.org/licenses/LICENSE-2.0 8*e51878c1SAndroid Build Coastguard Worker // 9*e51878c1SAndroid Build Coastguard Worker // Unless required by applicable law or agreed to in writing, software 10*e51878c1SAndroid Build Coastguard Worker // distributed under the License is distributed on an "AS IS" BASIS, 11*e51878c1SAndroid Build Coastguard Worker // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12*e51878c1SAndroid Build Coastguard Worker // See the License for the specific language governing permissions and 13*e51878c1SAndroid Build Coastguard Worker // limitations under the License. 14*e51878c1SAndroid Build Coastguard Worker 15*e51878c1SAndroid Build Coastguard Worker //! Provides utilities for Android user ids. 16*e51878c1SAndroid Build Coastguard Worker 17*e51878c1SAndroid Build Coastguard Worker pub use cutils_bindgen::AID_KEYSTORE; 18*e51878c1SAndroid Build Coastguard Worker pub use cutils_bindgen::AID_ROOT; 19*e51878c1SAndroid Build Coastguard Worker pub use cutils_bindgen::AID_SHELL; 20*e51878c1SAndroid Build Coastguard Worker pub use cutils_bindgen::AID_SYSTEM; 21*e51878c1SAndroid Build Coastguard Worker pub use cutils_bindgen::AID_USER_OFFSET; 22*e51878c1SAndroid Build Coastguard Worker 23*e51878c1SAndroid Build Coastguard Worker /// Gets the user id from a uid. multiuser_get_user_id(uid: u32) -> u3224*e51878c1SAndroid Build Coastguard Workerpub fn multiuser_get_user_id(uid: u32) -> u32 { 25*e51878c1SAndroid Build Coastguard Worker uid / AID_USER_OFFSET 26*e51878c1SAndroid Build Coastguard Worker } 27*e51878c1SAndroid Build Coastguard Worker 28*e51878c1SAndroid Build Coastguard Worker /// Gets the app id from a uid. multiuser_get_app_id(uid: u32) -> u3229*e51878c1SAndroid Build Coastguard Workerpub fn multiuser_get_app_id(uid: u32) -> u32 { 30*e51878c1SAndroid Build Coastguard Worker uid % AID_USER_OFFSET 31*e51878c1SAndroid Build Coastguard Worker } 32*e51878c1SAndroid Build Coastguard Worker 33*e51878c1SAndroid Build Coastguard Worker /// Gets the uid from a user id and app id. multiuser_get_uid(user_id: u32, app_id: u32) -> u3234*e51878c1SAndroid Build Coastguard Workerpub fn multiuser_get_uid(user_id: u32, app_id: u32) -> u32 { 35*e51878c1SAndroid Build Coastguard Worker (user_id * AID_USER_OFFSET) + (app_id % AID_USER_OFFSET) 36*e51878c1SAndroid Build Coastguard Worker } 37