X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=src%2Fruntime%2Fruntime.h;h=c46726139f60d0d6d51076315ee4f00c37506084;hb=c712f88b26cd7547ee984b90e18c134401335bc3;hp=4fb9539eca9b19194579a2a885a09191a99d15a5;hpb=ebb604b4422ba886e70ce2e531c1f4d28d44e721;p=sbcl.git diff --git a/src/runtime/runtime.h b/src/runtime/runtime.h index 4fb9539..c467261 100644 --- a/src/runtime/runtime.h +++ b/src/runtime/runtime.h @@ -15,6 +15,17 @@ #ifndef _SBCL_RUNTIME_H_ #define _SBCL_RUNTIME_H_ +#if defined(LISP_FEATURE_WIN32) && defined(LISP_FEATURE_SB_THREAD) +# include "pthreads_win32.h" +#else +# include +# ifdef LISP_FEATURE_SB_THREAD +# include +# endif +#endif + +#include + #if defined(LISP_FEATURE_SB_THREAD) #define thread_self() pthread_self() #define thread_kill pthread_kill @@ -29,6 +40,10 @@ #define thread_mutex_unlock(l) 0 #endif +#if defined(LISP_FEATURE_WIN32) && defined(LISP_FEATURE_SB_THREAD) +void os_preinit(); +#endif + #if defined(LISP_FEATURE_SB_SAFEPOINT) void map_gc_page(); void unmap_gc_page(); @@ -113,6 +128,8 @@ extern struct dyndebug_config { int dyndebug_seh; int dyndebug_misc; int dyndebug_pagefaults; + int dyndebug_backtrace_when_lost; + int dyndebug_sleep_when_lost; } dyndebug_config; #ifdef LISP_FEATURE_GENCGC @@ -123,7 +140,6 @@ void dyndebug_init(void); #if QSHOW_SIGNAL_SAFE == 1 && !defined(LISP_FEATURE_WIN32) -#include extern sigset_t blockable_sigset; #define QSHOW_BLOCK \ @@ -176,7 +192,6 @@ typedef unsigned long pointer_sized_uint_t ; #include #if defined(LISP_FEATURE_SB_THREAD) -#include typedef pthread_t os_thread_t; #else typedef pid_t os_thread_t; @@ -329,4 +344,18 @@ extern char *copied_string (char *string); # define THREADS_USING_GCSIGNAL 1 #endif +/* Now that SPARC has precise GENCGC, several places that used to be + * #ifdef PCC need adjustment. Clearly, "PPC or SPARC" is as unhelpful + * a test as its reverse, "x86 or x86-64". However, the feature + * commonly used to differentiate between those two worlds is + * C_STACK_IS_CONTROL_STACK, and clearly (or at least in my humble + * opinion), at some point we'd like to have precise GC on x86 while + * still sharing the C stack, so stack usage ought not imply GC + * conservativeness. So let's have a helper feature that makes the code + * a bit more future-proof, even if it is itself currently defined in + * the naive way: */ +#if defined(LISP_FEATURE_GENCGC) && !defined(LISP_FEATURE_C_STACK_IS_CONTROL_STACK) +# define GENCGC_IS_PRECISE 1 +#endif + #endif /* _SBCL_RUNTIME_H_ */