blob: 67f3f419dfa8f07b9819c0b3cc6169d1801b891b [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.
#include "scheduler_profile.h"
#include <stdio.h>
#include <string.h>
#include <lib/fdio/directory.h>
#include <lib/zx/channel.h>
#include <lib/zx/profile.h>
#include <fuchsia/scheduler/c/fidl.h>
namespace devmgr {
zx_handle_t scheduler_profile_provider;
zx_status_t devhost_connect_scheduler_profile_provider() {
zx::channel registry_client;
zx::channel registry_service;
zx_status_t status = zx::channel::create(0u, &registry_client, &registry_service);
if (status != ZX_OK)
return status;
status = fdio_service_connect("/svc/" fuchsia_scheduler_ProfileProvider_Name,
registry_service.release());
if (status != ZX_OK)
return status;
scheduler_profile_provider = registry_client.release();
return ZX_OK;
}
zx_status_t devhost_get_scheduler_profile(uint32_t priority, const char* name,
zx_handle_t* profile) {
zx_status_t fidl_status = ZX_ERR_INTERNAL;
zx_status_t status = fuchsia_scheduler_ProfileProviderGetProfile(
scheduler_profile_provider, priority, name, strlen(name), &fidl_status, profile);
if (status != ZX_OK) {
return status;
}
if (fidl_status != ZX_OK) {
return fidl_status;
}
return ZX_OK;
}
} // namespace devmgr