mirror of
https://github.com/matrix-construct/construct
synced 2024-12-26 07:23:53 +01:00
ircd::ctx::this_ctx: Fix inline namespace reopening for clang.
This commit is contained in:
parent
801f0d57b7
commit
ab32ef76d7
8 changed files with 22 additions and 15 deletions
|
@ -11,10 +11,11 @@
|
||||||
#pragma once
|
#pragma once
|
||||||
#define HAVE_IRCD_CTX_CRITICAL_ASSERTION_H
|
#define HAVE_IRCD_CTX_CRITICAL_ASSERTION_H
|
||||||
|
|
||||||
namespace ircd::ctx::this_ctx
|
namespace ircd::ctx {
|
||||||
|
inline namespace this_ctx
|
||||||
{
|
{
|
||||||
struct critical_assertion; // Assert no yielding for a section
|
struct critical_assertion; // Assert no yielding for a section
|
||||||
}
|
}}
|
||||||
|
|
||||||
/// An instance of critical_assertion detects an attempt to context switch.
|
/// An instance of critical_assertion detects an attempt to context switch.
|
||||||
///
|
///
|
||||||
|
|
|
@ -11,10 +11,11 @@
|
||||||
#pragma once
|
#pragma once
|
||||||
#define HAVE_IRCD_CTX_CRITICAL_INDICATOR_H
|
#define HAVE_IRCD_CTX_CRITICAL_INDICATOR_H
|
||||||
|
|
||||||
namespace ircd::ctx::this_ctx
|
namespace ircd::ctx {
|
||||||
|
inline namespace this_ctx
|
||||||
{
|
{
|
||||||
struct critical_indicator; // Indicates if yielding happened for a section
|
struct critical_indicator; // Indicates if yielding happened for a section
|
||||||
}
|
}}
|
||||||
|
|
||||||
/// An instance of critical_indicator reports if context switching happened.
|
/// An instance of critical_indicator reports if context switching happened.
|
||||||
///
|
///
|
||||||
|
|
|
@ -11,10 +11,11 @@
|
||||||
#pragma once
|
#pragma once
|
||||||
#define HAVE_IRCD_CTX_EXCEPTION_HANDLER_H
|
#define HAVE_IRCD_CTX_EXCEPTION_HANDLER_H
|
||||||
|
|
||||||
namespace ircd::ctx::this_ctx
|
namespace ircd::ctx {
|
||||||
|
inline namespace this_ctx
|
||||||
{
|
{
|
||||||
struct exception_handler;
|
struct exception_handler;
|
||||||
}
|
}}
|
||||||
|
|
||||||
/// An instance of exception_handler must be present to allow a context
|
/// An instance of exception_handler must be present to allow a context
|
||||||
/// switch inside a catch block. This is due to ABI limitations that stack
|
/// switch inside a catch block. This is due to ABI limitations that stack
|
||||||
|
|
|
@ -11,10 +11,11 @@
|
||||||
#pragma once
|
#pragma once
|
||||||
#define HAVE_IRCD_CTX_SLICE_USAGE_WARNING_H
|
#define HAVE_IRCD_CTX_SLICE_USAGE_WARNING_H
|
||||||
|
|
||||||
namespace ircd::ctx::this_ctx
|
namespace ircd::ctx {
|
||||||
|
inline namespace this_ctx
|
||||||
{
|
{
|
||||||
struct slice_usage_warning;
|
struct slice_usage_warning;
|
||||||
}
|
}}
|
||||||
|
|
||||||
#ifndef NDEBUG
|
#ifndef NDEBUG
|
||||||
struct ircd::ctx::this_ctx::slice_usage_warning
|
struct ircd::ctx::this_ctx::slice_usage_warning
|
||||||
|
|
|
@ -11,12 +11,13 @@
|
||||||
#pragma once
|
#pragma once
|
||||||
#define HAVE_IRCD_CTX_STACK_USAGE_ASSERTION_H
|
#define HAVE_IRCD_CTX_STACK_USAGE_ASSERTION_H
|
||||||
|
|
||||||
namespace ircd::ctx::this_ctx
|
namespace ircd::ctx {
|
||||||
|
inline namespace this_ctx
|
||||||
{
|
{
|
||||||
struct stack_usage_assertion;
|
struct stack_usage_assertion;
|
||||||
|
|
||||||
size_t stack_at_here() __attribute__((noinline));
|
size_t stack_at_here() __attribute__((noinline));
|
||||||
}
|
}}
|
||||||
|
|
||||||
/// An instance of stack_usage_assertion is placed on a ctx stack where one
|
/// An instance of stack_usage_assertion is placed on a ctx stack where one
|
||||||
/// wants to test the stack usage at both construction and destruction points
|
/// wants to test the stack usage at both construction and destruction points
|
||||||
|
|
|
@ -11,10 +11,11 @@
|
||||||
#pragma once
|
#pragma once
|
||||||
#define HAVE_IRCD_CTX_SYSCALL_USAGE_WARNING_H
|
#define HAVE_IRCD_CTX_SYSCALL_USAGE_WARNING_H
|
||||||
|
|
||||||
namespace ircd::ctx::this_ctx
|
namespace ircd::ctx {
|
||||||
|
inline namespace this_ctx
|
||||||
{
|
{
|
||||||
struct syscall_usage_warning;
|
struct syscall_usage_warning;
|
||||||
}
|
}}
|
||||||
|
|
||||||
#ifndef NDEBUG
|
#ifndef NDEBUG
|
||||||
struct ircd::ctx::this_ctx::syscall_usage_warning
|
struct ircd::ctx::this_ctx::syscall_usage_warning
|
||||||
|
|
|
@ -11,8 +11,8 @@
|
||||||
#pragma once
|
#pragma once
|
||||||
#define HAVE_IRCD_CTX_THIS_CTX_H
|
#define HAVE_IRCD_CTX_THIS_CTX_H
|
||||||
|
|
||||||
namespace ircd::ctx {
|
|
||||||
/// Interface to the currently running context
|
/// Interface to the currently running context
|
||||||
|
namespace ircd::ctx {
|
||||||
inline namespace this_ctx
|
inline namespace this_ctx
|
||||||
{
|
{
|
||||||
struct ctx &cur(); ///< Assumptional reference to *current
|
struct ctx &cur(); ///< Assumptional reference to *current
|
||||||
|
|
|
@ -11,14 +11,15 @@
|
||||||
#pragma once
|
#pragma once
|
||||||
#define HAVE_IRCD_CTX_UNINTERRUPTIBLE_H
|
#define HAVE_IRCD_CTX_UNINTERRUPTIBLE_H
|
||||||
|
|
||||||
namespace ircd::ctx::this_ctx
|
namespace ircd::ctx {
|
||||||
|
inline namespace this_ctx
|
||||||
{
|
{
|
||||||
struct uninterruptible;
|
struct uninterruptible;
|
||||||
|
|
||||||
bool interruptible() noexcept;
|
bool interruptible() noexcept;
|
||||||
void interruptible(const bool &);
|
void interruptible(const bool &);
|
||||||
void interruptible(const bool &, std::nothrow_t) noexcept;
|
void interruptible(const bool &, std::nothrow_t) noexcept;
|
||||||
}
|
}}
|
||||||
|
|
||||||
/// An instance of uninterruptible will suppress interrupts sent to the
|
/// An instance of uninterruptible will suppress interrupts sent to the
|
||||||
/// context for the scope. Suppression does not discard any interrupt,
|
/// context for the scope. Suppression does not discard any interrupt,
|
||||||
|
|
Loading…
Reference in a new issue