83 lines
2.5 KiB
Plaintext
83 lines
2.5 KiB
Plaintext
|
////////////////////////////////////////////////////////////////////////////////
|
||
|
//
|
||
|
// Microsoft Research Singularity - Singularity ABI
|
||
|
//
|
||
|
// Copyright (c) Microsoft Corporation. All rights reserved.
|
||
|
//
|
||
|
// File: StackService.csi
|
||
|
//
|
||
|
// Note:
|
||
|
//
|
||
|
|
||
|
using System.Runtime.CompilerServices;
|
||
|
|
||
|
namespace Microsoft.Singularity.V1.Services
|
||
|
{
|
||
|
public struct StackService
|
||
|
{
|
||
|
private readonly int id;
|
||
|
|
||
|
[NoHeapAllocation]
|
||
|
public static void GetUnlinkStackRange(out ulong unlinkBegin, out ulong unlinkLimit);
|
||
|
[NoHeapAllocation]
|
||
|
public static void WalkStack();
|
||
|
[NoHeapAllocation]
|
||
|
public static void GetUsageStatistics(out ulong gets, out ulong returns);
|
||
|
|
||
|
[NoHeapAllocation]
|
||
|
public static void LinkStack0();
|
||
|
[NoHeapAllocation]
|
||
|
public static void LinkStack4();
|
||
|
[NoHeapAllocation]
|
||
|
public static void LinkStack8();
|
||
|
[NoHeapAllocation]
|
||
|
public static void LinkStack12();
|
||
|
[NoHeapAllocation]
|
||
|
public static void LinkStack16();
|
||
|
[NoHeapAllocation]
|
||
|
public static void LinkStack20();
|
||
|
[NoHeapAllocation]
|
||
|
public static void LinkStack24();
|
||
|
[NoHeapAllocation]
|
||
|
public static void LinkStack28();
|
||
|
[NoHeapAllocation]
|
||
|
public static void LinkStack32();
|
||
|
[NoHeapAllocation]
|
||
|
public static void LinkStack36();
|
||
|
[NoHeapAllocation]
|
||
|
public static void LinkStack40();
|
||
|
[NoHeapAllocation]
|
||
|
public static void LinkStack44();
|
||
|
[NoHeapAllocation]
|
||
|
public static void LinkStack48();
|
||
|
[NoHeapAllocation]
|
||
|
public static void LinkStack52();
|
||
|
[NoHeapAllocation]
|
||
|
public static void LinkStack56();
|
||
|
[NoHeapAllocation]
|
||
|
public static void LinkStack60();
|
||
|
[NoHeapAllocation]
|
||
|
public static void LinkStack64();
|
||
|
|
||
|
#if PAGING
|
||
|
// For use from the ring-3 code in halstack.asm
|
||
|
[NoHeapAllocation]
|
||
|
public static unsafe UIntPtr GetStackSegmentAndCopy(
|
||
|
UIntPtr size,
|
||
|
ref ThreadContext context,
|
||
|
uint *arg2,
|
||
|
uint args,
|
||
|
UIntPtr esp,
|
||
|
UIntPtr begin,
|
||
|
UIntPtr limit);
|
||
|
|
||
|
// For use from the ring-3 code in halstack.asm
|
||
|
[NoHeapAllocation]
|
||
|
public static unsafe void ReturnStackSegmentRaw(
|
||
|
ref ThreadContext context,
|
||
|
UIntPtr begin,
|
||
|
UIntPtr limit);
|
||
|
#endif
|
||
|
}
|
||
|
}
|