1 // D import file generated from 'src/gc.c' 2 3 /// See: https://issues.dlang.org/show_bug.cgi?id=23812 4 module cimport; 5 6 @nogc nothrow: 7 extern (C) 8 { 9 alias GC_PTR = void*; 10 alias GC_word = ulong; 11 alias GC_signed_word = long; 12 extern uint GC_get_version(); 13 extern __gshared ulong GC_gc_no; 14 extern ulong GC_get_gc_no(); 15 alias GC_oom_func = void* function(ulong); 16 extern __gshared void* function(ulong) GC_oom_fn; 17 extern void GC_set_oom_fn(scope void* function(ulong)); 18 extern void* function(ulong) GC_get_oom_fn(); 19 alias GC_on_heap_resize_proc = void function(ulong); 20 extern __gshared void function(ulong) GC_on_heap_resize; 21 extern void GC_set_on_heap_resize(void function(ulong)); 22 extern void function(ulong) GC_get_on_heap_resize(); 23 enum GC_EventType 24 { 25 GC_EVENT_START, 26 GC_EVENT_MARK_START, 27 GC_EVENT_MARK_END, 28 GC_EVENT_RECLAIM_START, 29 GC_EVENT_RECLAIM_END, 30 GC_EVENT_END, 31 GC_EVENT_PRE_STOP_WORLD, 32 GC_EVENT_POST_STOP_WORLD, 33 GC_EVENT_PRE_START_WORLD, 34 GC_EVENT_POST_START_WORLD, 35 GC_EVENT_THREAD_SUSPENDED, 36 GC_EVENT_THREAD_UNSUSPENDED, 37 } 38 39 alias GC_EVENT_START = GC_EventType.GC_EVENT_START; 40 alias GC_EVENT_MARK_START = GC_EventType.GC_EVENT_MARK_START; 41 alias GC_EVENT_MARK_END = GC_EventType.GC_EVENT_MARK_END; 42 alias GC_EVENT_RECLAIM_START = GC_EventType.GC_EVENT_RECLAIM_START; 43 alias GC_EVENT_RECLAIM_END = GC_EventType.GC_EVENT_RECLAIM_END; 44 alias GC_EVENT_END = GC_EventType.GC_EVENT_END; 45 alias GC_EVENT_PRE_STOP_WORLD = GC_EventType.GC_EVENT_PRE_STOP_WORLD; 46 alias GC_EVENT_POST_STOP_WORLD = GC_EventType.GC_EVENT_POST_STOP_WORLD; 47 alias GC_EVENT_PRE_START_WORLD = GC_EventType.GC_EVENT_PRE_START_WORLD; 48 alias GC_EVENT_POST_START_WORLD = GC_EventType.GC_EVENT_POST_START_WORLD; 49 alias GC_EVENT_THREAD_SUSPENDED = GC_EventType.GC_EVENT_THREAD_SUSPENDED; 50 alias GC_EVENT_THREAD_UNSUSPENDED = GC_EventType.GC_EVENT_THREAD_UNSUSPENDED; 51 alias GC_on_collection_event_proc = void function(GC_EventType); 52 extern void GC_set_on_collection_event(void function(GC_EventType)); 53 extern void function(GC_EventType) GC_get_on_collection_event(); 54 extern __gshared int GC_find_leak; 55 extern void GC_set_find_leak(int); 56 extern int GC_get_find_leak(); 57 extern __gshared int GC_all_interior_pointers; 58 extern void GC_set_all_interior_pointers(int); 59 extern int GC_get_all_interior_pointers(); 60 extern __gshared int GC_finalize_on_demand; 61 extern void GC_set_finalize_on_demand(int); 62 extern int GC_get_finalize_on_demand(); 63 extern __gshared int GC_java_finalization; 64 extern void GC_set_java_finalization(int); 65 extern int GC_get_java_finalization(); 66 alias GC_finalizer_notifier_proc = void function(); 67 extern __gshared void function() GC_finalizer_notifier; 68 extern void GC_set_finalizer_notifier(void function()); 69 extern void function() GC_get_finalizer_notifier(); 70 extern __gshared int GC_dont_gc; 71 extern __gshared int GC_dont_expand; 72 extern void GC_set_dont_expand(int); 73 extern int GC_get_dont_expand(); 74 extern __gshared int GC_use_entire_heap; 75 extern __gshared int GC_full_freq; 76 extern void GC_set_full_freq(int); 77 extern int GC_get_full_freq(); 78 extern __gshared ulong GC_non_gc_bytes; 79 extern void GC_set_non_gc_bytes(ulong); 80 extern ulong GC_get_non_gc_bytes(); 81 extern __gshared int GC_no_dls; 82 extern void GC_set_no_dls(int); 83 extern int GC_get_no_dls(); 84 extern __gshared ulong GC_free_space_divisor; 85 extern void GC_set_free_space_divisor(ulong); 86 extern ulong GC_get_free_space_divisor(); 87 extern __gshared ulong GC_max_retries; 88 extern void GC_set_max_retries(ulong); 89 extern ulong GC_get_max_retries(); 90 extern __gshared char* GC_stackbottom; 91 extern __gshared int GC_dont_precollect; 92 extern void GC_set_dont_precollect(int); 93 extern int GC_get_dont_precollect(); 94 extern __gshared ulong GC_time_limit; 95 extern void GC_set_time_limit(ulong); 96 extern ulong GC_get_time_limit(); 97 struct GC_timeval_s 98 { 99 ulong tv_ms = void; 100 ulong tv_nsec = void; 101 } 102 103 extern void GC_set_time_limit_tv(GC_timeval_s); 104 extern GC_timeval_s GC_get_time_limit_tv(); 105 extern void GC_set_allocd_bytes_per_finalizer(ulong); 106 extern ulong GC_get_allocd_bytes_per_finalizer(); 107 extern void GC_start_performance_measurement(); 108 extern ulong GC_get_full_gc_total_time(); 109 extern void GC_set_pages_executable(int); 110 extern int GC_get_pages_executable(); 111 extern void GC_set_min_bytes_allocd(ulong); 112 extern ulong GC_get_min_bytes_allocd(); 113 extern void GC_set_rate(int); 114 extern int GC_get_rate(); 115 extern void GC_set_max_prior_attempts(int); 116 extern int GC_get_max_prior_attempts(); 117 extern void GC_set_disable_automatic_collection(int); 118 extern int GC_get_disable_automatic_collection(); 119 extern void GC_set_handle_fork(int); 120 extern void GC_atfork_prepare(); 121 extern void GC_atfork_parent(); 122 extern void GC_atfork_child(); 123 extern void GC_init(); 124 extern int GC_is_init_called(); 125 extern void GC_deinit(); 126 extern void* GC_malloc(ulong); 127 extern void* GC_malloc_atomic(ulong); 128 extern char* GC_strdup(scope const(char)*); 129 extern char* GC_strndup(scope const(char)*, ulong); 130 extern void* GC_malloc_uncollectable(ulong); 131 extern void* GC_malloc_stubborn(ulong); 132 extern void* GC_memalign(ulong, ulong); 133 extern int GC_posix_memalign(scope void**, ulong, ulong); 134 extern void GC_free(scope void*); 135 extern void GC_change_stubborn(scope const(void)*); 136 extern void GC_end_stubborn_change(scope const(void)*); 137 extern void* GC_base(scope void*); 138 extern int GC_is_heap_ptr(scope const(void)*); 139 extern ulong GC_size(scope const(void)*); 140 extern void* GC_realloc(scope void*, ulong); 141 extern int GC_expand_hp(ulong); 142 extern void GC_set_max_heap_size(ulong); 143 extern void GC_exclude_static_roots(scope void*, scope void*); 144 extern void GC_clear_exclusion_table(); 145 extern void GC_clear_roots(); 146 extern void GC_add_roots(scope void*, scope void*); 147 extern void GC_remove_roots(scope void*, scope void*); 148 extern void GC_register_displacement(ulong); 149 extern void GC_debug_register_displacement(ulong); 150 extern void GC_gcollect(); 151 extern void GC_gcollect_and_unmap(); 152 alias GC_stop_func = int function(); 153 extern int GC_try_to_collect(int function()); 154 extern void GC_set_stop_func(int function()); 155 extern int function() GC_get_stop_func(); 156 extern ulong GC_get_heap_size(); 157 extern ulong GC_get_free_bytes(); 158 extern ulong GC_get_unmapped_bytes(); 159 extern ulong GC_get_bytes_since_gc(); 160 extern ulong GC_get_expl_freed_bytes_since_gc(); 161 extern ulong GC_get_total_bytes(); 162 extern ulong GC_get_obtained_from_os_bytes(); 163 extern void GC_get_heap_usage_safe(scope ulong*, scope ulong*, scope ulong*, scope ulong*, scope ulong*); 164 struct GC_prof_stats_s 165 { 166 ulong heapsize_full = void; 167 ulong free_bytes_full = void; 168 ulong unmapped_bytes = void; 169 ulong bytes_allocd_since_gc = void; 170 ulong allocd_bytes_before_gc = void; 171 ulong non_gc_bytes = void; 172 ulong gc_no = void; 173 ulong markers_m1 = void; 174 ulong bytes_reclaimed_since_gc = void; 175 ulong reclaimed_bytes_before_gc = void; 176 ulong expl_freed_bytes_since_gc = void; 177 ulong obtained_from_os_bytes = void; 178 } 179 180 extern ulong GC_get_prof_stats(GC_prof_stats_s*, ulong); 181 extern ulong GC_get_size_map_at(int i); 182 extern ulong GC_get_memory_use(); 183 extern void GC_disable(); 184 extern int GC_is_disabled(); 185 extern void GC_enable(); 186 extern void GC_set_manual_vdb_allowed(int); 187 extern int GC_get_manual_vdb_allowed(); 188 extern void GC_enable_incremental(); 189 extern int GC_is_incremental_mode(); 190 extern int GC_incremental_protection_needs(); 191 extern void GC_start_incremental_collection(); 192 extern int GC_collect_a_little(); 193 extern void* GC_malloc_ignore_off_page(ulong); 194 extern void* GC_malloc_atomic_ignore_off_page(ulong); 195 extern void* GC_malloc_atomic_uncollectable(ulong); 196 extern void* GC_debug_malloc_atomic_uncollectable(ulong, scope const(char)* s, int i); 197 extern void* GC_debug_malloc(ulong, scope const(char)* s, int i); 198 extern void* GC_debug_malloc_atomic(ulong, scope const(char)* s, int i); 199 extern char* GC_debug_strdup(scope const(char)*, scope const(char)* s, int i); 200 extern char* GC_debug_strndup(scope const(char)*, ulong, scope const(char)* s, int i); 201 extern void* GC_debug_malloc_uncollectable(ulong, scope const(char)* s, int i); 202 extern void* GC_debug_malloc_stubborn(ulong, scope const(char)* s, int i); 203 extern void* GC_debug_malloc_ignore_off_page(ulong, scope const(char)* s, int i); 204 extern void* GC_debug_malloc_atomic_ignore_off_page(ulong, scope const(char)* s, int i); 205 extern void GC_debug_free(scope void*); 206 extern void* GC_debug_realloc(scope void*, ulong, scope const(char)* s, int i); 207 extern void GC_debug_change_stubborn(scope const(void)*); 208 extern void GC_debug_end_stubborn_change(scope const(void)*); 209 extern void* GC_debug_malloc_replacement(ulong); 210 extern void* GC_debug_realloc_replacement(scope void*, ulong); 211 alias GC_finalization_proc = void function(scope void*, scope void*); 212 extern void GC_register_finalizer(scope void*, void function(scope void*, scope void*), scope void*, void function( 213 scope void*, scope void*)*, scope void**); 214 extern void GC_debug_register_finalizer(scope void*, void function(scope void*, scope void*), scope void*, void function( 215 scope void*, scope void*)*, scope void**); 216 extern void GC_register_finalizer_ignore_self(scope void*, void function(scope void*, scope void*), scope void*, void function( 217 void*, scope void*)*, scope void**); 218 extern void GC_debug_register_finalizer_ignore_self(scope void*, void function(scope void*, scope void*), scope void*, void function( 219 void*, scope void*)*, scope void**); 220 extern void GC_register_finalizer_no_order(scope void*, void function(scope void*, scope void*), scope void*, void function( 221 scope void*, scope void*)*, scope void**); 222 extern void GC_debug_register_finalizer_no_order(scope void*, void function(scope void*, scope void*), scope void*, void function( 223 void*, scope void*)*, scope void**); 224 extern void GC_register_finalizer_unreachable(scope void*, void function(scope void*, scope void*), scope void*, void function( 225 void*, scope void*)*, scope void**); 226 extern void GC_debug_register_finalizer_unreachable(scope void*, void function(scope void*, scope void*), scope void*, void function( 227 void*, scope void*)*, scope void**); 228 extern int GC_register_disappearing_link(scope void**); 229 extern int GC_general_register_disappearing_link(scope void**, scope const(void)*); 230 extern int GC_move_disappearing_link(scope void**, scope void**); 231 extern int GC_unregister_disappearing_link(scope void**); 232 extern int GC_register_long_link(scope void**, scope const(void)*); 233 extern int GC_move_long_link(scope void**, scope void**); 234 extern int GC_unregister_long_link(scope void**); 235 enum GC_ToggleRefStatus 236 { 237 GC_TOGGLE_REF_DROP, 238 GC_TOGGLE_REF_STRONG, 239 GC_TOGGLE_REF_WEAK, 240 } 241 242 alias GC_TOGGLE_REF_DROP = GC_ToggleRefStatus.GC_TOGGLE_REF_DROP; 243 alias GC_TOGGLE_REF_STRONG = GC_ToggleRefStatus.GC_TOGGLE_REF_STRONG; 244 alias GC_TOGGLE_REF_WEAK = GC_ToggleRefStatus.GC_TOGGLE_REF_WEAK; 245 alias GC_toggleref_func = GC_ToggleRefStatus function(scope void*); 246 extern void GC_set_toggleref_func(GC_ToggleRefStatus function(scope void*)); 247 extern GC_ToggleRefStatus function(scope void*) GC_get_toggleref_func(); 248 extern int GC_toggleref_add(scope void*, int); 249 alias GC_await_finalize_proc = void function(scope void*); 250 extern void GC_set_await_finalize_proc(void function(scope void*)); 251 extern void function(scope void*) GC_get_await_finalize_proc(); 252 extern int GC_should_invoke_finalizers(); 253 extern int GC_invoke_finalizers(); 254 alias GC_warn_proc = void function(char*, ulong); 255 extern void GC_set_warn_proc(void function(char*, ulong)); 256 extern void function(char*, ulong) GC_get_warn_proc(); 257 extern void GC_ignore_warn_proc(char*, ulong); 258 extern void GC_set_log_fd(int); 259 alias GC_abort_func = void function(scope const(char)*); 260 extern void GC_set_abort_func(void function(scope const(char)*)); 261 extern void function(scope const(char)*) GC_get_abort_func(); 262 extern void GC_abort_on_oom(); 263 alias GC_hidden_pointer = ulong; 264 alias GC_fn_type = void* function(scope void*); 265 extern void* GC_call_with_alloc_lock(scope void* function(scope void*), scope void*); 266 struct GC_stack_base 267 { 268 void* mem_base = void; 269 } 270 271 alias GC_stack_base_func = void* function(GC_stack_base*, scope void*); 272 extern void* GC_call_with_stack_base(scope void* function(GC_stack_base*, scope void*), scope void*); 273 extern void GC_start_mark_threads(); 274 extern void* GC_do_blocking(scope void* function(scope void*), scope void*); 275 extern void* GC_call_with_gc_active(scope void* function(scope void*), scope void*); 276 extern int GC_get_stack_base(GC_stack_base*); 277 extern void* GC_get_my_stackbottom(GC_stack_base*); 278 extern void GC_set_stackbottom(scope void*, const GC_stack_base*); 279 extern void* GC_same_obj(scope void*, scope void*); 280 extern void* GC_pre_incr(scope void**, long); 281 extern void* GC_post_incr(scope void**, long); 282 extern void* GC_is_visible(scope void*); 283 extern void* GC_is_valid_displacement(scope void*); 284 extern void GC_dump(); 285 extern void GC_dump_named(scope const(char)*); 286 extern void GC_dump_regions(); 287 extern void GC_dump_finalization(); 288 extern void GC_ptr_store_and_dirty(scope void*, scope const(void)*); 289 extern void GC_debug_ptr_store_and_dirty(scope void*, scope const(void)*); 290 extern __gshared void function(scope void*, scope void*) GC_same_obj_print_proc; 291 extern __gshared void function(scope void*) GC_is_valid_displacement_print_proc; 292 extern __gshared void function(scope void*) GC_is_visible_print_proc; 293 extern void* GC_malloc_many(ulong); 294 alias GC_has_static_roots_func = int function(scope const(char)*, void*, ulong); 295 extern void GC_register_has_static_roots_callback(int function(scope const(char)*, scope void*, ulong)); 296 extern void GC_set_force_unmap_on_gcollect(int); 297 extern int GC_get_force_unmap_on_gcollect(); 298 extern void GC_win32_free_heap(); 299 300 enum int GC_TIME_UNLIMITED = 999999; 301 auto GC_MALLOC_STUBBORN(__MP101)(__MP101 sz) 302 { 303 return GC_MALLOC(sz); 304 } 305 306 auto GC_NEW_STUBBORN(__MP102)(__MP102 t) 307 { 308 return GC_NEW(t); 309 } 310 311 auto GC_CHANGE_STUBBORN(__MP103)(__MP103 p) 312 { 313 return GC_change_stubborn(p); 314 } 315 316 enum int GC_PROTECTS_POINTER_HEAP = 1; 317 enum int GC_PROTECTS_PTRFREE_HEAP = 2; 318 enum int GC_PROTECTS_STATIC_DATA = 4; 319 enum int GC_PROTECTS_STACK = 8; 320 enum int GC_PROTECTS_NONE = 0; 321 auto GC_MALLOC(__MP104)(__MP104 sz) 322 { 323 return GC_malloc(sz); 324 } 325 326 auto GC_REALLOC(__MP105, __MP106)(__MP105 old, __MP106 sz) 327 { 328 return GC_realloc(old, sz); 329 } 330 331 auto GC_MALLOC_ATOMIC(__MP107)(__MP107 sz) 332 { 333 return GC_malloc_atomic(sz); 334 } 335 336 auto GC_STRDUP(__MP108)(__MP108 s) 337 { 338 return GC_strdup(s); 339 } 340 341 auto GC_STRNDUP(__MP109, __MP110)(__MP109 s, __MP110 sz) 342 { 343 return GC_strndup(s, sz); 344 } 345 346 auto GC_MALLOC_ATOMIC_UNCOLLECTABLE(__MP111)(__MP111 sz) 347 { 348 return GC_malloc_atomic_uncollectable(sz); 349 } 350 351 auto GC_MALLOC_UNCOLLECTABLE(__MP112)(__MP112 sz) 352 { 353 return GC_malloc_uncollectable(sz); 354 } 355 356 auto GC_MALLOC_IGNORE_OFF_PAGE(__MP113)(__MP113 sz) 357 { 358 return GC_malloc_ignore_off_page(sz); 359 } 360 361 auto GC_MALLOC_ATOMIC_IGNORE_OFF_PAGE(__MP114)(__MP114 sz) 362 { 363 return GC_malloc_atomic_ignore_off_page(sz); 364 } 365 366 auto GC_FREE(__MP115)(__MP115 p) 367 { 368 return GC_free(p); 369 } 370 371 auto GC_REGISTER_FINALIZER(__MP116, __MP117, __MP118, __MP119, __MP120)(__MP116 p, __MP117 f, __MP118 d, __MP119 of, __MP120 od) 372 { 373 return GC_register_finalizer(p, f, d, of, od); 374 } 375 376 auto GC_REGISTER_FINALIZER_IGNORE_SELF(__MP121, __MP122, __MP123, __MP124, __MP125)( 377 __MP121 p, __MP122 f, __MP123 d, __MP124 of, __MP125 od) 378 { 379 return GC_register_finalizer_ignore_self(p, f, d, of, od); 380 } 381 382 auto GC_REGISTER_FINALIZER_NO_ORDER(__MP126, __MP127, __MP128, __MP129, __MP130)( 383 __MP126 p, __MP127 f, __MP128 d, __MP129 of, __MP130 od) 384 { 385 return GC_register_finalizer_no_order(p, f, d, of, od); 386 } 387 388 auto GC_REGISTER_FINALIZER_UNREACHABLE(__MP131, __MP132, __MP133, __MP134, __MP135)( 389 __MP131 p, __MP132 f, __MP133 d, __MP134 of, __MP135 od) 390 { 391 return GC_register_finalizer_unreachable(p, f, d, of, od); 392 } 393 394 auto GC_END_STUBBORN_CHANGE(__MP136)(__MP136 p) 395 { 396 return GC_end_stubborn_change(p); 397 } 398 399 auto GC_PTR_STORE_AND_DIRTY(__MP137, __MP138)(__MP137 p, __MP138 q) 400 { 401 return GC_ptr_store_and_dirty(p, q); 402 } 403 404 auto GC_GENERAL_REGISTER_DISAPPEARING_LINK(__MP139, __MP140)(__MP139 link, __MP140 obj) 405 { 406 return GC_general_register_disappearing_link(link, obj); 407 } 408 409 auto GC_REGISTER_LONG_LINK(__MP141, __MP142)(__MP141 link, __MP142 obj) 410 { 411 return GC_register_long_link(link, obj); 412 } 413 414 auto GC_REGISTER_DISPLACEMENT(__MP143)(__MP143 n) 415 { 416 return GC_register_displacement(n); 417 } 418 419 enum int GC_NO_MEMORY = 2; 420 auto GC_HIDE_POINTER(__MP148)(__MP148 p) 421 { 422 return ~cast(ulong) p; 423 } 424 425 auto GC_REVEAL_POINTER(__MP149)(__MP149 p) 426 { 427 return cast(void*) GC_HIDE_POINTER(p); 428 } 429 430 auto GC_alloc_lock()() 431 { 432 return cast(void) 0; 433 } 434 435 auto GC_alloc_unlock()() 436 { 437 return cast(void) 0; 438 } 439 440 enum int GC_SUCCESS = 0; 441 enum int GC_DUPLICATE = 1; 442 enum int GC_NO_THREADS = 2; 443 enum int GC_UNIMPLEMENTED = 3; 444 enum int GC_NOT_FOUND = 4; 445 auto GC_PTR_ADD(__MP150, __MP151)(__MP150 x, __MP151 n) 446 { 447 return x + n; 448 } 449 450 auto GC_PRE_INCR(__MP152, __MP153)(__MP152 x, __MP153 n) 451 { 452 return x += n; 453 } 454 455 auto GC_POST_INCR(__MP154)(__MP154 x) 456 { 457 return x++; 458 } 459 460 auto GC_POST_DECR(__MP155)(__MP155 x) 461 { 462 return x--; 463 } 464 465 auto GC_PTR_STORE(__MP156, __MP157)(__MP156 p, __MP157 q) 466 { 467 return *cast(void**) p = cast(void*) q; 468 } 469 470 auto GC_NEXT(__MP158)(__MP158 p) 471 { 472 return *cast(void**) p; 473 } 474 }