[PD-cvs] pd/src pthread.h,NONE,1.1.2.1 sched.h,NONE,1.1.2.1 semaphore.h,NONE,1.1.2.1

carmen rocco ix9 at users.sourceforge.net
Thu Mar 25 08:37:23 CET 2004


Update of /cvsroot/pure-data/pd/src
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv23228

Added Files:
      Tag: impd_0_37
	pthread.h sched.h semaphore.h 
Log Message:
pthreads compatibility for windows


--- NEW FILE: sched.h ---
/*

 * Module: sched.h

 *

 * Purpose:

 *      Provides an implementation of POSIX realtime extensions

 *      as defined in 

 *

 *              POSIX 1003.1b-1993      (POSIX.1b)

 *

 * --------------------------------------------------------------------------

 *

 *      Pthreads-win32 - POSIX Threads Library for Win32

 *      Copyright(C) 1998 John E. Bossom

 *      Copyright(C) 1999,2002 Pthreads-win32 contributors

 * 

 *      Contact Email: rpj at ise.canberra.edu.au

 * 

 *      The current list of contributors is contained

 *      in the file CONTRIBUTORS included with the source

 *      code distribution. The list can also be seen at the

 *      following World Wide Web location:

 *      http://sources.redhat.com/pthreads-win32/contributors.html

 * 

 *      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 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 in the file COPYING.LIB;

 *      if not, write to the Free Software Foundation, Inc.,

 *      59 Temple Place - Suite 330, Boston, MA 02111-1307, USA

 */

#ifndef _SCHED_H

#define _SCHED_H



#undef PTW32_LEVEL



#if defined(_POSIX_SOURCE)

#define PTW32_LEVEL 0

/* Early POSIX */

#endif



#if defined(_POSIX_C_SOURCE) && _POSIX_C_SOURCE >= 199309

#undef PTW32_LEVEL

#define PTW32_LEVEL 1

/* Include 1b, 1c and 1d */

#endif



#if defined(INCLUDE_NP)

#undef PTW32_LEVEL

#define PTW32_LEVEL 2

/* Include Non-Portable extensions */

#endif



#define PTW32_LEVEL_MAX 3



#if !defined(PTW32_LEVEL)

#define PTW32_LEVEL PTW32_LEVEL_MAX

/* Include everything */

#endif





#if __GNUC__ && ! defined (__declspec)

# error Please upgrade your GNU compiler to one that supports __declspec.

#endif



/*

 * When building the DLL code, you should define PTW32_BUILD so that

 * the variables/functions are exported correctly. When using the DLL,

 * do NOT define PTW32_BUILD, and then the variables/functions will

 * be imported correctly.

 */

#ifdef PTW32_BUILD

# define PTW32_DLLPORT __declspec (dllexport)

#else

# define PTW32_DLLPORT __declspec (dllimport)

#endif



/*

 * This is a duplicate of what is in the autoconf config.h,

 * which is only used when building the pthread-win32 libraries.

 */



#ifndef PTW32_CONFIG_H

#  if defined(WINCE)

#    define NEED_ERRNO

#    define NEED_SEM

#  endif

#  if defined(_UWIN) || defined(__MINGW32__)

#    define HAVE_MODE_T

#  endif

#endif



/*

 *

 */



#if PTW32_LEVEL >= PTW32_LEVEL_MAX

#ifdef NEED_ERRNO

#include "need_errno.h"

#else

#include <errno.h>

#endif

#endif /* PTW32_LEVEL >= PTW32_LEVEL_MAX */



#if defined(__MINGW32__) || defined(_UWIN)

#if PTW32_LEVEL >= PTW32_LEVEL_MAX

/* For pid_t */

#  include <sys/types.h>

/* Required by Unix 98 */

#  include <time.h>

#endif /* PTW32_LEVEL >= PTW32_LEVEL_MAX */

#else

typedef int pid_t;

#endif



/* Thread scheduling policies */



enum {

  SCHED_OTHER = 0,

  SCHED_FIFO,

  SCHED_RR,

  SCHED_MIN   = SCHED_OTHER,

  SCHED_MAX   = SCHED_RR

};



struct sched_param {

  int sched_priority;

};



#ifdef __cplusplus

extern "C"

{

#endif                          /* __cplusplus */



PTW32_DLLPORT int sched_yield (void);



PTW32_DLLPORT int sched_get_priority_min (int policy);



PTW32_DLLPORT int sched_get_priority_max (int policy);



PTW32_DLLPORT int sched_setscheduler (pid_t pid, int policy);



PTW32_DLLPORT int sched_getscheduler (pid_t pid);



/*

 * Note that this macro returns ENOTSUP rather than

 * ENOSYS as might be expected. However, returning ENOSYS

 * should mean that sched_get_priority_{min,max} are

 * not implemented as well as sched_rr_get_interval.

 * This is not the case, since we just don't support

 * round-robin scheduling. Therefore I have chosen to

 * return the same value as sched_setscheduler when

 * SCHED_RR is passed to it.

 */

#define sched_rr_get_interval(_pid, _interval) \

  ( errno = ENOTSUP, (int) -1 )





#ifdef __cplusplus

}                               /* End of extern "C" */

#endif                          /* __cplusplus */



#undef PTW32_LEVEL

#undef PTW32_LEVEL_MAX



#endif                          /* !_SCHED_H */




--- NEW FILE: pthread.h ---
/* This is the POSIX thread API (POSIX 1003).

 *

 * --------------------------------------------------------------------------

 *

 *	Pthreads-win32 - POSIX Threads Library for Win32

 *	Copyright(C) 1998 John E. Bossom

 *	Copyright(C) 1999,2002 Pthreads-win32 contributors

 * 

 *	Contact Email: rpj at ise.canberra.edu.au

 * 

 *	The current list of contributors is contained

 *	in the file CONTRIBUTORS included with the source

 *	code distribution. The list can also be seen at the

 *	following World Wide Web location:

 *	http://sources.redhat.com/pthreads-win32/contributors.html

 * 

 *	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

[...1234 lines suppressed...]


#endif /* __CLEANUP_CXX */



#endif /* ! PTW32_BUILD */



#ifdef __cplusplus

}				/* End of extern "C" */

#endif				/* __cplusplus */



#ifdef PTW32__HANDLE_DEF

# undef HANDLE

#endif

#ifdef PTW32__DWORD_DEF

# undef DWORD

#endif



#undef PTW32_LEVEL

#undef PTW32_LEVEL_MAX



#endif /* PTHREAD_H */


--- NEW FILE: semaphore.h ---
/*

 * Module: semaphore.h

 *

 * Purpose:

 *	Semaphores aren't actually part of the PThreads standard.

 *	They are defined by the POSIX Standard:

 *

 *		POSIX 1003.1b-1993	(POSIX.1b)

 *

 * --------------------------------------------------------------------------

 *

 *	Pthreads-win32 - POSIX Threads Library for Win32

 *	Copyright(C) 1998 John E. Bossom

 *	Copyright(C) 1999,2002 Pthreads-win32 contributors

 * 

 *	Contact Email: rpj at ise.canberra.edu.au

 * 

 *	The current list of contributors is contained

 *	in the file CONTRIBUTORS included with the source

 *	code distribution. The list can also be seen at the

 *	following World Wide Web location:

 *	http://sources.redhat.com/pthreads-win32/contributors.html

 * 

 *	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 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 in the file COPYING.LIB;

 *	if not, write to the Free Software Foundation, Inc.,

 *	59 Temple Place - Suite 330, Boston, MA 02111-1307, USA

 */

#if !defined( SEMAPHORE_H )

#define SEMAPHORE_H



#undef PTW32_LEVEL



#if defined(_POSIX_SOURCE)

#define PTW32_LEVEL 0

/* Early POSIX */

#endif



#if defined(_POSIX_C_SOURCE) && _POSIX_C_SOURCE >= 199309

#undef PTW32_LEVEL

#define PTW32_LEVEL 1

/* Include 1b, 1c and 1d */

#endif



#if defined(INCLUDE_NP)

#undef PTW32_LEVEL

#define PTW32_LEVEL 2

/* Include Non-Portable extensions */

#endif



#define PTW32_LEVEL_MAX 3



#if !defined(PTW32_LEVEL)

#define PTW32_LEVEL PTW32_LEVEL_MAX

/* Include everything */

#endif



#if __GNUC__ && ! defined (__declspec)

# error Please upgrade your GNU compiler to one that supports __declspec.

#endif



/*

 * When building the DLL code, you should define PTW32_BUILD so that

 * the variables/functions are exported correctly. When using the DLL,

 * do NOT define PTW32_BUILD, and then the variables/functions will

 * be imported correctly.

 */

#ifdef PTW32_BUILD

# define PTW32_DLLPORT __declspec (dllexport)

#else

# define PTW32_DLLPORT __declspec (dllimport)

#endif





/*

 * This is a duplicate of what is in the autoconf config.h,

 * which is only used when building the pthread-win32 libraries.

 */



#ifndef PTW32_CONFIG_H

#  if defined(WINCE)

#    define NEED_ERRNO

#    define NEED_SEM

#  endif

#  if defined(_UWIN) || defined(__MINGW32__)

#    define HAVE_MODE_T

#  endif

#endif



/*

 *

 */



#if PTW32_LEVEL >= PTW32_LEVEL_MAX

#ifdef NEED_ERRNO

#include "need_errno.h"

#else

#include <errno.h>

#endif

#endif /* PTW32_LEVEL >= PTW32_LEVEL_MAX */



#define _POSIX_SEMAPHORES



#ifdef __cplusplus

extern "C"

{

#endif				/* __cplusplus */



#ifndef HAVE_MODE_T

typedef unsigned int mode_t;

#endif





typedef struct sem_t_ * sem_t;



PTW32_DLLPORT int sem_init (sem_t * sem,

			    int pshared,

			    unsigned int value);



PTW32_DLLPORT int sem_destroy (sem_t * sem);



PTW32_DLLPORT int sem_trywait (sem_t * sem);



PTW32_DLLPORT int sem_wait (sem_t * sem);



PTW32_DLLPORT int sem_timedwait (sem_t * sem,

				 const struct timespec * abstime);



PTW32_DLLPORT int sem_post (sem_t * sem);



PTW32_DLLPORT int sem_post_multiple (sem_t * sem,

				     int count);



PTW32_DLLPORT int sem_open (const char * name,

			    int oflag,

			    mode_t mode,

			    unsigned int value);



PTW32_DLLPORT int sem_close (sem_t * sem);



PTW32_DLLPORT int sem_unlink (const char * name);



PTW32_DLLPORT int sem_getvalue (sem_t * sem,

				int * sval);



#ifdef __cplusplus

}				/* End of extern "C" */

#endif				/* __cplusplus */



#undef PTW32_LEVEL

#undef PTW32_LEVEL_MAX



#endif				/* !SEMAPHORE_H */






More information about the Pd-cvs mailing list