*
* 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
typedef struct _GRealThread GRealThread;
-typedef void (*GThreadSetup) (GRealThread *thread);
-
-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 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,
- GThreadSetup setup_func,
- GError **error);
-
struct _GRealThread
{
GThread thread;
- const gchar *name;
- GThreadSetup setup_func;
+
+ gint ref_count;
+ gboolean ours;
+ gchar *name;
gpointer retval;
- GSystemThread system_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);
+
+void g_system_thread_exit (void);
+void g_system_thread_set_name (const gchar *name);
+
-#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__ */