#ifndef BASE_THREADING_PLATFORM_THREAD_INTERNAL_POSIX_H_
#define BASE_THREADING_PLATFORM_THREAD_INTERNAL_POSIX_H_
#include <optional>
#include "base/base_export.h"
#include "base/threading/platform_thread.h"
#include "build/build_config.h"
namespace base {
namespace internal {
struct ThreadTypeToNiceValuePairForTest {
ThreadType priority;
int nice_value;
};
extern const ThreadTypeToNiceValuePairForTest
kThreadTypeToNiceValueMapForTest[7];
int ThreadTypeToNiceValue(ThreadType thread_type);
bool CanSetThreadTypeToRealtimeAudio();
#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)
BASE_EXPORT void InvalidateTidCache();
#endif
ThreadType NiceValueToThreadTypeForTest(int nice_value);
std::optional<ThreadType> GetCurrentEffectiveThreadTypeForPlatformForTest();
int GetCurrentThreadNiceValue();
int GetThreadNiceValue(PlatformThreadId id);
bool SetThreadNiceFromType(PlatformThreadId thread_id, ThreadType thread_type);
#if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || BUILDFLAG(IS_OHOS)
void SetThreadTypeLinux(ProcessId process_id,
PlatformThreadId thread_id,
ThreadType thread_type,
IsViaIPC via_ipc);
#endif
#if BUILDFLAG(IS_CHROMEOS)
void SetThreadTypeChromeOS(ProcessId process_id,
PlatformThreadId thread_id,
ThreadType thread_type,
IsViaIPC via_ipc);
#endif
#if BUILDFLAG(IS_CHROMEOS)
inline constexpr auto SetThreadType = SetThreadTypeChromeOS;
#elif BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_OHOS)
inline constexpr auto SetThreadType = SetThreadTypeLinux;
#endif
}
}
#endif