2 * gc-internal-agnostic.h: Mono-agnostic GC interface.
4 * Copyright (C) 2015 Xamarin Inc
6 * This library is free software; you can redistribute it and/or
7 * modify it under the terms of the GNU Library General Public
8 * License 2.0 as published by the Free Software Foundation;
10 * This library is distributed in the hope that it will be useful,
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 * Library General Public License for more details.
15 * You should have received a copy of the GNU Library General Public
16 * License 2.0 along with this library; if not, write to the Free
17 * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
20 #ifndef __MONO_METADATA_GCINTERNALAGNOSTIC_H__
21 #define __MONO_METADATA_GCINTERNALAGNOSTIC_H__
26 #include "mono/utils/mono-compiler.h"
31 guint64 minor_gc_time;
32 guint64 major_gc_time;
33 guint64 major_gc_time_concurrent;
36 extern GCStats gc_stats;
39 * Try to register a foreign thread with the GC, if we fail or the backend
40 * can't cope with this concept - we return FALSE.
42 extern gboolean mono_gc_register_thread (void *baseptr);
44 gboolean mono_gc_parse_environment_string_extract_number (const char *str, size_t *out);
46 void* mono_gc_make_descr_for_object (gsize *bitmap, int numbits, size_t obj_size);
47 void* mono_gc_make_descr_for_array (int vector, gsize *elem_bitmap, int numbits, size_t elem_size);
49 /* simple interface for data structures needed in the runtime */
50 void* mono_gc_make_descr_from_bitmap (gsize *bitmap, int numbits);
52 /* Return a root descriptor for a root with all refs */
53 void* mono_gc_make_root_descr_all_refs (int numbits);
55 /* Return the bitmap encoded by a descriptor */
56 gsize* mono_gc_get_bitmap_for_descr (void *descr, int *numbits);
59 These functions must be used when it's possible that either destination is not
60 word aligned or size is not a multiple of word size.
62 void mono_gc_bzero_atomic (void *dest, size_t size);
63 void mono_gc_bzero_aligned (void *dest, size_t size);
64 void mono_gc_memmove_atomic (void *dest, const void *src, size_t size);
65 void mono_gc_memmove_aligned (void *dest, const void *src, size_t size);
67 FILE *mono_gc_get_logfile (void);