www.pudn.com > QQ_Sniffer.rar > 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,2003 Pthreads-win32 contributors 
 *  
 *      Contact Email: rpj@callisto.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  
#endif 
#endif /* PTW32_LEVEL >= PTW32_LEVEL_MAX */ 
 
#if defined(__MINGW32__) || defined(_UWIN) 
#if PTW32_LEVEL >= PTW32_LEVEL_MAX 
/* For pid_t */ 
#  include  
/* Required by Unix 98 */ 
#  include  
#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 */