2010-03-21 22:12:42 +00:00
|
|
|
//
|
|
|
|
// File defining fields in the Yap_GLOBAL global structure
|
|
|
|
//
|
|
|
|
// these fields used to spread all over the place, because they must be used in 3 ways:
|
|
|
|
// - they must be defined somewhere
|
|
|
|
// - they have an #ifdef to get a shorter name
|
|
|
|
// - they must be initialised somewhere
|
|
|
|
// - they may be of interest to restore
|
|
|
|
//
|
2011-05-11 18:22:58 +01:00
|
|
|
// The defs include 3+ components:
|
2010-03-21 22:12:42 +00:00
|
|
|
// Type
|
2016-02-29 03:13:23 +00:00
|
|
|
// name in structured / global name
|
2010-03-21 22:12:42 +00:00
|
|
|
// init code (optional)
|
|
|
|
// restore code (optional)
|
|
|
|
//
|
|
|
|
|
|
|
|
// Stuff that must be shared by all threads or workers
|
2011-03-25 18:01:17 +00:00
|
|
|
START_GLOBAL_DATA
|
2010-03-21 22:12:42 +00:00
|
|
|
|
2011-05-09 19:36:51 +01:00
|
|
|
// initialization: tell whether the system has been initialised and by whom.
|
2011-05-25 16:40:36 +01:00
|
|
|
int Initialised =FALSE
|
|
|
|
int InitialisedFromPL =FALSE
|
|
|
|
int PL_Argc =0
|
|
|
|
char** PL_Argv =NULL
|
2015-06-19 00:56:24 +01:00
|
|
|
bool FAST_BOOT_FLAG =false
|
2011-05-09 19:36:51 +01:00
|
|
|
|
|
|
|
// halt hooks
|
2011-05-25 16:40:36 +01:00
|
|
|
struct halt_hook* HaltHooks =NULL
|
2015-01-26 04:02:46 +00:00
|
|
|
fptr_t JIT_finalizer =NULL
|
2011-05-09 19:36:51 +01:00
|
|
|
|
|
|
|
// stack overflow expansion/gc control
|
2011-05-25 16:40:36 +01:00
|
|
|
int AllowLocalExpansion =TRUE
|
|
|
|
int AllowGlobalExpansion =TRUE
|
|
|
|
int AllowTrailExpansion =TRUE
|
|
|
|
UInt SizeOfOverflow =0
|
2011-05-10 12:20:22 +01:00
|
|
|
|
2011-05-09 19:36:51 +01:00
|
|
|
// amount of space recovered in all garbage collections
|
2011-05-25 16:40:36 +01:00
|
|
|
UInt AGcThreshold =10000
|
|
|
|
Agc_hook AGCHook =NULL
|
2011-05-09 19:36:51 +01:00
|
|
|
|
2014-06-22 17:35:05 +01:00
|
|
|
#if __ANDROID__
|
|
|
|
// no need to perform initialization, it is done before we start the Prolog engine.
|
2015-04-13 13:28:17 +01:00
|
|
|
struct AAssetManager* assetManager =NULL
|
|
|
|
char* AssetsWD =NULL
|
2014-06-22 17:35:05 +01:00
|
|
|
#endif
|
2011-05-23 16:19:47 +01:00
|
|
|
|
2010-03-21 22:12:42 +00:00
|
|
|
/* multi-thread support */
|
|
|
|
#if THREADS
|
|
|
|
/* number of threads and processes in system */
|
2011-05-25 16:40:36 +01:00
|
|
|
UInt NOfThreads =1
|
2010-03-21 22:12:42 +00:00
|
|
|
/* number of threads created since start */
|
2011-05-25 16:40:36 +01:00
|
|
|
UInt NOfThreadsCreated =1
|
2010-03-21 22:12:42 +00:00
|
|
|
/* total run time for dead threads */
|
2011-05-25 16:40:36 +01:00
|
|
|
UInt ThreadsTotalTime =0L
|
2011-05-11 18:22:58 +01:00
|
|
|
// Threads Array
|
2011-05-25 16:40:36 +01:00
|
|
|
lockvar ThreadHandlesLock MkLock
|
2016-02-29 03:13:23 +00:00
|
|
|
#endif
|
2010-03-21 22:12:42 +00:00
|
|
|
|
|
|
|
#if defined(YAPOR) || defined(THREADS)
|
|
|
|
// protect long critical regions
|
2011-05-25 16:40:36 +01:00
|
|
|
lockvar BGL MkLock
|
2010-03-21 22:12:42 +00:00
|
|
|
#endif
|
|
|
|
|
|
|
|
#if defined(YAPOR) || defined(TABLING)
|
2016-02-29 03:13:23 +00:00
|
|
|
struct global_optyap_data optyap_data void
|
2011-05-09 19:36:51 +01:00
|
|
|
#endif /* YAPOR || TABLING */
|
2010-11-29 18:08:29 +00:00
|
|
|
|
2011-05-25 16:40:36 +01:00
|
|
|
// whether Yap is responsible for signal handling
|
|
|
|
|
|
|
|
int PrologShouldHandleInterrupts void
|
|
|
|
|
|
|
|
/* This is the guy who actually started the system, and who has the correct registers */
|
|
|
|
#if defined(THREADS)
|
|
|
|
pthread_t master_thread void
|
2015-06-19 00:56:24 +01:00
|
|
|
struct thread_mbox* named_mboxes =NULL
|
|
|
|
lockvar mboxq_lock MkLock
|
|
|
|
UInt mbox_count =0
|
|
|
|
struct swi_mutex* WithMutex void
|
2011-05-25 16:40:36 +01:00
|
|
|
#endif /* THREADS */
|
|
|
|
|
2016-02-29 03:13:23 +00:00
|
|
|
// streams
|
2015-06-19 00:56:24 +01:00
|
|
|
struct stream_desc* Stream void
|
2015-11-11 17:13:12 +00:00
|
|
|
#if defined(THREADS)||defined(YAPOR)
|
2015-07-23 01:33:30 +01:00
|
|
|
lockvar StreamDescLock MkLock
|
|
|
|
#endif
|
2011-05-25 16:40:36 +01:00
|
|
|
|
2016-02-29 03:13:23 +00:00
|
|
|
// access to yap initial arguments
|
2011-05-25 16:40:36 +01:00
|
|
|
char** argv void
|
|
|
|
int argc void
|
|
|
|
|
|
|
|
// extensions to Terms
|
|
|
|
#ifdef COROUTINING
|
|
|
|
/* array with the ops for your favourite extensions */
|
|
|
|
ext_op attas[attvars_ext+1] void
|
|
|
|
#endif
|
|
|
|
|
|
|
|
// agc.c
|
|
|
|
int agc_calls void
|
|
|
|
YAP_ULONG_LONG agc_collected void
|
|
|
|
/* total time spent in GC */
|
|
|
|
Int tot_agc_time =0
|
|
|
|
/* number of heap objects in all garbage collections */
|
2016-02-29 03:13:23 +00:00
|
|
|
Int tot_agc_recovered =0
|
2011-05-25 16:40:36 +01:00
|
|
|
|
|
|
|
//arrays.c
|
|
|
|
#if HAVE_MMAP
|
|
|
|
struct MMAP_ARRAY_BLOCK* mmap_arrays =NULL
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
|
|
#ifdef DEBUG
|
|
|
|
//computils.c
|
|
|
|
char Option[20] void
|
|
|
|
YP_FILE* logfile void
|
|
|
|
//init.c
|
2011-06-20 14:49:24 +01:00
|
|
|
//int output_msg =FALSE
|
2011-05-25 16:40:36 +01:00
|
|
|
#endif
|
|
|
|
|
|
|
|
#if defined(COFF) || defined(A_OUT)
|
|
|
|
// loada_coff.c && load_aout.c
|
|
|
|
char Executable[YAP_FILENAME_MAX] void
|
|
|
|
#endif
|
|
|
|
|
2011-07-22 12:09:33 +01:00
|
|
|
int OpaqueHandlersCount =0
|
|
|
|
struct opaque_handler_struct* OpaqueHandlers =NULL
|
2011-05-25 16:40:36 +01:00
|
|
|
|
|
|
|
#if __simplescalar__
|
|
|
|
char pwd[YAP_FILENAME_MAX] void
|
|
|
|
#endif
|
|
|
|
|
|
|
|
//udi.c
|
2016-02-29 03:13:23 +00:00
|
|
|
//struct udi_control_block RtreeCmd void
|
2011-05-25 16:40:36 +01:00
|
|
|
|
2016-02-29 03:13:23 +00:00
|
|
|
const char* RestoreFile void
|
2013-01-18 14:29:41 +00:00
|
|
|
|
2013-02-08 20:38:04 +00:00
|
|
|
//gprof.c
|
2016-02-29 03:13:23 +00:00
|
|
|
Int ProfCalls void
|
2013-02-08 20:38:04 +00:00
|
|
|
Int ProfGCs void
|
|
|
|
Int ProfHGrows void
|
|
|
|
Int ProfSGrows void
|
|
|
|
Int ProfMallocs void
|
|
|
|
Int ProfIndexing void
|
|
|
|
Int ProfOn void
|
|
|
|
Int ProfOns void
|
|
|
|
struct RB_red_blk_node* ProfilerRoot void
|
|
|
|
struct RB_red_blk_node* ProfilerNil void
|
|
|
|
char* DIRNAME =NULL
|
|
|
|
#if LOW_PROF
|
|
|
|
int ProfilerOn =FALSE
|
|
|
|
FILE* FProf =NULL
|
|
|
|
FILE* FPreds =NULL
|
|
|
|
#endif /* LOW_PROF */
|
2011-05-25 16:40:36 +01:00
|
|
|
|
2014-11-27 10:02:04 +00:00
|
|
|
// Mutexes
|
|
|
|
#if THREADS
|
|
|
|
struct swi_mutex* FreeMutexes =NULL
|
|
|
|
struct swi_mutex* mutex_backbone =NULL
|
|
|
|
lockvar MUT_ACCESS MkLock
|
|
|
|
#endif
|
2011-05-25 16:40:36 +01:00
|
|
|
|
2014-12-04 07:59:30 +00:00
|
|
|
char* Home =NULL
|
|
|
|
|
2015-06-19 00:56:24 +01:00
|
|
|
/* ISO char conversion: I will make no comments */
|
|
|
|
char* CharConversionTable =NULL
|
|
|
|
char* CharConversionTable2 =NULL
|
|
|
|
|
|
|
|
|
2015-12-15 08:38:56 +00:00
|
|
|
/* max priority */
|
|
|
|
int MaxPriority =1200
|
|
|
|
|
2016-03-29 02:02:43 +01:00
|
|
|
/// alias table access
|
|
|
|
struct AliasDescS* FileAliases =Yap_InitStandardAliases()
|
|
|
|
int NOfFileAliases void
|
|
|
|
int SzOfFileAliases void
|
2015-06-19 00:56:24 +01:00
|
|
|
|
2014-12-04 07:59:30 +00:00
|
|
|
|
2011-03-25 18:01:17 +00:00
|
|
|
END_GLOBAL_DATA
|