#include <glib.h>
#include <mono/utils/mono-publib.h>
#include "marshal.h"
+#include "icalls.h"
#define MONO_ICALL_TABLE_CALLBACKS_VERSION 2
const char* (*lookup_icall_symbol) (gpointer func);
} MonoIcallTableCallbacks;
+ICALL_EXTERN_C
void
mono_install_icall_table_callbacks (const MonoIcallTableCallbacks *cb);
#ifdef ENABLE_ICALL_EXPORT
#define ICALL_EXPORT MONO_API
+#define ICALL_EXTERN_C G_EXTERN_C
#else
/* Can't be static as icall.c defines icalls referenced by icall-tables.c */
#define ICALL_EXPORT /* nothing */
+#define ICALL_EXTERN_C /* nothing */
#endif
#endif // __MONO_METADATA_ICALLS_H__
MONO_PAL_API void
mono_marshal_set_last_error (void);
+ICALL_EXTERN_C
void
mono_marshal_clear_last_error (void);
void *
mono_marshal_alloc (gsize size, MonoError *error);
+ICALL_EXTERN_C
void
mono_marshal_free (gpointer ptr);
+ICALL_EXTERN_C
void
mono_marshal_free_array (gpointer *ptr, int size);
MONO_API void *
mono_marshal_string_to_utf16 (MonoString *s);
+ICALL_EXTERN_C
void
mono_marshal_set_last_error_windows (int error);
+ICALL_EXTERN_C
void
mono_struct_delete_old (MonoClass *klass, char *ptr);
MonoMarshalSpec *spec, int conv_arg,
MonoType **conv_arg_type, MarshalAction action);
+ICALL_EXTERN_C
MonoObject *
mono_marshal_isinst_with_cache (MonoObject *obj, MonoClass *klass, uintptr_t *cache);
+ICALL_EXTERN_C
MonoAsyncResult *
mono_delegate_begin_invoke (MonoDelegate *delegate, gpointer *params);
+ICALL_EXTERN_C
MonoObject *
mono_delegate_end_invoke (MonoDelegate *delegate, gpointer *params);
gboolean
mono_marshal_need_free (MonoType *t, MonoMethodPInvoke *piinfo, MonoMarshalSpec *spec);
+ICALL_EXTERN_C
MonoObject* mono_marshal_get_type_object (MonoClass *klass);
ICALL_EXPORT
void
mono_monitor_cleanup (void);
+ICALL_EXTERN_C
MonoBoolean
mono_monitor_enter_internal (MonoObject *obj);
+ICALL_EXTERN_C
void
mono_monitor_enter_v4_internal (MonoObject *obj, MonoBoolean *lock_taken);
+ICALL_EXTERN_C
guint32
mono_monitor_enter_fast (MonoObject *obj);
+ICALL_EXTERN_C
guint32
mono_monitor_enter_v4_fast (MonoObject *obj, MonoBoolean *lock_taken);
int
mono_object_hash_internal (MonoObject* obj);
+ICALL_EXTERN_C
void
mono_value_copy_internal (void* dest, const void* src, MonoClass *klass);
uint32_t
mono_gchandle_new_weakref_internal (MonoObject *obj, mono_bool track_resurrection);
+ICALL_EXTERN_C
MonoObject*
mono_gchandle_get_target_internal (uint32_t gchandle);
void
mono_gc_wbarrier_generic_store_atomic_internal (void *ptr, MonoObject *value);
+ICALL_EXTERN_C
void
mono_gc_wbarrier_generic_nostore_internal (void* ptr);
gboolean mono_thread_interruption_requested (void);
+ICALL_EXTERN_C
MonoException*
mono_thread_interruption_checkpoint (void);
MonoExceptionHandle
mono_thread_interruption_checkpoint_handle (void);
+ICALL_EXTERN_C
MonoException* mono_thread_force_interruption_checkpoint_noraise (void);
/**
extern gint32 mono_thread_interruption_request_flag;
uint32_t mono_alloc_special_static_data (uint32_t static_type, uint32_t size, uint32_t align, uintptr_t *bitmap, int numbits);
+
+ICALL_EXTERN_C
void* mono_get_special_static_data (uint32_t offset);
+
gpointer mono_get_special_static_data_for_thread (MonoInternalThread *thread, guint32 offset);
void
#define __MONO_TRACE_H__
#include <glib.h>
#include "mono/utils/mono-compiler.h"
+#include "mono/metadata/icalls.h"
+ICALL_EXTERN_C
void
mono_trace_enter_method (MonoMethod *method, MonoProfilerCallContext *ctx);
+ICALL_EXTERN_C
void
mono_trace_leave_method (MonoMethod *method, MonoProfilerCallContext *ctx);
#include "checked-build.h"
#include "mono-threads.h"
#include "mono-threads-api.h"
+#include "mono/metadata/icalls.h"
/* JIT specific interface */
extern volatile size_t mono_polling_required;
/* Internal API */
+ICALL_EXTERN_C
void
mono_threads_state_poll (void);