source: win32/libpthreads-w32-2.8.0/include/sched.h @ 273

Last change on this file since 273 was 191, checked in by tim, 15 years ago

updated scons build scripts to handle MinGW
added binaries for MinGW build dependencies

File size: 4.6 KB
Line 
1/*
2 * Module: sched.h
3 *
4 * Purpose:
5 *      Provides an implementation of POSIX realtime extensions
6 *      as defined in
7 *
8 *              POSIX 1003.1b-1993      (POSIX.1b)
9 *
10 * --------------------------------------------------------------------------
11 *
12 *      Pthreads-win32 - POSIX Threads Library for Win32
13 *      Copyright(C) 1998 John E. Bossom
14 *      Copyright(C) 1999,2005 Pthreads-win32 contributors
15 *
16 *      Contact Email: rpj@callisto.canberra.edu.au
17 *
18 *      The current list of contributors is contained
19 *      in the file CONTRIBUTORS included with the source
20 *      code distribution. The list can also be seen at the
21 *      following World Wide Web location:
22 *      http://sources.redhat.com/pthreads-win32/contributors.html
23 *
24 *      This library is free software; you can redistribute it and/or
25 *      modify it under the terms of the GNU Lesser General Public
26 *      License as published by the Free Software Foundation; either
27 *      version 2 of the License, or (at your option) any later version.
28 *
29 *      This library is distributed in the hope that it will be useful,
30 *      but WITHOUT ANY WARRANTY; without even the implied warranty of
31 *      MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
32 *      Lesser General Public License for more details.
33 *
34 *      You should have received a copy of the GNU Lesser General Public
35 *      License along with this library in the file COPYING.LIB;
36 *      if not, write to the Free Software Foundation, Inc.,
37 *      59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
38 */
39#ifndef _SCHED_H
40#define _SCHED_H
41
42#undef PTW32_LEVEL
43
44#if defined(_POSIX_SOURCE)
45#define PTW32_LEVEL 0
46/* Early POSIX */
47#endif
48
49#if defined(_POSIX_C_SOURCE) && _POSIX_C_SOURCE >= 199309
50#undef PTW32_LEVEL
51#define PTW32_LEVEL 1
52/* Include 1b, 1c and 1d */
53#endif
54
55#if defined(INCLUDE_NP)
56#undef PTW32_LEVEL
57#define PTW32_LEVEL 2
58/* Include Non-Portable extensions */
59#endif
60
61#define PTW32_LEVEL_MAX 3
62
63#if !defined(PTW32_LEVEL)
64#define PTW32_LEVEL PTW32_LEVEL_MAX
65/* Include everything */
66#endif
67
68
69#if __GNUC__ && ! defined (__declspec)
70# error Please upgrade your GNU compiler to one that supports __declspec.
71#endif
72
73/*
74 * When building the DLL code, you should define PTW32_BUILD so that
75 * the variables/functions are exported correctly. When using the DLL,
76 * do NOT define PTW32_BUILD, and then the variables/functions will
77 * be imported correctly.
78 */
79#ifndef PTW32_STATIC_LIB
80#  ifdef PTW32_BUILD
81#    define PTW32_DLLPORT __declspec (dllexport)
82#  else
83#    define PTW32_DLLPORT __declspec (dllimport)
84#  endif
85#else
86#  define PTW32_DLLPORT
87#endif
88
89/*
90 * This is a duplicate of what is in the autoconf config.h,
91 * which is only used when building the pthread-win32 libraries.
92 */
93
94#ifndef PTW32_CONFIG_H
95#  if defined(WINCE)
96#    define NEED_ERRNO
97#    define NEED_SEM
98#  endif
99#  if defined(_UWIN) || defined(__MINGW32__)
100#    define HAVE_MODE_T
101#  endif
102#endif
103
104/*
105 *
106 */
107
108#if PTW32_LEVEL >= PTW32_LEVEL_MAX
109#ifdef NEED_ERRNO
110#include "need_errno.h"
111#else
112#include <errno.h>
113#endif
114#endif /* PTW32_LEVEL >= PTW32_LEVEL_MAX */
115
116#if defined(__MINGW32__) || defined(_UWIN)
117#if PTW32_LEVEL >= PTW32_LEVEL_MAX
118/* For pid_t */
119#  include <sys/types.h>
120/* Required by Unix 98 */
121#  include <time.h>
122#endif /* PTW32_LEVEL >= PTW32_LEVEL_MAX */
123#else
124typedef int pid_t;
125#endif
126
127/* Thread scheduling policies */
128
129enum {
130  SCHED_OTHER = 0,
131  SCHED_FIFO,
132  SCHED_RR,
133  SCHED_MIN   = SCHED_OTHER,
134  SCHED_MAX   = SCHED_RR
135};
136
137struct sched_param {
138  int sched_priority;
139};
140
141#ifdef __cplusplus
142extern "C"
143{
144#endif                          /* __cplusplus */
145
146PTW32_DLLPORT int __cdecl sched_yield (void);
147
148PTW32_DLLPORT int __cdecl sched_get_priority_min (int policy);
149
150PTW32_DLLPORT int __cdecl sched_get_priority_max (int policy);
151
152PTW32_DLLPORT int __cdecl sched_setscheduler (pid_t pid, int policy);
153
154PTW32_DLLPORT int __cdecl sched_getscheduler (pid_t pid);
155
156/*
157 * Note that this macro returns ENOTSUP rather than
158 * ENOSYS as might be expected. However, returning ENOSYS
159 * should mean that sched_get_priority_{min,max} are
160 * not implemented as well as sched_rr_get_interval.
161 * This is not the case, since we just don't support
162 * round-robin scheduling. Therefore I have chosen to
163 * return the same value as sched_setscheduler when
164 * SCHED_RR is passed to it.
165 */
166#define sched_rr_get_interval(_pid, _interval) \
167  ( errno = ENOTSUP, (int) -1 )
168
169
170#ifdef __cplusplus
171}                               /* End of extern "C" */
172#endif                          /* __cplusplus */
173
174#undef PTW32_LEVEL
175#undef PTW32_LEVEL_MAX
176
177#endif                          /* !_SCHED_H */
178
Note: See TracBrowser for help on using the repository browser.