| // Copyright 2019 The Fuchsia Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| // TODO(fxb/39732): This should be read as "library zx". |
| library zz; |
| |
| enum ProfileInfoType { |
| ZX_PROFILE_INFO_SCHEDULER = 1; |
| }; |
| |
| union ProfileScheduler { |
| 1: int32 priority; |
| 2: uint32 boost; |
| 3: uint32 deboost; |
| 4: uint32 quantum; |
| }; |
| |
| const int32 ZX_PRIORITY_LOWEST = 0; |
| const int32 ZX_PRIORITY_LOW = 8; |
| const int32 ZX_PRIORITY_DEFAULT = 16; |
| const int32 ZX_PRIORITY_HIGH = 24; |
| const int32 ZX_PRIORITY_HIGHEST = 31; |
| |
| union ProfileInfoData { |
| 1: ProfileScheduler scheduler; |
| }; |
| |
| struct ProfileInfo { |
| ProfileInfoType type; |
| // TODO(scottmg): This needs to be presented as an unnamed union in C, and |
| // ProfileInfoData doesn't really need a name. Not sure if the semantics of |
| // fidl unions make sense here. |
| ProfileInfoData unnamed; |
| }; |
| |
| [Transport = "Syscall"] |
| protocol profile { |
| /// Create a scheduler profile. |
| /// Rights: root_job must be of type ZX_OBJ_TYPE_JOB and have ZX_RIGHT_MANAGE_PROCESS. |
| profile_create(handle<job> root_job, uint32 options, ProfileInfo profile) |
| -> (status status, handle<profile> out); |
| }; |