| // Copyright 2020 The Fuchsia Authors | |
| // | |
| // Use of this source code is governed by a MIT-style | |
| // license that can be found in the LICENSE file or at | |
| // https://opensource.org/licenses/MIT | |
| #include <object/executor.h> | |
| void Executor::Init() { | |
| // Create root job. | |
| root_job_ = JobDispatcher::CreateRootJob(); | |
| // Create handle. | |
| root_job_handle_ = | |
| Handle::Make(KernelHandle<JobDispatcher>{root_job_}, JobDispatcher::default_rights()); | |
| ASSERT(root_job_handle_ != nullptr); | |
| } | |
| void Executor::StartRootJobObserver() { | |
| ASSERT(root_job_observer_.get() == nullptr); | |
| DEBUG_ASSERT(root_job_.get() != nullptr); | |
| fbl::AllocChecker ac; | |
| root_job_observer_ = ktl::make_unique<RootJobObserver>(&ac, root_job_, root_job_handle_.get()); | |
| if (!ac.check()) { | |
| panic("root-job: failed to allocate observer\n"); | |
| } | |
| // Initialize the memory watchdog. | |
| memory_watchdog_.Init(this); | |
| } |