summaryrefslogtreecommitdiff
path: root/src/debug/daccess/gcinterface.dac.h
blob: c7765ef364b2994b8e9ab5668f570b0fb4f2dbe3 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
// Licensed to the .NET Foundation under one or more agreements.
// The .NET Foundation licenses this file to you under the MIT license.
// See the LICENSE file in the project root for more information.
#ifndef __DACCESS_GCINTERFACE_DAC_H__
#define __DACCESS_GCINTERFACE_DAC_H__

#include "../../gc/gcinterface.dac.h"

// The following six function prototypes are for functions that are used by the DAC
// to inspect the handle table in detail. The semantics of these functions MUST be
// versioned along with the rest of this interface - any changes in semantics
// must be accompanied with a major versino bump.
// 
// Please do not add any additional functions to this list; we'd like to keep it
// to an absolute minimum.
#ifdef DACCESS_COMPILE
// for DAC builds, OBJECTHANDLE is a uintptr_t.
GC_DAC_VISIBLE
OBJECTREF GetDependentHandleSecondary(OBJECTHANDLE handle);

GC_DAC_VISIBLE_NO_MANGLE
void HndScanHandlesForGC(
    DPTR(dac_handle_table) hTable,
    HANDLESCANPROC scanProc,
    uintptr_t param1,
    uintptr_t param2,
    const uint32_t *types,
    uint32_t typeCount,
    uint32_t condemned,
    uint32_t maxGen,
    uint32_t flags);

GC_DAC_VISIBLE_NO_MANGLE
void HndEnumHandles(
    DPTR(dac_handle_table) hTable,
    const uint32_t *puType,
    uint32_t uTypeCount,
    HANDLESCANPROC pfnEnum,
    uintptr_t lParam1,
    uintptr_t lParam2,
    bool fAsync);

GC_DAC_VISIBLE
OBJECTREF HndFetchHandle(OBJECTHANDLE handle);

GC_DAC_VISIBLE
struct ADIndex HndGetHandleADIndex(OBJECTHANDLE handle);

GC_DAC_VISIBLE
uintptr_t HndGetHandleExtraInfo(OBJECTHANDLE handle);

#endif // DACCESS_COMPILE

#endif // __DACCESS_GCINTERFACE_DAC_H__