blob: cb010d83dd0342cf9bb6e58f5d48248a6e18a06d [file] [log] [blame] [edit]
// Copyright 2018 The ChromiumOS Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef DIAGNOSTICS_BASE_MOJO_UTILS_H_
#define DIAGNOSTICS_BASE_MOJO_UTILS_H_
#include <string_view>
#include <base/memory/shared_memory_mapping.h>
#include <brillo/brillo_export.h>
#include <mojo/public/cpp/system/handle.h>
namespace diagnostics {
// Allows to get access to the buffer in read only shared memory. It converts
// mojo::Handle to base::ReadOnlySharedMemoryRegion.
//
// |handle| must be a valid mojo handle of the non-empty buffer in the shared
// memory.
//
// Returns invalid |base::ReadOnlySharedMemoryMapping| if error.
BRILLO_EXPORT base::ReadOnlySharedMemoryMapping
GetReadOnlySharedMemoryMappingFromMojoHandle(mojo::ScopedHandle handle);
// Allocates buffer in shared memory, copies |content| to the buffer and
// converts shared buffer handle into |mojo::ScopedHandle|.
//
// Allocated shared memory is read only for another process.
//
// Returns invalid |mojo::ScopedHandle| if error happened or |content| is empty.
BRILLO_EXPORT mojo::ScopedHandle CreateReadOnlySharedMemoryRegionMojoHandle(
std::string_view content);
} // namespace diagnostics
#endif // DIAGNOSTICS_BASE_MOJO_UTILS_H_