profile - scheduling configuration
A profile allows a set of high level scheduling priorities to be defined and later applied to one or more threads. Each profile object defines a scheduling configuration (though currently only thread priority is implemented). Once created, the profile can be applied to one or more threads, which will then adopt those settings.
Profile objects define a high level scheduling policy that can be applied to threads. For example, an “audio processing” profile could be created with a high scheduling priority, and then be applied to threads in media playback jobs. Alternatively, a “background” profile could be created with a low scheduling priority, and then be applied to threads in non-interactive jobs.
Policy objects are created with the zx_profile_create()
syscall, passing in a scheduling configuration. The returned profile may then be applied to one or more threads using the zx_object_set_profile()
syscall.
Because profiles give significant control of the behaviour of the kernel scheduler, creating a profile requires the root resource. Once created, profiles may be delegated freely, however.
Currently, only a single scheduler parameter scheduler.priority
is supported, which determines the priority of the thread used by Zircon's kernel scheduler. zx_profile_create()
describes how to construct a profile object with a custom scheduler priority.
zx_profile_create()
- create a new profile objectzx_object_set_profile()
- apply a profile to a thread