Welcome to mirror list, hosted at ThFree Co, Russian Federation.

cygwin.com/git/newlib-cygwin.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristopher Faylor <me@cgf.cx>2000-02-17 22:38:33 +0300
committerChristopher Faylor <me@cgf.cx>2000-02-17 22:38:33 +0300
commit1fd5e000ace55b323124c7e556a7a864b972a5c4 (patch)
treedc4fcf1e5e22a040716ef92c496b8d94959b2baa /winsup/cygwin/dll_init.h
parent369d8a8fd5e887eca547bf34bccfdf755c9e5397 (diff)
import winsup-2000-02-17 snapshot
Diffstat (limited to 'winsup/cygwin/dll_init.h')
-rw-r--r--winsup/cygwin/dll_init.h102
1 files changed, 102 insertions, 0 deletions
diff --git a/winsup/cygwin/dll_init.h b/winsup/cygwin/dll_init.h
new file mode 100644
index 000000000..ca2cc2c20
--- /dev/null
+++ b/winsup/cygwin/dll_init.h
@@ -0,0 +1,102 @@
+/* dll_init.h
+
+ Copyright 1998 Cygnus Solutions
+
+This file is part of Cygwin.
+
+This software is a copyrighted work licensed under the terms of the
+Cygwin license. Please consult the file "CYGWIN_LICENSE" for
+details. */
+
+//-----------------------------------------------------------------------------
+// list of loaded DLL (used by fork & init)
+class DllList
+{
+public:
+ static DllList& the ();
+
+ // return dll index used for freeDll
+ int recordDll (HMODULE, per_process*);
+ void detachDll (int dll_index);
+
+ // called after initialization of main module in dll_crt0
+ void initAll ();
+
+ // global destructors of loaded dlls
+ void doGlobalDestructorsOfDlls ();
+
+ // number of dlls dlopened
+ int numberOfOpenedDlls ();
+
+ // boolean to determine if forked process must reload dlls opened with
+ // LoadLibrary or dlopen ...
+ // default = 0 (FALSE)
+ int forkeeMustReloadDlls ();
+ void forkeeMustReloadDlls (int);
+
+ void forkeeLoadDlls ();
+
+ // set name of current library opened with dlopen
+ void currentDlOpenedLib (const char*);
+};
+
+//-----------------------------------------------------------------------------
+//-----------------------------------------------------------------------------
+
+class DllListIterator
+{
+ int _type;
+ int _index;
+
+protected:
+ DllListIterator (int type);
+ int index () const { return _index; }
+
+public:
+ virtual ~DllListIterator();
+
+ int ok() { return _index!=-1; }
+ void operator++ ();
+ void operator++ (int) { operator++ (); }
+ operator per_process* ();
+};
+
+//-----------------------------------------------------------------------------
+
+class LinkedDllIterator : public DllListIterator
+{
+public:
+ LinkedDllIterator ();
+ ~LinkedDllIterator ();
+};
+
+//-----------------------------------------------------------------------------
+
+class LoadedDllIterator : public DllListIterator
+{
+public:
+ LoadedDllIterator ();
+ ~LoadedDllIterator ();
+};
+
+//-----------------------------------------------------------------------------
+
+#define DO_LINKED_DLL(var) \
+{ \
+LinkedDllIterator iterator; \
+while (iterator.ok ()) \
+{ \
+ per_process *var = (per_process *) iterator;
+
+#define DO_LOADED_DLL(var) \
+{ \
+LoadedDllIterator iterator; \
+while (iterator.ok ()) \
+{ \
+ per_process *var = (per_process *) iterator;
+
+#define DLL_DONE \
+ iterator++; \
+} \
+}
+