[+] LSFromFdNonblocking
[*] Other Linux progression
This commit is contained in:
parent
c4d9042e44
commit
48b6994f61
@ -42,7 +42,7 @@ namespace Aurora::IO::FS
|
||||
// The only way you can break this assumption is if you argue for users who will be outside of our deployment pipeline, wanting global configs, and don't have write permission on a relevant global directory.
|
||||
// They can shove it. Superuser should install software for all users.
|
||||
// XDG (falling back to home) for non-root installs; for root installs, installing a service package, use /var; for root installs of an application whose system configs should be shared amongst all users, unsupported, idc, it's sandboxed per user
|
||||
static const AuString kUnixAppData {"/var"};
|
||||
static const char * kUnixAppData {"/var"};
|
||||
|
||||
AUKN_SYM bool GetSystemDomain(AuString &path)
|
||||
{
|
||||
|
@ -25,12 +25,17 @@ namespace Aurora::Logging
|
||||
{
|
||||
AUKN_SYM IBasicSink *NewStdSinkNew()
|
||||
{
|
||||
#if defined(AURORA_IS_MODERNNT_DERIVED)
|
||||
return Sinks::NewStdSinkNew();
|
||||
#endif
|
||||
return {};
|
||||
}
|
||||
|
||||
AUKN_SYM void NewStdSinkRelease(IBasicSink *sink)
|
||||
{
|
||||
#if defined(AURORA_IS_MODERNNT_DERIVED)
|
||||
Sinks::NewStdSinkRelease(sink);
|
||||
#endif
|
||||
}
|
||||
|
||||
AUKN_SYM IBasicSink *NewOSEventDirectorySinkNew()
|
||||
|
@ -7,6 +7,7 @@
|
||||
***/
|
||||
#include <Source/RuntimeInternal.hpp>
|
||||
#include "LSEvent.hpp"
|
||||
#include "LSFromFdNonblocking.hpp"
|
||||
|
||||
namespace Aurora::Loop
|
||||
{
|
||||
@ -56,6 +57,11 @@ namespace Aurora::Loop
|
||||
}
|
||||
|
||||
bool LSEvent::IsSignaled()
|
||||
{
|
||||
return IsSignaledFromNonblockingImpl(this, this, &LSEvent::IsSignaledNonblocking);
|
||||
}
|
||||
|
||||
bool LSEvent::IsSignaledNonblocking()
|
||||
{
|
||||
if (!this->atomicRelease_)
|
||||
{
|
||||
|
@ -24,6 +24,7 @@ namespace Aurora::Loop
|
||||
|
||||
private:
|
||||
void Init(bool init);
|
||||
bool IsSignaledNonblocking();
|
||||
bool atomicRelease_;
|
||||
};
|
||||
}
|
@ -19,5 +19,8 @@ namespace Aurora::Loop
|
||||
|
||||
bool ILSEvent::IsSignaled() override;
|
||||
virtual ELoopSource ILSEvent::GetType() override;
|
||||
|
||||
|
||||
bool IsSignaledNonblocking() override;
|
||||
};
|
||||
}
|
25
Source/Loop/LSFromFdNonblocking.hpp
Normal file
25
Source/Loop/LSFromFdNonblocking.hpp
Normal file
@ -0,0 +1,25 @@
|
||||
/***
|
||||
Copyright (C) 2022 J Reece Wilson (a/k/a "Reece"). All rights reserved.
|
||||
|
||||
File: LSFromFdNonblocking.cpp
|
||||
Date: 2022-4-4
|
||||
Author: Reece
|
||||
***/
|
||||
#pragma once
|
||||
|
||||
namespace Aurora::Loop
|
||||
{
|
||||
template<typename T>
|
||||
inline void IsSignaledFromNonblockingImpl(ILoopSourceEx *source, T * that, bool(T *::IsSignaledNonblocking)())
|
||||
{
|
||||
bool val {};
|
||||
source->OnPresleep();
|
||||
val = ((that).*(IsSignaledNonblocking))();
|
||||
if (val)
|
||||
{
|
||||
val = this->OnTrigger(one);
|
||||
}
|
||||
source->OnFinishSleep();
|
||||
return val;
|
||||
}
|
||||
}
|
@ -8,6 +8,7 @@
|
||||
***/
|
||||
#include <Source/RuntimeInternal.hpp>
|
||||
#include "LSMutex.hpp"
|
||||
#include "LSFromFdNonblocking.hpp"
|
||||
|
||||
namespace Aurora::Loop
|
||||
{
|
||||
@ -35,6 +36,11 @@ namespace Aurora::Loop
|
||||
}
|
||||
|
||||
bool LSMutex::IsSignaled()
|
||||
{
|
||||
return IsSignaledFromNonblockingImpl(this, this, &LSMutex::IsSignaledNonblocking);
|
||||
}
|
||||
|
||||
bool LSMutex::IsSignaledNonblocking()
|
||||
{
|
||||
AuUInt64 oldSemaphoreValue {};
|
||||
auto ok = read(this->handle, &oldSemaphoreValue, sizeof(oldSemaphoreValue)) == 8;
|
||||
|
@ -23,5 +23,6 @@ namespace Aurora::Loop
|
||||
|
||||
private:
|
||||
void Init();
|
||||
bool IsSignaledNonblocking();
|
||||
};
|
||||
}
|
@ -1,13 +0,0 @@
|
||||
/***
|
||||
Copyright (C) 2022 J Reece Wilson (a/k/a "Reece"). All rights reserved.
|
||||
|
||||
File: WaitSingle.Linux.hpp
|
||||
Date: 2022-3-22
|
||||
Author: Reece
|
||||
***/
|
||||
#pragma once
|
||||
|
||||
namespace Aurora::Loop
|
||||
{
|
||||
|
||||
}
|
@ -10,6 +10,7 @@
|
||||
|
||||
#if defined(AURORA_IS_POSIX_DERIVED)
|
||||
#include <stdlib.h>
|
||||
#include <dlfcn.h>
|
||||
#include <sys/types.h>
|
||||
#include <sys/stat.h>
|
||||
#endif
|
||||
@ -85,7 +86,7 @@ namespace Aurora::Process
|
||||
}
|
||||
}
|
||||
|
||||
static constexpr AuString ConstructAuDllSuffix()
|
||||
static AuString ConstructAuDllSuffixUncached()
|
||||
{
|
||||
auto platform = GetPlatformString(Build::kCurrentPlatform);
|
||||
auto architecture = GetArchString(Build::kCurrentArchitecture);
|
||||
@ -119,6 +120,14 @@ namespace Aurora::Process
|
||||
return ret;
|
||||
}
|
||||
|
||||
static const AuString& ConstructAuDllSuffix()
|
||||
{
|
||||
static AuString dllSuffixString {};
|
||||
if (dllSuffixString.empty()) dllSuffixString = ConstructAuDllSuffix();
|
||||
dllSuffixString = ConstructAuDllSuffixUncached();
|
||||
return dllSuffixString;
|
||||
}
|
||||
|
||||
#if defined(AURORA_PLATFORM_WIN32)
|
||||
bool VerifyEmbeddedSignature(const wchar_t *path, HANDLE handle)
|
||||
{
|
||||
@ -151,7 +160,7 @@ namespace Aurora::Process
|
||||
// Disable WVT UI.
|
||||
WinTrustData.dwUIChoice = WTD_UI_NONE;
|
||||
|
||||
// Revocation checking.
|
||||
// Revocation checking.constexpr
|
||||
WinTrustData.fdwRevocationChecks = WTD_REVOKE_WHOLECHAIN;
|
||||
|
||||
// Verify an embedded signature on a file.
|
||||
|
@ -175,7 +175,10 @@ namespace Aurora::Process
|
||||
void DeinitProcessMap()
|
||||
{
|
||||
gMutexUnique.reset();
|
||||
|
||||
#if defined(AURORA_IS_MODERNNT_DERIVED)
|
||||
DeinitProcessMapNt();
|
||||
#endif
|
||||
}
|
||||
|
||||
AUKN_SYM AuOptional<Section> GetSection(AuUInt pointer)
|
||||
@ -211,7 +214,10 @@ namespace Aurora::Process
|
||||
{
|
||||
try
|
||||
{
|
||||
#if defined(AURORA_IS_MODERNNT_DERIVED)
|
||||
return GetExecutableRoot();
|
||||
#endif
|
||||
return {};
|
||||
}
|
||||
catch (...)
|
||||
{
|
||||
|
@ -7,8 +7,11 @@
|
||||
***/
|
||||
#include <Source/RuntimeInternal.hpp>
|
||||
#include "Processes.hpp"
|
||||
|
||||
#if defined (AURORA_PLATFORM_WIN32)
|
||||
#include "Process.Win32.hpp"
|
||||
#include "Open.Win32.hpp"
|
||||
#endif
|
||||
|
||||
namespace Aurora::Processes
|
||||
{
|
||||
|
@ -54,9 +54,9 @@ namespace Aurora::Threading::Threads
|
||||
return {false, 0};
|
||||
}
|
||||
|
||||
if (info_.stackSize)
|
||||
if (staskSize)
|
||||
{
|
||||
ret = pthread_attr_setstacksize(&tattr, AuMax(AuUInt32(PTHREAD_STACK_MIN), AuUInt32(info_.stackSize)));
|
||||
ret = pthread_attr_setstacksize(&tattr, AuMax(AuUInt32(PTHREAD_STACK_MIN), AuUInt32(staskSize)));
|
||||
if (ret != 0)
|
||||
{
|
||||
SysPushErrorGen("Couldn't create thread: {}", debugString);
|
||||
|
Loading…
Reference in New Issue
Block a user