blob: c808f4d10b2f5145c1373fdea4fdd01bfa1cfe5c [file] [log] [blame]
// 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);
};