blob: 688ced6dfffa0be1f91ffe0fef2a866a981395b4 [file] [log] [blame] [edit]
// Copyright 2022 Google LLC
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// https://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
// Cantrip OS ProcessManager services.
import <LoggerInterface.camkes>;
import <MemoryInterface.camkes>;
import <PackageManagementInterface.camkes>;
import <ProcessControlInterface.camkes>;
import <SecurityCoordinatorInterface.camkes>;
import <SDKManagerInterface.camkes>;
component ProcessManager {
provides PackageManagementInterface pkg_mgmt;
provides ProcessControlInterface proc_ctrl;
maybe uses LoggerInterface logger;
uses MemoryInterface memory;
uses SecurityCoordinatorInterface security;
uses SDKManagerInterface sdk_manager;
// Enable CantripOS CAmkES support.
attribute int cantripos = true;
// Process creation requires enough slots to hold dynamically
// allocated memory when constructing the application. This
// can be multiple megabytes so size for 4MB / 4KB pages.
attribute int cnode_headroom = 1024;
// Arrange for global objects to be instantiated in our CSpace
// (typically by moving them from the rootserver). Capabilities
// are exposed with global static symbols.
attribute int asid_pool = true; // ASID_POOL
attribute int sched_ctrl = true; // SCHED_CTRL
attribute int domain_ctrl = true; // DOMANI_CTRL
// Copyregions for loading bundle images and for loading an application.
// These need to be separate because they are used concurrently.
has copyregion BUNDLE_IMAGE;
has copyregion LOAD_APPLICATION;
}