+/* perlvars.h
+ *
+ * Copyright (c) 1997-2002, Larry Wall
+ *
+ * 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
+
+/* Force inclusion of both runops options */
+PERLVARI(Grunops_std, runops_proc_t, MEMBER_TO_FPTR(Perl_runops_standard))
+PERLVARI(Grunops_dbg, runops_proc_t, MEMBER_TO_FPTR(Perl_runops_debug))
+
+/* Hooks to shared SVs and locks. */
+PERLVARI(Gsharehook, share_proc_t, MEMBER_TO_FPTR(Perl_sv_nosharing))
+PERLVARI(Glockhook, share_proc_t, MEMBER_TO_FPTR(Perl_sv_nolocking))
+PERLVARI(Gunlockhook, share_proc_t, MEMBER_TO_FPTR(Perl_sv_nounlocking))
+PERLVARI(Gthreadhook, thrhook_proc_t, MEMBER_TO_FPTR(Perl_nothreadhook))
+
+/* Stores the PPID */
+#ifdef THREADS_HAVE_PIDS
+PERLVARI(Gppid, IV, 0)
+#endif
+
+#ifdef USE_ITHREADS
+PERLVAR(Gdollarzero_mutex, perl_mutex) /* Modifying $0 */
+#endif