• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 // Copyright 2021, The Android Open Source Project
2 //
3 // Licensed under the Apache License, Version 2.0 (the "License");
4 // you may not use this file except in compliance with the License.
5 // You may obtain a copy of the License at
6 //
7 //     http://www.apache.org/licenses/LICENSE-2.0
8 //
9 // Unless required by applicable law or agreed to in writing, software
10 // distributed under the License is distributed on an "AS IS" BASIS,
11 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 // See the License for the specific language governing permissions and
13 // limitations under the License.
14 
15 //! Android Virt Manager
16 
17 mod aidl;
18 mod config;
19 mod crosvm;
20 
21 use crate::aidl::{VirtManager, BINDER_SERVICE_IDENTIFIER};
22 use android_system_virtmanager::aidl::android::system::virtmanager::IVirtManager::BnVirtManager;
23 use android_system_virtmanager::binder::{add_service, BinderFeatures, ProcessState};
24 use log::{info, Level};
25 
26 /// The first CID to assign to a guest VM managed by the Virt Manager. CIDs lower than this are
27 /// reserved for the host or other usage.
28 const FIRST_GUEST_CID: Cid = 10;
29 
30 const LOG_TAG: &str = "VirtManager";
31 
32 /// The unique ID of a VM used (together with a port number) for vsock communication.
33 type Cid = u32;
34 
main()35 fn main() {
36     android_logger::init_once(
37         android_logger::Config::default().with_tag(LOG_TAG).with_min_level(Level::Trace),
38     );
39 
40     let virt_manager = VirtManager::default();
41     let virt_manager = BnVirtManager::new_binder(
42         virt_manager,
43         BinderFeatures { set_requesting_sid: true, ..BinderFeatures::default() },
44     );
45     add_service(BINDER_SERVICE_IDENTIFIER, virt_manager.as_binder()).unwrap();
46     info!("Registered Binder service, joining threadpool.");
47     ProcessState::join_thread_pool();
48 }
49