Hash :
27593e05
Author :
Date :
2015-09-15T08:19:09
Implement missing util/ functions on Mac SetLowPriorityProcess's implementation can be shared between Mac and Linux so even though it isn't using a Posix API, it lives in the posix file. CreateOSPixmap needed to be implemented but will never be used by dEQP as our Mac EGL backend doesn't expose configs supporting pixmaps. Reland with a Linux compilation fix (forgot to delete SetLowPriorityProcess). BUG=angleproject:891 Change-Id: If8145501e1787d08d82402a6baa60a5404cac6b1 Reviewed-on: https://chromium-review.googlesource.com/299773 Tested-by: Corentin Wallez <cwallez@chromium.org> Reviewed-by: Geoff Lang <geofflang@chromium.org>
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42
//
// Copyright (c) 2015 The ANGLE Project Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
//
// Linux_system_utils.cpp: Implementation of OS-specific functions for Linux
#include "system_utils.h"
#include <sys/stat.h>
#include <sys/time.h>
#include <sys/types.h>
#include <unistd.h>
namespace angle
{
std::string GetExecutablePath()
{
// We cannot use lstat to get the size of /proc/self/exe as it always returns 0
// so we just use a big buffer and hope the path fits in it.
char path[4096];
ssize_t result = readlink("/proc/self/exe", path, sizeof(path) - 1);
if (result < 0 || static_cast<size_t>(result) >= sizeof(path) - 1)
{
return "";
}
path[result] = '\0';
return path;
}
std::string GetExecutableDirectory()
{
std::string executablePath = GetExecutablePath();
size_t lastPathSepLoc = executablePath.find_last_of("/");
return (lastPathSepLoc != std::string::npos) ? executablePath.substr(0, lastPathSepLoc) : "";
}
} // namespace angle