+/* perlvars.h
+ *
+ * Copyright (C) 1999, 2000, 2001, 2002, by Larry Wall and others
+ *
+ * You may distribute under the terms of either the GNU General Public
+ * License or the Artistic License, as specified in the README file.
+ *
+ */
+
/****************/
/* Truly global */
/****************/
*
* The 'G' prefix is only needed for vars that need appropriate #defines
* generated in embed*.h. Such symbols are also used to generate
- * the appropriate export list for win32.
- *
- * Avoid build-specific #ifdefs here, like DEBUGGING. That way,
- * we can keep binary compatibility of the curinterp structure */
-
+ * the appropriate export list for win32. */
/* global state */
PERLVAR(Gcurinterp, PerlInterpreter *)
- /* currently running interpreter */
-#ifdef USE_THREADS
-PERLVAR(Gthr_key, perl_key) /* For per-thread struct perl_thread* */
-PERLVAR(Gsv_mutex, perl_mutex) /* Mutex for allocating SVs in sv.c */
-PERLVAR(Gmalloc_mutex, perl_mutex) /* Mutex for malloc */
-PERLVAR(Geval_mutex, perl_mutex) /* Mutex for doeval */
-PERLVAR(Geval_cond, perl_cond) /* Condition variable for doeval */
-PERLVAR(Geval_owner, struct perl_thread *)
- /* Owner thread for doeval */
-PERLVAR(Gnthreads, int) /* Number of threads currently */
-PERLVAR(Gthreads_mutex, perl_mutex) /* Mutex for nthreads and thread list */
-PERLVAR(Gnthreads_cond, perl_cond) /* Condition variable for nthreads */
-PERLVAR(Gsvref_mutex, perl_mutex) /* Mutex for SvREFCNT_{inc,dec} */
-PERLVARI(Gthreadsv_names,char *, THREADSV_NAMES)
-#ifdef FAKE_THREADS
-PERLVAR(Gcurthr, struct perl_thread *)
- /* Currently executing (fake) thread */
+ /* currently running interpreter
+ * (initial parent interpreter under
+ * useithreads) */
+#if defined(USE_ITHREADS)
+PERLVAR(Gthr_key, perl_key) /* key to retrieve per-thread struct */
#endif
-PERLVAR(Gcred_mutex, perl_mutex) /* altered credentials in effect */
-
-#endif /* USE_THREADS */
-
-PERLVAR(Gninterps, int) /* number of active interpreters */
-PERLVARI(Gdo_undump, bool, FALSE) /* -u or dump seen? */
-
/* constants (these are not literals to facilitate pointer comparisons) */
PERLVARIC(GYes, char *, "1")
PERLVARIC(GNo, char *, "")
PERLVARIC(Ghexdigit, char *, "0123456789abcdef0123456789ABCDEF")
PERLVARIC(Gpatleave, char *, "\\.^$@dDwWsSbB+*?|()-nrtfeaxc0123456789[{]}")
+
+/* XXX does anyone even use this? */
+PERLVARI(Gdo_undump, bool, FALSE) /* -u or dump seen? */
+
+#if defined(MYMALLOC) && defined(USE_ITHREADS)
+PERLVAR(Gmalloc_mutex, perl_mutex) /* Mutex for malloc */
+#endif
+
+#if defined(USE_ITHREADS)
+PERLVAR(Gop_mutex, perl_mutex) /* Mutex for op refcounting */
+#endif
+
+#ifdef USE_ITHREADS
+PERLVAR(Gdollarzero_mutex, perl_mutex) /* Modifying $0 */
+#endif
+
+/* This is constant on most architectures, a global on OS/2 */
+PERLVARI(Gsh_path, char *, SH_PATH)/* full path of shell */
+
+#ifndef PERL_MICRO
+/* If Perl has to ignore SIGPFE, this is its saved state.
+ * See perl.h macros PERL_FPU_INIT and PERL_FPU_{PRE,POST}_EXEC. */
+PERLVAR(Gsigfpe_saved, Sighandler_t)
+#endif
+
+/* Restricted hashes placeholder value.
+ * The contents are never used, only the address. */
+PERLVAR(Gsv_placeholder, SV)
+
+#ifndef PERL_MICRO
+PERLVARI(Gcsighandlerp, Sighandler_t, &Perl_csighandler) /* Pointer to C-level sighandler */
+#endif
+