mirror of
https://github.com/InstanceBrick/nightcap.git
synced 2026-10-23 14:01:15 +02:00
Improve chimera support
This commit is contained in:
1 parent
3e6f63ea93
commit
aa31cdf395
8 files changed
+44
-17
No files matched your search
@@ -14,16 +14,16 @@ namespace mocktail::compat {
|
|||||||
// Android uses size_t fields here; glibc uses int and musl has no equivalent.
|
// Android uses size_t fields here; glibc uses int and musl has no equivalent.
|
||||||
// An all-zero fallback means unknown, not zero usage.
|
// An all-zero fallback means unknown, not zero usage.
|
||||||
struct BionicMallinfoSnapshot {
|
struct BionicMallinfoSnapshot {
|
||||||
size_t arena = 0;
|
size_t arena;
|
||||||
size_t ordblks = 0;
|
size_t ordblks;
|
||||||
size_t smblks = 0;
|
size_t smblks;
|
||||||
size_t hblks = 0;
|
size_t hblks;
|
||||||
size_t hblkhd = 0;
|
size_t hblkhd;
|
||||||
size_t usmblks = 0;
|
size_t usmblks;
|
||||||
size_t fsmblks = 0;
|
size_t fsmblks;
|
||||||
size_t uordblks = 0;
|
size_t uordblks;
|
||||||
size_t fordblks = 0;
|
size_t fordblks;
|
||||||
size_t keepcost = 0;
|
size_t keepcost;
|
||||||
};
|
};
|
||||||
|
|
||||||
struct BionicLocaleState;
|
struct BionicLocaleState;
|
||||||
|
|||||||
@@ -323,8 +323,13 @@ int BionicStrError(int error_number, char* buffer,
|
|||||||
::strerror_r(error_number, host_buffer.data(), host_buffer.size());
|
::strerror_r(error_number, host_buffer.data(), host_buffer.size());
|
||||||
const char* message = HostStrErrorResult(host_result, host_buffer.data());
|
const char* message = HostStrErrorResult(host_result, host_buffer.data());
|
||||||
|
|
||||||
std::array<char, 64> unknown_buffer{};
|
std::array<char, 256> unknown_buffer{};
|
||||||
if (message == nullptr) {
|
const char* unknown_message = HostStrErrorResult(
|
||||||
|
::strerror_r(-1, unknown_buffer.data(), unknown_buffer.size()),
|
||||||
|
unknown_buffer.data());
|
||||||
|
if (message == nullptr ||
|
||||||
|
(error_number != 0 && unknown_message != nullptr &&
|
||||||
|
std::strcmp(message, unknown_message) == 0)) {
|
||||||
std::snprintf(unknown_buffer.data(), unknown_buffer.size(),
|
std::snprintf(unknown_buffer.data(), unknown_buffer.size(),
|
||||||
"Unknown error %d", error_number);
|
"Unknown error %d", error_number);
|
||||||
message = unknown_buffer.data();
|
message = unknown_buffer.data();
|
||||||
|
|||||||
@@ -114,7 +114,7 @@ int CopySupportedThreadAttributes(const MocktailBionicPthreadAttr& source,
|
|||||||
if (RejectRealtimeScheduling(source.sched_policy)) {
|
if (RejectRealtimeScheduling(source.sched_policy)) {
|
||||||
return EPERM;
|
return EPERM;
|
||||||
}
|
}
|
||||||
if (source.sched_policy != SCHED_NORMAL) {
|
if (source.sched_policy != SCHED_OTHER) {
|
||||||
result = pthread_attr_setschedpolicy(destination, source.sched_policy);
|
result = pthread_attr_setschedpolicy(destination, source.sched_policy);
|
||||||
if (result != 0) {
|
if (result != 0) {
|
||||||
return result;
|
return result;
|
||||||
|
|||||||
@@ -10,6 +10,7 @@
|
|||||||
#include <sys/eventfd.h>
|
#include <sys/eventfd.h>
|
||||||
#include <sys/socket.h>
|
#include <sys/socket.h>
|
||||||
#include <sys/stat.h>
|
#include <sys/stat.h>
|
||||||
|
#include <sys/time.h>
|
||||||
#include <sys/un.h>
|
#include <sys/un.h>
|
||||||
#include <unistd.h>
|
#include <unistd.h>
|
||||||
|
|
||||||
|
|||||||
@@ -13,6 +13,7 @@
|
|||||||
#include <cstdint>
|
#include <cstdint>
|
||||||
#include <cstring>
|
#include <cstring>
|
||||||
#include <limits>
|
#include <limits>
|
||||||
|
#include <string>
|
||||||
#include <thread>
|
#include <thread>
|
||||||
|
|
||||||
#include "libc_shim/libc_shim.h"
|
#include "libc_shim/libc_shim.h"
|
||||||
@@ -214,9 +215,18 @@ TEST(BionicHostLibcRuntimeTest, UsesBionicPosixStrErrorContract) {
|
|||||||
EXPECT_NE(std::strstr(buffer.data(), "Invalid"), nullptr);
|
EXPECT_NE(std::strstr(buffer.data(), "Invalid"), nullptr);
|
||||||
EXPECT_EQ(errno, EDOM);
|
EXPECT_EQ(errno, EDOM);
|
||||||
|
|
||||||
buffer.fill('\0');
|
EXPECT_EQ(mocktail_bionic_strerror_r(0, buffer.data(), buffer.size()), 0);
|
||||||
EXPECT_EQ(mocktail_bionic_strerror_r(4567, buffer.data(), buffer.size()), 0);
|
EXPECT_STREQ(buffer.data(), std::strerror(0));
|
||||||
EXPECT_NE(std::strstr(buffer.data(), "4567"), nullptr);
|
EXPECT_EQ(errno, EDOM);
|
||||||
|
|
||||||
|
for (const int error_number : {-1, 4567, INT_MIN, INT_MAX}) {
|
||||||
|
errno = EDOM;
|
||||||
|
ASSERT_EQ(mocktail_bionic_strerror_r(error_number, buffer.data(),
|
||||||
|
buffer.size()), 0);
|
||||||
|
EXPECT_EQ(std::string(buffer.data()),
|
||||||
|
"Unknown error " + std::to_string(error_number));
|
||||||
|
EXPECT_EQ(errno, EDOM);
|
||||||
|
}
|
||||||
|
|
||||||
std::array<char, 2> truncated{};
|
std::array<char, 2> truncated{};
|
||||||
errno = 0;
|
errno = 0;
|
||||||
|
|||||||
+2
-1
@@ -1,4 +1,5 @@
|
|||||||
|
#include <sys/cdefs.h>
|
||||||
#include "../bionic/libc/include/assert.h"
|
#include "../bionic/libc/include/assert.h"
|
||||||
#ifdef __BIONIC__
|
#ifdef __BIONIC__
|
||||||
#undef __BIONIC__
|
#undef __BIONIC__
|
||||||
#endif
|
#endif
|
||||||
@@ -15,8 +15,12 @@
|
|||||||
typedef std::atomic_int atomic_int;
|
typedef std::atomic_int atomic_int;
|
||||||
typedef std::atomic_uint atomic_uint;
|
typedef std::atomic_uint atomic_uint;
|
||||||
#endif
|
#endif
|
||||||
|
#ifndef PAGE_SIZE
|
||||||
#define PAGE_SIZE 4096
|
#define PAGE_SIZE 4096
|
||||||
|
#endif
|
||||||
|
#ifndef PAGE_MASK
|
||||||
#define PAGE_MASK (~(PAGE_SIZE - 1))
|
#define PAGE_MASK (~(PAGE_SIZE - 1))
|
||||||
|
#endif
|
||||||
#if !defined(__APPLE__) && !defined(__FreeBSD__)
|
#if !defined(__APPLE__) && !defined(__FreeBSD__)
|
||||||
#define DEF_WEAK(a)
|
#define DEF_WEAK(a)
|
||||||
#define __BIONIC_ALIGN(__value, __alignment) (((__value) + (__alignment)-1) & ~((__alignment)-1))
|
#define __BIONIC_ALIGN(__value, __alignment) (((__value) + (__alignment)-1) & ~((__alignment)-1))
|
||||||
|
|||||||
@@ -1,6 +1,12 @@
|
|||||||
#pragma once
|
#pragma once
|
||||||
#ifndef __APPLE__
|
#ifndef __APPLE__
|
||||||
|
#pragma push_macro("_FORTIFY_SOURCE")
|
||||||
|
#pragma push_macro("__bos")
|
||||||
|
#undef _FORTIFY_SOURCE
|
||||||
|
#undef __bos
|
||||||
#include "../../bionic/libc/include/sys/cdefs.h"
|
#include "../../bionic/libc/include/sys/cdefs.h"
|
||||||
|
#pragma pop_macro("__bos")
|
||||||
|
#pragma pop_macro("_FORTIFY_SOURCE")
|
||||||
#endif
|
#endif
|
||||||
#if defined(__has_include_next)
|
#if defined(__has_include_next)
|
||||||
#if __has_include_next(<sys/cdefs.h>)
|
#if __has_include_next(<sys/cdefs.h>)
|
||||||
|
|||||||
Reference in new issue
Block a user