*
* You should have received a copy of the GNU Lesser General Public
* License along with the Gnome Library; see the file COPYING.LIB. If not,
- * write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
+ * see <http://www.gnu.org/licenses/>.
*/
#ifndef __G_THREADPRIVATE_H__
#define __G_THREADPRIVATE_H__
#include "deprecated/gthread.h"
-#include "garray.h"
-#include "gslist.h"
-
-G_BEGIN_DECLS
-
-/* System thread identifier comparison and assignment */
-#if GLIB_SIZEOF_SYSTEM_THREAD == SIZEOF_VOID_P
-# define g_system_thread_assign(dest, src) \
- ((dest).dummy_pointer = (src).dummy_pointer)
-#else /* GLIB_SIZEOF_SYSTEM_THREAD != SIZEOF_VOID_P */
-# define g_system_thread_assign(dest, src) \
- (memcpy (&(dest), &(src), GLIB_SIZEOF_SYSTEM_THREAD))
-#endif /* GLIB_SIZEOF_SYSTEM_THREAD == SIZEOF_VOID_P */
-
-G_GNUC_INTERNAL void g_system_thread_self (gpointer thread);
-G_GNUC_INTERNAL void g_system_thread_join (gpointer thread);
-G_GNUC_INTERNAL void g_system_thread_create (GThreadFunc func,
- gpointer data,
- gulong stack_size,
- gboolean joinable,
- gpointer thread,
- GError **error);
-G_GNUC_INTERNAL gboolean g_system_thread_equal (gpointer thread1,
- gpointer thread2);
-
-G_GNUC_INTERNAL void g_system_thread_exit (void);
-G_GNUC_INTERNAL void g_system_thread_set_name (const gchar *name);
-
-G_GNUC_INTERNAL GThread *g_thread_new_internal (const gchar *name,
- GThreadFunc func,
- gpointer data,
- gboolean joinable,
- gsize stack_size,
- gboolean enumerable,
- GError **error);
typedef struct _GRealThread GRealThread;
struct _GRealThread
{
GThread thread;
- GRealThread *next;
- const gchar *name;
- gboolean enumerable;
+
+ gint ref_count;
+ gboolean ours;
+ gchar *name;
gpointer retval;
- GSystemThread system_thread;
};
-G_GNUC_INTERNAL extern GSystemThread zero_thread;
-G_GNUC_INTERNAL extern GMutex g_once_mutex;
+/* system thread implementation (gthread-posix.c, gthread-win32.c) */
+void g_system_thread_wait (GRealThread *thread);
+
+GRealThread * g_system_thread_new (GThreadFunc func,
+ gulong stack_size,
+ GError **error);
+void g_system_thread_free (GRealThread *thread);
-G_GNUC_INTERNAL void g_enumerable_thread_add (GRealThread *thread);
-G_GNUC_INTERNAL void g_enumerable_thread_remove (GRealThread *thread);
+void g_system_thread_exit (void);
+void g_system_thread_set_name (const gchar *name);
-/* initializers that may also use g_private_new() */
-G_GNUC_INTERNAL void _g_messages_thread_init_nomessage (void);
-#ifdef G_OS_WIN32
-G_GNUC_INTERNAL void g_thread_DllMain (void);
-#endif
+/* gthread.c */
+GThread * g_thread_new_internal (const gchar *name,
+ GThreadFunc proxy,
+ GThreadFunc func,
+ gpointer data,
+ gsize stack_size,
+ GError **error);
-G_END_DECLS
+gpointer g_thread_proxy (gpointer thread);
#endif /* __G_THREADPRIVATE_H__ */