146be48730333120a7b939116cef075e61c12c703David 'Digit' Turner/*
246be48730333120a7b939116cef075e61c12c703David 'Digit' Turner    SDL - Simple DirectMedia Layer
346be48730333120a7b939116cef075e61c12c703David 'Digit' Turner    Copyright (C) 1997-2006 Sam Lantinga
446be48730333120a7b939116cef075e61c12c703David 'Digit' Turner
546be48730333120a7b939116cef075e61c12c703David 'Digit' Turner    This library is free software; you can redistribute it and/or
646be48730333120a7b939116cef075e61c12c703David 'Digit' Turner    modify it under the terms of the GNU Lesser General Public
746be48730333120a7b939116cef075e61c12c703David 'Digit' Turner    License as published by the Free Software Foundation; either
846be48730333120a7b939116cef075e61c12c703David 'Digit' Turner    version 2.1 of the License, or (at your option) any later version.
946be48730333120a7b939116cef075e61c12c703David 'Digit' Turner
1046be48730333120a7b939116cef075e61c12c703David 'Digit' Turner    This library is distributed in the hope that it will be useful,
1146be48730333120a7b939116cef075e61c12c703David 'Digit' Turner    but WITHOUT ANY WARRANTY; without even the implied warranty of
1246be48730333120a7b939116cef075e61c12c703David 'Digit' Turner    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
1346be48730333120a7b939116cef075e61c12c703David 'Digit' Turner    Lesser General Public License for more details.
1446be48730333120a7b939116cef075e61c12c703David 'Digit' Turner
1546be48730333120a7b939116cef075e61c12c703David 'Digit' Turner    You should have received a copy of the GNU Lesser General Public
1646be48730333120a7b939116cef075e61c12c703David 'Digit' Turner    License along with this library; if not, write to the Free Software
1746be48730333120a7b939116cef075e61c12c703David 'Digit' Turner    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
1846be48730333120a7b939116cef075e61c12c703David 'Digit' Turner
1946be48730333120a7b939116cef075e61c12c703David 'Digit' Turner    Sam Lantinga
2046be48730333120a7b939116cef075e61c12c703David 'Digit' Turner    slouken@libsdl.org
2146be48730333120a7b939116cef075e61c12c703David 'Digit' Turner*/
2246be48730333120a7b939116cef075e61c12c703David 'Digit' Turner#include "SDL_config.h"
2346be48730333120a7b939116cef075e61c12c703David 'Digit' Turner
2446be48730333120a7b939116cef075e61c12c703David 'Digit' Turner/* These are functions that need to be implemented by a port of SDL */
2546be48730333120a7b939116cef075e61c12c703David 'Digit' Turner
2646be48730333120a7b939116cef075e61c12c703David 'Digit' Turner#ifndef _SDL_systhread_h
2746be48730333120a7b939116cef075e61c12c703David 'Digit' Turner#define _SDL_systhread_h
2846be48730333120a7b939116cef075e61c12c703David 'Digit' Turner
2946be48730333120a7b939116cef075e61c12c703David 'Digit' Turner#include "SDL_thread.h"
3046be48730333120a7b939116cef075e61c12c703David 'Digit' Turner
3146be48730333120a7b939116cef075e61c12c703David 'Digit' Turner/* This function creates a thread, passing args to SDL_RunThread(),
3246be48730333120a7b939116cef075e61c12c703David 'Digit' Turner   saves a system-dependent thread id in thread->id, and returns 0
3346be48730333120a7b939116cef075e61c12c703David 'Digit' Turner   on success.
3446be48730333120a7b939116cef075e61c12c703David 'Digit' Turner*/
3546be48730333120a7b939116cef075e61c12c703David 'Digit' Turner#ifdef SDL_PASSED_BEGINTHREAD_ENDTHREAD
3646be48730333120a7b939116cef075e61c12c703David 'Digit' Turnerextern int SDL_SYS_CreateThread(SDL_Thread *thread, void *args, pfnSDL_CurrentBeginThread pfnBeginThread, pfnSDL_CurrentEndThread pfnEndThread);
3746be48730333120a7b939116cef075e61c12c703David 'Digit' Turner#else
3846be48730333120a7b939116cef075e61c12c703David 'Digit' Turnerextern int SDL_SYS_CreateThread(SDL_Thread *thread, void *args);
3946be48730333120a7b939116cef075e61c12c703David 'Digit' Turner#endif
4046be48730333120a7b939116cef075e61c12c703David 'Digit' Turner
4146be48730333120a7b939116cef075e61c12c703David 'Digit' Turner/* This function does any necessary setup in the child thread */
4246be48730333120a7b939116cef075e61c12c703David 'Digit' Turnerextern void SDL_SYS_SetupThread(void);
4346be48730333120a7b939116cef075e61c12c703David 'Digit' Turner
4446be48730333120a7b939116cef075e61c12c703David 'Digit' Turner/* This function waits for the thread to finish and frees any data
4546be48730333120a7b939116cef075e61c12c703David 'Digit' Turner   allocated by SDL_SYS_CreateThread()
4646be48730333120a7b939116cef075e61c12c703David 'Digit' Turner */
4746be48730333120a7b939116cef075e61c12c703David 'Digit' Turnerextern void SDL_SYS_WaitThread(SDL_Thread *thread);
4846be48730333120a7b939116cef075e61c12c703David 'Digit' Turner
4946be48730333120a7b939116cef075e61c12c703David 'Digit' Turner/* This function kills the thread and returns */
5046be48730333120a7b939116cef075e61c12c703David 'Digit' Turnerextern void SDL_SYS_KillThread(SDL_Thread *thread);
5146be48730333120a7b939116cef075e61c12c703David 'Digit' Turner
5246be48730333120a7b939116cef075e61c12c703David 'Digit' Turner#endif /* _SDL_systhread_h */
53