74 lines
2.2 KiB
Plaintext
74 lines
2.2 KiB
Plaintext
///////////////////////////////////////////////////////////////////////////////
|
|
//
|
|
// Microsoft Research Singularity - Singularity ABI
|
|
//
|
|
// Copyright (c) Microsoft Corporation. All rights reserved.
|
|
//
|
|
// File: SharedHeapService.csi
|
|
//
|
|
// Note:
|
|
//
|
|
|
|
using System;
|
|
using System.Runtime.CompilerServices;
|
|
using Microsoft.Singularity.V1.Types;
|
|
|
|
namespace Microsoft.Singularity.V1.Services
|
|
{
|
|
[CLSCompliant(false)]
|
|
public struct SharedHeapService
|
|
{
|
|
public struct Allocation {
|
|
// No fields visible to ABI callers.
|
|
}
|
|
|
|
public struct AllocationOwnerId {
|
|
// No fields visible to ABI callers.
|
|
}
|
|
|
|
[NoHeapAllocation]
|
|
public static unsafe UIntPtr GetData(Allocation *allocation);
|
|
|
|
[NoHeapAllocation]
|
|
public static unsafe UIntPtr GetSize(Allocation *allocation);
|
|
|
|
[NoHeapAllocation]
|
|
public static unsafe UIntPtr GetType(Allocation *allocation);
|
|
|
|
[NoHeapAllocation]
|
|
public static unsafe Allocation *Allocate(UIntPtr size,
|
|
SystemType type,
|
|
uint alignment);
|
|
|
|
/// <returns>true if last reference was freed</returns>
|
|
[NoHeapAllocation]
|
|
public static unsafe bool Free(Allocation *allocation);
|
|
|
|
[NoHeapAllocation]
|
|
public static unsafe Allocation *Share(Allocation *allocation,
|
|
UIntPtr startOffset,
|
|
UIntPtr endOffset);
|
|
|
|
[NoHeapAllocation]
|
|
public static unsafe Allocation *Split(Allocation *allocation,
|
|
UIntPtr offset);
|
|
|
|
[NoHeapAllocation]
|
|
public static unsafe void Truncate(Allocation *allocation,
|
|
UIntPtr offset);
|
|
|
|
#if NOT_YET
|
|
[NoHeapAllocation]
|
|
public static unsafe void TransferTo(
|
|
Allocation *allocation,
|
|
AllocationOwnerId newOwner);
|
|
|
|
[NoHeapAllocation]
|
|
public static unsafe void TransferFrom(
|
|
Allocation *allocation,
|
|
AllocationOwnerId oldOwner);
|
|
#endif
|
|
|
|
}
|
|
}
|