亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? implement.h

?? SIP(Session Initiation Protocol)是由IETF定義
?? H
字號:
/*
 * implement.h
 *
 * Definitions that don't need to be public.
 *
 * Keeps all the internals out of pthread.h
 *
 * Pthreads-win32 - POSIX Threads Library for Win32
 * Copyright (C) 1998
 *
 * This library is free software; you can redistribute it and/or
 * modify it under the terms of the GNU Library 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
 * Library General Public License for more details.
 *
 * You should have received a copy of the GNU Library General Public
 * License along with this library; if not, write to the Free
 * Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
 * MA 02111-1307, USA
 */

#ifndef _IMPLEMENT_H
#define _IMPLEMENT_H

#ifdef __MINGW32__
#define PT_STDCALL
#else
#ifdef __cplusplus
#define PT_STDCALL __stdcall
#else
#define PT_STDCALL __stdcall
#endif
#endif

/* changed include from <semaphore.h> to use local file during development */
#include "semaphore.h"

typedef enum {
  /*
   * This enumeration represents the state of the thread;
   * The thread is still "alive" if the numeric value of the
   * state is greater or equal "PThreadStateRunning".
   */
  PThreadStateInitial = 0,	/* Thread not running                   */
  PThreadStateRunning,	        /* Thread alive & kicking               */
  PThreadStateSuspended,	/* Thread alive but suspended           */
  PThreadStateCanceling,	/* Thread alive but and is              */
                                /* in the process of terminating        */
                                /* due to a cancellation request        */
  PThreadStateException,	/* Thread alive but exiting             */
                                /* due to an exception                  */
  PThreadStateLast
}
PThreadState;


typedef enum {
  /*
   * This enumeration represents the reason why a thread has
   * terminated/is terminating.
   */
  PThreadDemisePeaceful = 0,	/* Death due natural causes     */
  PThreadDemiseCancelled,	/* Death due to user cancel     */
  PThreadDemiseException,	/* Death due to unhandled       */
                                /* exception                    */
  PThreadDemiseNotDead	/* I'm not dead!                */
}
PThreadDemise;

struct pthread_t_ {
  DWORD thread;
  HANDLE threadH;
  PThreadState state;
  PThreadDemise demise;
  void *exitStatus;
  void *parms;
  int ptErrno;
  int detachState;
  pthread_mutex_t cancelLock;  /* Used for async-cancel safety */
  int cancelState;
  int cancelType;
  HANDLE cancelEvent;
#if HAVE_SIGSET_T
  sigset_t sigmask;
#endif /* HAVE_SIGSET_T */
  int implicit:1;
  void *keys;
};


/* 
 * Special value to mark attribute objects as valid.
 */
#define PTW32_ATTR_VALID ((unsigned long) 0xC4C0FFEE)

struct pthread_attr_t_ {
  unsigned long valid;
  void *stackaddr;
  size_t stacksize;
  int detachstate;
  int priority;
#if HAVE_SIGSET_T
  sigset_t sigmask;
#endif /* HAVE_SIGSET_T */
};


/*
 * ====================
 * ====================
 * Mutexes and Condition Variables
 * ====================
 * ====================
 */

#define PTW32_OBJECT_AUTO_INIT ((void *) -1)
#define PTW32_OBJECT_INVALID   NULL

struct pthread_mutex_t_ {
  HANDLE mutex;
  CRITICAL_SECTION cs;
};


struct pthread_mutexattr_t_ {
  int pshared;
  int forcecs;
};


struct pthread_key_t_ {
  DWORD key;
  void (*destructor) (void *);
  pthread_mutex_t threadsLock;
  void *threads;
};


typedef struct ThreadParms ThreadParms;
typedef struct ThreadKeyAssoc ThreadKeyAssoc;

struct ThreadParms {
  pthread_t tid;
  void *(*start) (void *);
  void *arg;
};


struct pthread_cond_t_ {
  long waiters;                       /* # waiting threads             */
  pthread_mutex_t waitersLock;        /* Mutex that guards access to 
					 waiter count                  */
  sem_t sema;                         /* Queue up threads waiting for the 
					 condition to become signaled  */
  HANDLE waitersDone;                 /* An auto reset event used by the 
					 broadcast/signal thread to wait 
					 for the waiting thread(s) to wake
					 up and get a chance at the  
					 semaphore                     */
  int wasBroadcast;                   /* keeps track if we are signaling 
					 or broadcasting               */
};


struct pthread_condattr_t_ {
  int pshared;
};

#define RW_MAGIC    0x19283746

struct pthread_rwlock_t_ {
    pthread_mutex_t rw_lock;         /* basic lock on this struct */
    pthread_cond_t  rw_condreaders;  /* for reader threads waiting */
    pthread_cond_t  rw_condwriters;  /* for writer threads waiting */
    int             rw_magic;        /* for error checking */
    int             rw_nwaitreaders; /* the number waiting */
    int             rw_nwaitwriters; /* the number waiting */
    int             rw_refcount;     /* -1 if writer has the lock,
                                        else # readers holding the lock */
};

struct pthread_rwlockattr_t_ {
  int pshared;
};

struct ThreadKeyAssoc {
  /*
   * Purpose:
   *      This structure creates an association between a
   *      thread and a key.
   *      It is used to implement the implicit invocation
   *      of a user defined destroy routine for thread
   *      specific data registered by a user upon exiting a
   *      thread.
   *
   * Attributes:
   *      lock
   *              protects access to the rest of the structure
   *
   *      thread
   *              reference to the thread that owns the association.
   *              As long as this is not NULL, the association remains
   *              referenced by the pthread_t.
   *
   *      key
   *              reference to the key that owns the association.
   *              As long as this is not NULL, the association remains
   *              referenced by the pthread_key_t.
   *
   *      nextKey
   *              The pthread_t->keys attribute is the head of a
   *              chain of associations that runs through the nextKey
   *              link. This chain provides the 1 to many relationship
   *              between a pthread_t and all pthread_key_t on which
   *              it called pthread_setspecific.
   *
   *      nextThread
   *              The pthread_key_t->threads attribute is the head of
   *              a chain of assoctiations that runs through the
   *              nextThreads link. This chain provides the 1 to many
   *              relationship between a pthread_key_t and all the 
   *              PThreads that have called pthread_setspecific for
   *              this pthread_key_t.
   *
   *
   * Notes:
   *      1)      As long as one of the attributes, thread or key, is
   *              not NULL, the association is being referenced; once
   *              both are NULL, the association must be released.
   *
   *      2)      Under WIN32, an association is only created by
   *              pthread_setspecific if the user provided a
   *              destroyRoutine when they created the key.
   *
   *
   */
  pthread_mutex_t lock;
  pthread_t thread;
  pthread_key_t key;
  ThreadKeyAssoc *nextKey;
  ThreadKeyAssoc *nextThread;
};


#if defined(_MSC_VER) && !defined(__cplusplus)
/*
 * --------------------------------------------------------------
 * MAKE_SOFTWARE_EXCEPTION
 *      This macro constructs a software exception code following
 *      the same format as the standard Win32 error codes as defined
 *      in WINERROR.H
 *  Values are 32 bit values layed out as follows:
 *
 *   1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0
 *  +---+-+-+-----------------------+-------------------------------+
 *  |Sev|C|R|     Facility          |               Code            |
 *  +---+-+-+-----------------------+-------------------------------+
 *
 * Severity Values:
 */
#define SE_SUCCESS              0x00
#define SE_INFORMATION	        0x01
#define SE_WARNING              0x02
#define SE_ERROR                0x03

#define MAKE_SOFTWARE_EXCEPTION( _severity, _facility, _exception ) \
( (DWORD) ( ( (_severity) << 30 ) |	/* Severity code	*/ \
	    ( 1 << 29 )	|		/* MS=0, User=1		*/ \
	    ( 0 << 28 )	|		/* Reserved		*/ \
	    ( (_facility) << 16 ) |	/* Facility Code	*/ \
	    ( (_exception) <<  0 )	/* Exception Code	*/ \
	    ) )

/*
 * We choose one specific Facility/Error code combination to
 * identify our software exceptions vs. WIN32 exceptions.
 * We store our actual component and error code within
 * the optional information array.
 */
#define EXCEPTION_PTW32_SERVICES	\
     MAKE_SOFTWARE_EXCEPTION( SE_ERROR, \
			      PTW32_SERVICES_FACILITY, \
			      PTW32_SERVICES_ERROR )

#define PTW32_SERVICES_FACILITY		0xBAD
#define PTW32_SERVICES_ERROR	       	0xDEED

#endif /* _MSC_VER */

/*
 * Services available through EXCEPTION_PTW32_SERVICES
 * and also used [as parameters to ptw32_throw()] as
 * generic exception selectors.
 */
#define PTW32_EPS_CANCEL       0
#define PTW32_EPS_EXIT         1


/* Function pointer to TryEnterCriticalSection if it exists; otherwise NULL */
extern BOOL (WINAPI *ptw32_try_enter_critical_section)(LPCRITICAL_SECTION);

/* Declared in global.c */
extern int ptw32_processInitialized;
extern pthread_key_t ptw32_selfThreadKey;
extern pthread_key_t ptw32_cleanupKey;
extern CRITICAL_SECTION ptw32_mutex_test_init_lock;
extern CRITICAL_SECTION ptw32_cond_test_init_lock;
extern CRITICAL_SECTION ptw32_rwlock_test_init_lock;

/* Declared in misc.c */
#ifdef NEED_CALLOC
#define calloc(n, s) ptw32_calloc(n, s)
void *ptw32_calloc(size_t n, size_t s);
#endif

/* Declared in private.c */
void ptw32_throw(DWORD exception);

#ifdef __cplusplus
extern "C" {
#endif /* __cplusplus */

/*
 * =====================
 * =====================
 * Forward Declarations
 * =====================
 * =====================
 */
int ptw32_processInitialize (void);

void ptw32_processTerminate (void);

void ptw32_threadDestroy (pthread_t tid);

void ptw32_cleanupStack (void);

pthread_t ptw32_new (void);

#if ! defined (__MINGW32__) || defined (__MSVCRT__)
unsigned PT_STDCALL
#else
void
#endif
ptw32_threadStart (ThreadParms * threadParms);

void ptw32_callUserDestroyRoutines (pthread_t thread);

int ptw32_tkAssocCreate (ThreadKeyAssoc ** assocP,
			    pthread_t thread,
			    pthread_key_t key);

void ptw32_tkAssocDestroy (ThreadKeyAssoc * assoc);

int ptw32_sem_timedwait (sem_t * sem,
			    const struct timespec * abstime);

#ifdef NEED_SEM
void ptw32_decrease_semaphore(sem_t * sem);
BOOL ptw32_increase_semaphore(sem_t * sem,
                                 unsigned int n);
#endif /* NEED_SEM */

#ifdef __cplusplus
}
#endif /* __cplusplus */


/*
 * Check for old and new versions of cygwin. See the FAQ file:
 *
 * Question 1 - How do I get pthreads-win32 to link under Cygwin or Mingw32?
 *
 * Patch by Anders Norlander <anorland@hem2.passagen.se>
 */
#if defined(__CYGWIN32__) || defined(__CYGWIN__) || defined(NEED_CREATETHREAD)

/* 
 * Macro uses args so we can cast start_proc to LPTHREAD_START_ROUTINE
 * in order to avoid warnings because of return type
 */

#define _beginthreadex(security, \
		       stack_size, \
		       start_proc, \
		       arg, \
		       flags, \
		       pid) \
        CreateThread(security, \
		     stack_size, \
		     (LPTHREAD_START_ROUTINE) start_proc, \
		     arg, \
		     flags, \
		     pid)

#define _endthreadex ExitThread

#endif /* __CYGWIN32__ || __CYGWIN__ || NEED_CREATETHREAD*/


#endif /* _IMPLEMENT_H */

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
中文字幕第一区二区| 国产成人av电影在线| 99精品欧美一区二区三区小说| 久久久精品国产99久久精品芒果 | 国产精品中文有码| 国产午夜精品一区二区| 91久久精品午夜一区二区| 调教+趴+乳夹+国产+精品| 亚洲精品在线免费观看视频| 国产成人午夜片在线观看高清观看| 亚洲三级理论片| 精品美女一区二区| 91福利资源站| 欧美日本乱大交xxxxx| 国产一区二区三区免费| 亚洲一级二级三级| 日本一区二区三区国色天香| 777亚洲妇女| 一本久久a久久精品亚洲| 精品在线观看免费| 亚洲国产视频a| 中文字幕在线不卡一区 | 欧美日韩国产小视频在线观看| 在线观看免费亚洲| 北岛玲一区二区三区四区| 男女视频一区二区| 亚洲日本va午夜在线电影| 亚洲自拍偷拍欧美| 蜜臀精品一区二区三区在线观看 | 亚洲另类中文字| 精品国产乱码久久久久久蜜臀| 欧美mv日韩mv| 亚洲另类一区二区| 麻豆免费看一区二区三区| 成a人片国产精品| 国产 日韩 欧美大片| 在线观看日韩一区| 国产视频一区二区在线观看| 亚洲图片欧美色图| 福利视频网站一区二区三区| 欧美午夜影院一区| 欧美人伦禁忌dvd放荡欲情| 精品噜噜噜噜久久久久久久久试看| 国产精品污网站| 中文字幕精品三区| 男人的j进女人的j一区| 97国产精品videossex| 欧美一级高清片| 精品少妇一区二区三区日产乱码| 一区在线观看免费| 韩国精品久久久| 国产69精品久久777的优势| 欧美日韩不卡在线| 亚洲另类中文字| 不卡免费追剧大全电视剧网站| 日韩一区二区三| 一级中文字幕一区二区| 丝袜脚交一区二区| 激情欧美一区二区| 7777精品伊人久久久大香线蕉超级流畅| 亚洲国产精品高清| 国产成人免费视频网站高清观看视频| 欧美老肥妇做.爰bbww| 精品剧情v国产在线观看在线| 夜夜嗨av一区二区三区| www.色精品| 国产精品乱码久久久久久| 国产一区二区精品久久99| 精品三级在线观看| 久久成人免费日本黄色| 99re这里都是精品| 国产精品嫩草影院av蜜臀| www.亚洲在线| 国产欧美日韩中文久久| 国产美女在线精品| 国产无人区一区二区三区| 国产麻豆精品一区二区| 久久久影院官网| 国产99久久精品| 国产精品九色蝌蚪自拍| 亚洲一区二区精品3399| 欧美日韩一本到| 国产精品欧美精品| 91色综合久久久久婷婷| 精品国产免费久久| 国产高清不卡一区| 中文字幕一区不卡| 一本到高清视频免费精品| 亚洲午夜电影在线| 日韩亚洲欧美成人一区| 久久成人羞羞网站| 国产三级欧美三级日产三级99| 国产一区二区三区四区在线观看| 国产亚洲一区二区三区在线观看| 粉嫩嫩av羞羞动漫久久久| 亚洲视频一二区| 欧美日本一区二区在线观看| 老司机午夜精品| 中文字幕乱码日本亚洲一区二区| 99久久伊人网影院| 日本成人中文字幕在线视频| 91精品91久久久中77777| 日韩在线a电影| 欧美极品aⅴ影院| 欧美色综合天天久久综合精品| 免费在线观看日韩欧美| 久久综合狠狠综合久久激情 | 欧美一级二级三级乱码| 国内精品写真在线观看| 亚洲人成网站色在线观看| 高清成人免费视频| 亚洲卡通欧美制服中文| 欧美一级夜夜爽| 日本一区中文字幕| 亚洲国产一二三| 久久亚洲精品国产精品紫薇| 一本大道av伊人久久综合| 久久黄色级2电影| 亚洲与欧洲av电影| 久久久久久黄色| 欧美日本一区二区三区| 不卡的av网站| 久久成人久久爱| 亚洲综合一区二区| 国产欧美精品一区aⅴ影院 | 久久国产麻豆精品| 亚洲美女区一区| 欧美激情在线观看视频免费| 7777女厕盗摄久久久| 在线看不卡av| 成人av小说网| 国产精品一区二区黑丝| 免费在线观看一区二区三区| 亚洲黄一区二区三区| 国产欧美精品在线观看| 精品国产一区二区三区不卡| 91精品在线麻豆| 精品视频一区二区不卡| 一本色道久久综合亚洲精品按摩| 国产精品1区2区| 国产一区二区三区蝌蚪| 精品中文字幕一区二区小辣椒| 午夜精品福利一区二区三区蜜桃| 最新久久zyz资源站| 中文文精品字幕一区二区| 久久网这里都是精品| 欧美r级电影在线观看| 欧美成人精品二区三区99精品| 欧美男人的天堂一二区| 欧美综合一区二区三区| 欧洲一区在线电影| 日本丶国产丶欧美色综合| 色系网站成人免费| 91麻豆免费在线观看| 91片黄在线观看| 97se亚洲国产综合自在线观| 波多野结衣一区二区三区| 99re成人精品视频| 一本色道久久综合亚洲aⅴ蜜桃| a级高清视频欧美日韩| 91亚洲精品一区二区乱码| 在线视频国内一区二区| 欧美在线高清视频| 69精品人人人人| 欧美va在线播放| 国产精品乱码人人做人人爱 | 欧美影院一区二区| 欧美日韩一区二区三区在线看| 欧美喷水一区二区| 日韩精品中文字幕在线一区| 国产大陆a不卡| a在线欧美一区| 欧美日韩国产精选| 精品国产91久久久久久久妲己| 久久久精品人体av艺术| 一区视频在线播放| 日韩高清一区二区| 国产麻豆精品在线观看| 色综合天天综合给合国产| 国产乱码精品一品二品| 国产成人精品免费网站| 色94色欧美sute亚洲13| 在线综合亚洲欧美在线视频| 久久影院视频免费| 亚洲精品成人少妇| 久久不见久久见中文字幕免费| 国精品**一区二区三区在线蜜桃| 亚洲欧洲综合另类在线| 亚洲男人的天堂一区二区 | 国产很黄免费观看久久| jiyouzz国产精品久久| 欧美精品粉嫩高潮一区二区| 久久麻豆一区二区| 亚洲va韩国va欧美va精品| 久久精品欧美日韩| 亚洲一区二区三区四区中文字幕| 韩国av一区二区三区在线观看| www.亚洲在线| 久久色在线观看| 亚洲va欧美va人人爽|