/* GLIB - Library of useful routines for C programming * * gthreadprivate.h - GLib internal thread system related declarations. * * Copyright (C) 2003 Sebastian Wilhelmi * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public License * along with this library; if not, see . */ #ifndef __G_THREADPRIVATE_H__ #define __G_THREADPRIVATE_H__ #include "config.h" #include "deprecated/gthread.h" typedef struct _GRealThread GRealThread; struct _GRealThread { GThread thread; gint ref_count; gboolean ours; gchar *name; gpointer retval; }; /* system thread implementation (gthread-posix.c, gthread-win32.c) */ /* Platform-specific scheduler settings for a thread */ typedef struct { #if defined(HAVE_SYS_SCHED_GETATTR) /* This is for modern Linux */ struct sched_attr *attr; #elif defined(G_OS_WIN32) gint thread_prio; #else /* TODO: Add support for macOS and the BSDs */ void *dummy; #endif } GThreadSchedulerSettings; void g_system_thread_wait (GRealThread *thread); GRealThread *g_system_thread_new (GThreadFunc proxy, gulong stack_size, const GThreadSchedulerSettings *scheduler_settings, const char *name, GThreadFunc func, gpointer data, GError **error); void g_system_thread_free (GRealThread *thread); void g_system_thread_exit (void); void g_system_thread_set_name (const gchar *name); gboolean g_system_thread_get_scheduler_settings (GThreadSchedulerSettings *scheduler_settings); /* gthread.c */ GThread *g_thread_new_internal (const gchar *name, GThreadFunc proxy, GThreadFunc func, gpointer data, gsize stack_size, const GThreadSchedulerSettings *scheduler_settings, GError **error); gboolean g_thread_get_scheduler_settings (GThreadSchedulerSettings *scheduler_settings); gpointer g_thread_proxy (gpointer thread); guint g_thread_n_created (void); gpointer g_private_set_alloc0 (GPrivate *key, gsize size); #endif /* __G_THREADPRIVATE_H__ */