136 lines
4.2 KiB
C#
136 lines
4.2 KiB
C#
|
////////////////////////////////////////////////////////////////////////////////
|
||
|
//
|
||
|
// Microsoft Research Singularity - Singularity ABI
|
||
|
//
|
||
|
// Copyright (c) Microsoft Corporation. All rights reserved.
|
||
|
//
|
||
|
// File: DebugService.cs
|
||
|
//
|
||
|
// Note:
|
||
|
//
|
||
|
|
||
|
using System.Runtime.CompilerServices;
|
||
|
|
||
|
namespace Microsoft.Singularity.V1.Services
|
||
|
{
|
||
|
public struct DebugService
|
||
|
{
|
||
|
//private readonly int id;
|
||
|
|
||
|
[NoHeapAllocation]
|
||
|
public static unsafe void PrintBegin(out char * buffer, out int length)
|
||
|
{
|
||
|
fixed (char * * bufferPtr = &buffer) {
|
||
|
fixed (int * lengthPtr = &length) {
|
||
|
PrintBeginImpl(bufferPtr, lengthPtr);
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
[OutsideGCDomain]
|
||
|
[NoHeapAllocation]
|
||
|
[StackBound(1170)]
|
||
|
[MethodImpl(MethodImplOptions.InternalCall)]
|
||
|
public static extern unsafe void PrintBeginImpl(
|
||
|
char * * buffer,
|
||
|
int * length);
|
||
|
|
||
|
[OutsideGCDomain]
|
||
|
[NoHeapAllocation]
|
||
|
[StackBound(768)]
|
||
|
[MethodImpl(MethodImplOptions.InternalCall)]
|
||
|
public static extern unsafe void PrintComplete(char * buffer, int used);
|
||
|
|
||
|
[OutsideGCDomain]
|
||
|
[NoHeapAllocation]
|
||
|
[StackBound(768)]
|
||
|
[MethodImpl(MethodImplOptions.InternalCall)]
|
||
|
public static extern unsafe void Print(char * buffer);
|
||
|
|
||
|
[AccessedByRuntime("Required by hal.cpp")]
|
||
|
[OutsideGCDomain]
|
||
|
[StackBound(768)]
|
||
|
[NoHeapAllocation]
|
||
|
[MethodImpl(MethodImplOptions.InternalCall)]
|
||
|
public static extern unsafe void Print(char * buffer, int length);
|
||
|
|
||
|
[OutsideGCDomain]
|
||
|
[NoHeapAllocation]
|
||
|
[StackBound(832)]
|
||
|
[MethodImpl(MethodImplOptions.InternalCall)]
|
||
|
public static extern void Print(bool value);
|
||
|
|
||
|
[OutsideGCDomain]
|
||
|
[NoHeapAllocation]
|
||
|
[StackBound(832)]
|
||
|
[MethodImpl(MethodImplOptions.InternalCall)]
|
||
|
public static extern void Print(char value);
|
||
|
|
||
|
[OutsideGCDomain]
|
||
|
[NoHeapAllocation]
|
||
|
[StackBound(832)]
|
||
|
[MethodImpl(MethodImplOptions.InternalCall)]
|
||
|
public static extern void Print(byte value);
|
||
|
|
||
|
[OutsideGCDomain]
|
||
|
[NoHeapAllocation]
|
||
|
[StackBound(832)]
|
||
|
[MethodImpl(MethodImplOptions.InternalCall)]
|
||
|
public static extern void Print(int value);
|
||
|
|
||
|
[OutsideGCDomain]
|
||
|
[NoHeapAllocation]
|
||
|
[StackBound(832)]
|
||
|
[MethodImpl(MethodImplOptions.InternalCall)]
|
||
|
public static extern void Print(uint value);
|
||
|
|
||
|
[OutsideGCDomain]
|
||
|
[NoHeapAllocation]
|
||
|
[StackBound(832)]
|
||
|
[MethodImpl(MethodImplOptions.InternalCall)]
|
||
|
public static extern void Print(long value);
|
||
|
|
||
|
[OutsideGCDomain]
|
||
|
[NoHeapAllocation]
|
||
|
[StackBound(832)]
|
||
|
[MethodImpl(MethodImplOptions.InternalCall)]
|
||
|
public static extern void Print(ulong value);
|
||
|
|
||
|
[OutsideGCDomain]
|
||
|
[NoHeapAllocation]
|
||
|
[StackBound(768)]
|
||
|
[MethodImpl(MethodImplOptions.InternalCall)]
|
||
|
public static extern void Break();
|
||
|
|
||
|
[OutsideGCDomain]
|
||
|
[NoHeapAllocation]
|
||
|
[StackBound(1088)]
|
||
|
[MethodImpl(MethodImplOptions.InternalCall)]
|
||
|
public static extern void WalkStack();
|
||
|
|
||
|
[OutsideGCDomain]
|
||
|
[NoHeapAllocation]
|
||
|
[StackBound(1152)]
|
||
|
[MethodImpl(MethodImplOptions.InternalCall)]
|
||
|
public static extern bool IsDebuggerPresent();
|
||
|
|
||
|
[OutsideGCDomain]
|
||
|
[NoHeapAllocation]
|
||
|
[StackBound(128)]
|
||
|
[MethodImpl(MethodImplOptions.InternalCall)]
|
||
|
public static extern ulong ReadPerfCounter(uint which);
|
||
|
|
||
|
[OutsideGCDomain]
|
||
|
[NoHeapAllocation]
|
||
|
[StackBound(128)]
|
||
|
[MethodImpl(MethodImplOptions.InternalCall)]
|
||
|
public static extern bool WritePerfCounter(uint which, ulong value);
|
||
|
|
||
|
[OutsideGCDomain]
|
||
|
[NoHeapAllocation]
|
||
|
[StackBound(128)]
|
||
|
[MethodImpl(MethodImplOptions.InternalCall)]
|
||
|
public static extern bool AddToPerfCounter(uint which, ulong value);
|
||
|
}
|
||
|
}
|