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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? rvthread.h

?? 基于h323協議的軟phone
?? H
?? 第 1 頁 / 共 3 頁
字號:
/***********************************************************************
Filename   : rvthread.h
Description: rvthread header file
************************************************************************
      Copyright (c) 2001,2002 RADVISION Inc. and RADVISION Ltd.
************************************************************************
NOTICE:
This document contains information that is confidential and proprietary
to RADVISION Inc. and RADVISION Ltd.. No part of this document may be
reproduced in any form whatsoever without written prior approval by
RADVISION Inc. or RADVISION Ltd..

RADVISION Inc. and RADVISION Ltd. reserve the right to revise this
publication and make changes without obligation to notify any person of
such revisions or changes.
***********************************************************************/
/*$
{package:
    {name: Thread}
    {superpackage: CCore}
    {include: rvthread.h}
    {description:
        {p: This module provides functions for creating and manipulating threads.}
        {p: Threads need to be constructed, created, and then started. Between being
            constructed and created, parameters such as stack size and special attributes
            may be set. The only parameter that may be changed after creating a thread is
            the priority.}
        {p: Pre-existing threads may use the RvThreadConstructFromUserThread function to
            create a thread handle so that thread specific variables and other functions
            which require a thread handle can be used. Since these threads are already
            running, attributes of these threads can not be changed and some OS's do not
            even allow the priority to be changed. Destructing a thread created in this
            manner does not delete the thread itself, it just returns it to the state
            it was in when RvThreadConstructFromUserThread was called. In addition
            RvThreadDestruct MUST be called before such a thread is allowed to exit.}
        {p: Functions which don't require a thread handle (except RvThreadCurrent) may
            be called from any thread, even if a handle was not constructed.}
    }
}
$*/
#ifndef RV_THREAD_H
#define RV_THREAD_H

#include "rvccore.h"
#include "rvlock.h"
#include "rvsemaphore.h"
#include "rvtime.h"

/* Error checks to make sure configuration has been done properly */
#if !defined(RV_THREAD_TYPE) || ((RV_THREAD_TYPE != RV_THREAD_POSIX) && \
    (RV_THREAD_TYPE != RV_THREAD_SOLARIS) && (RV_THREAD_TYPE != RV_THREAD_VXWORKS) && \
    (RV_THREAD_TYPE != RV_THREAD_PSOS) && (RV_THREAD_TYPE != RV_THREAD_OSE) && \
    (RV_THREAD_TYPE != RV_THREAD_NUCLEUS) && (RV_THREAD_TYPE != RV_THREAD_WIN32) && \
    (RV_THREAD_TYPE != RV_THREAD_WINCE) && (RV_THREAD_TYPE != RV_THREAD_UNIXWARE) && \
    (RV_THREAD_TYPE != RV_THREAD_NONE))
#error RV_THREAD_TYPE not set properly
#endif


#if (RV_THREAD_TYPE != RV_THREAD_NONE)

#if !defined(RV_THREAD_PRIORITY_DEFAULT)
#error RV_THREAD_PRIORITY_DEFAULT not set properly
#endif

#if !defined(RV_THREAD_STACKSIZE_DEFAULT)
#error RV_THREAD_STACKSIZE_DEFAULT not set properly
#endif

#if !defined(RV_THREAD_STACKSIZE_USEDEFAULT)
#error RV_THREAD_STACKSIZE_USEDEFAULT not set properly
#endif

#if !defined(RV_THREAD_ATTRIBUTE_DEFAULT)
#error RV_THREAD_ATTRIBUTE_DEFAULT not set properly
#endif

#if !defined(RV_THREAD_MAX_NAMESIZE) || (RV_THREAD_MAX_NAMESIZE < 1)
#error RV_THREAD_MAX_NAMESIZE not set properly
#endif

#if !defined(RV_THREAD_MAX_VARS) || (RV_THREAD_MAX_VARS < 1)
#error RV_THREAD_MAX_VARS not set properly
#endif

#if !defined(RV_THREAD_MAX_VARNAMESIZE) || (RV_THREAD_MAX_VARNAMESIZE < 1)
#error RV_THREAD_MAX_VARNAMESIZE not set properly
#endif

#endif /* (RV_THREAD_TYPE != RV_THREAD_NONE) */

/* End of configuration error checks */

/* Module specific error codes (-512..-1023). See rverror.h dor more details */
#define RV_THREAD_ERROR_RUNNING -512 /* Thead is running and cannot be destructed or started */
#define RV_THREAD_ERROR_NOTSTARTED -513 /* Thead has never been started */
#define RV_THREAD_ERROR_CREATED -514 /* Thread has already been created */
#define RV_THREAD_ERROR_NOTCREATED -515 /* Thread has not been created */
#define RV_THREAD_ERROR_DESTRUCTING -516 /* Another thread is already destructing this one */
#define RV_THREAD_ERROR_NOVARS -517 /* No more thread specific variable available */
#define RV_THREAD_ERROR_BADTHREAD -518 /* Current thread never constructed */
#define RV_THREAD_ERROR_USERAPP -519 /* Operation not allowed on user application thread */

/* Module specific Warning codes (512..1023). See rverror.h for more details */
#define RV_THREAD_WARNING_NOTFOUND 512 /* Variable find operation did not find a match */

/*$
{type:
    {name: RvThreadId}
    {superpackage: Thread}
    {include: rvthread.h}
    {description:
        {p: An OS specific thread ID. Used to identify threads regardless
            of whether or not a thread handle has been constructed for it.}
    }
}
$*/
/*$
{type:
    {name: RvThreadAttr}
    {superpackage: Thread}
    {include: rvthread.h}
    {description:
        {p: OS specific attributes and options used for threads. See definitions in rvthread.h
            along with the default values in rvccoreconfig.h for more information.}
    }
}
$*/
/* Get include files and define types for each OS. RvThreadId, */
/* RvThreadAttr, and RvThreadBlock need to be defined along */
/* with priority range and direction. RvThreadBlock is only used */
/* internally. */
#if (RV_THREAD_TYPE == RV_THREAD_NONE)
typedef RvInt RvThreadBlock;
typedef RvInt RvThreadId;
typedef struct
{
    RvInt unused;
} RvThreadAttr;
#endif

#if (RV_THREAD_TYPE == RV_THREAD_POSIX) || (RV_THREAD_TYPE == RV_THREAD_SOLARIS) || \
    (RV_THREAD_TYPE == RV_THREAD_UNIXWARE)
#include <pthread.h>
typedef pthread_attr_t RvThreadBlock; /* We use block for attributes since we don't want them touched directly */
typedef pthread_t RvThreadId;
typedef struct {
    /* These correspond to attributes in the pthread_attr struct that we let users set */
    int contentionscope;
    int policy;
    int inheritsched;
#if (RV_THREAD_TYPE == RV_THREAD_SOLARIS)
    size_t guardsize; /* Solaris extention to standard attributes (use (size_t)(-1) for default*/
#endif
} RvThreadAttr;
#define RV_THREAD_PRIORITY_MAX 0
#define RV_THREAD_PRIORITY_MIN 20
#define RV_THREAD_PRIORITY_INCREMENT (-1)
#endif

#if (RV_THREAD_TYPE == RV_THREAD_VXWORKS)
#include <vxworks.h>
#include <taskLib.h>
typedef WIND_TCB RvThreadBlock;
typedef int RvThreadId;
typedef int RvThreadAttr; /* options parameter to taskInit */
#define RV_THREAD_PRIORITY_MAX 2
#define RV_THREAD_PRIORITY_MIN 254
#define RV_THREAD_PRIORITY_INCREMENT (-1)
#endif

#if (RV_THREAD_TYPE == RV_THREAD_PSOS)
#include <psos.h>
typedef unsigned long RvThreadId;
typedef struct {
    unsigned long flags; /* t_create flags */
    unsigned long mode;  /* t_start mode */
    unsigned long tslice; /* tslice for t_tslice */
} RvThreadAttr;
#if (RV_OS_VERSION == RV_OS_PSOS_2_0)
typedef void* RvThreadBlock;
#else
/* Diab tool - for PowerPC */
typedef struct tinfo RvThreadBlock; /* pSOS doesn't give any access to actual TCB */
#endif
#define RV_THREAD_PRIORITY_MAX 240
#define RV_THREAD_PRIORITY_MIN 1
#define RV_THREAD_PRIORITY_INCREMENT 1
#endif

#if (RV_THREAD_TYPE == RV_THREAD_OSE)
#include <ose.h>
typedef PROCESS *RvThreadBlock;
typedef PROCESS RvThreadId;
typedef struct { /* parameters for create_process */
    enum PROCESS_TYPE proc_type;
    OSTIME timeslice;
    PROCESS block;
    struct OS_redir_entry *redir_table;
    OSVECTOR vector;
    OSUSER user;
} RvThreadAttr;
#define RV_THREAD_PRIORITY_MAX 1
#define RV_THREAD_PRIORITY_MIN 31
#define RV_THREAD_PRIORITY_INCREMENT (-1)
#endif

#if (RV_THREAD_TYPE == RV_THREAD_NUCLEUS)
#include <nucleus.h>
typedef NU_TASK RvThreadBlock;
typedef NU_TASK *RvThreadId;
typedef struct { /* parameters for NU_Create_task */
    UNSIGNED time_slice;
    OPTION preempt;
} RvThreadAttr;
#define RV_THREAD_PRIORITY_MAX 4
#define RV_THREAD_PRIORITY_MIN 255
#define RV_THREAD_PRIORITY_INCREMENT (-1)
#endif

#if (RV_THREAD_TYPE == RV_THREAD_WIN32) || (RV_THREAD_TYPE == RV_THREAD_WINCE)
#include <windows.h>
typedef HANDLE RvThreadBlock; /* use the tcb as the handle reference */
typedef DWORD RvThreadId;
typedef struct {
    BOOL disablepriorityboost; /* value for SetThreadPriorityBoost (Win NT 4.0 or newer only) */
    DWORD affinitymask;        /* value for SetThreadAffinityMask */
    DWORD idealprocessor;      /* value for SetThreadIdealProcessor (Win NT 4.0 or newer only) */
} RvThreadAttr;
#define RV_THREAD_PRIORITY_MAX 2
#define RV_THREAD_PRIORITY_MIN (-2)
#define RV_THREAD_PRIORITY_INCREMENT 1
#endif

/* Forward declaration */
typedef struct RvThread_s RvThread;

/*$
{callback:
    {name: RvThreadFunc}
    {superpackage: Thread}
    {include: rvthread.h}
    {description:
        {p: This is the function that should be called as the main function of a thread.}
    }
    {proto: void RvThreadFunc(RvThread *th, void *data);}
    {params:
        {param: {n: th} {d: Pointer to the thread structure of the current thread.}}
        {param: {n: data} {d: User parameter that was passed to RvThreadConstruct.}}
    }
}
$*/
typedef void (*RvThreadFunc)(RvThread *, void *);

/*$
{callback:
    {name: RvThreadVarFunc}
    {superpackage: Thread}
    {include: rvthread.h}
    {description:
        {p: This callback is called when a thread which has a thread specific variable
            associated with it exits. This callback is set when creating the thread
            specific variable.}
    }
    {proto: RvStatus RvThreadVarFunc(RvThread *th, void *data, RvUint32 index);}
    {params:
        {param: {n: th} {d: Pointer to the thread structure of the current thread.}}
        {param: {n: data} {d: The current value of the thread specific variable for this thread.}}
        {param: {n: index} {d: The index of the thread specific variable itself.}}
    }
    {notes:
        {note:  The callback will execute within thread that is exiting.}
        {note:  For threads constructed with RvThreadConstructFromUserThread, the callback will
                actually occur when the thread calls RvThreadDestruct.}
        {note:  The callback function may not make calls to RvThreadConstruct, RvThreadDestruct,
                RvThreadConstructFromUserThread, RvThreadCreateVar, or RvThreadDeleteVar.}
    }
}
$*/
typedef void (*RvThreadVarFunc)(RvThread *, void *, RvUint32 index);

/*$
{type:

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
91成人在线精品| 国产精品热久久久久夜色精品三区| 国产精品一区一区| 经典三级一区二区| 久久国产精品99久久人人澡| 毛片不卡一区二区| 免费欧美日韩国产三级电影| 日韩成人免费在线| 蜜桃传媒麻豆第一区在线观看| 日韩电影免费一区| 久久国内精品视频| 国产真实乱对白精彩久久| 国产在线观看免费一区| 丁香六月综合激情| 99麻豆久久久国产精品免费| 在线一区二区三区四区| 欧美高清激情brazzers| 久久综合av免费| 成人免费在线视频观看| 亚洲图片欧美综合| 国产综合久久久久影院| 不卡一区二区三区四区| 欧美中文字幕不卡| 精品剧情v国产在线观看在线| 久久综合九色综合久久久精品综合 | 在线播放国产精品二区一二区四区 | 欧美男生操女生| 精品久久久久久久久久久久久久久 | 日av在线不卡| 国产a久久麻豆| 欧美性大战久久久久久久| 精品国产免费人成电影在线观看四季 | 91免费观看国产| 91麻豆精品国产自产在线 | 国产精品国产自产拍高清av王其| 一二三区精品福利视频| 蜜桃视频在线一区| eeuss鲁片一区二区三区在线观看 eeuss鲁片一区二区三区在线看 | 国产做a爰片久久毛片 | 日本v片在线高清不卡在线观看| 久久国产精品72免费观看| 一本色道综合亚洲| 精品奇米国产一区二区三区| 怡红院av一区二区三区| 国产精品99久久久久久久女警| 在线看国产日韩| 国产精品久久久久天堂| 麻豆久久久久久| 欧美在线一二三四区| 国产精品网站一区| 韩国女主播成人在线观看| 欧美视频第二页| 综合中文字幕亚洲| 国产一区二区电影| 日韩午夜在线影院| 亚洲电影欧美电影有声小说| 91麻豆视频网站| 欧美激情一区二区三区四区| 久久精品72免费观看| 欧美军同video69gay| 亚洲伦在线观看| 成人av在线看| 欧美国产日韩亚洲一区| 国产一区二区三区观看| 精品久久久久久久久久久院品网| 日韩中文字幕区一区有砖一区| 色www精品视频在线观看| 国产精品久久久久久久裸模| 国产精品99久久久久久久vr | 中文字幕在线观看一区二区| 国产原创一区二区| 精品国产一区二区三区久久久蜜月| 无吗不卡中文字幕| 欧美久久久一区| 天天综合网 天天综合色| 欧美亚洲动漫制服丝袜| 亚洲五码中文字幕| 欧美精品一二三| 日韩av在线免费观看不卡| 91精品欧美久久久久久动漫| 日韩经典一区二区| 日韩欧美亚洲国产另类| 激情文学综合丁香| 久久久www成人免费毛片麻豆 | 日本亚洲天堂网| 日韩欧美一级二级三级久久久| 精品在线观看视频| 欧美国产视频在线| 色婷婷av一区二区三区软件| 一级日本不卡的影视| 欧美一区二区视频在线观看2020 | 精品sm在线观看| 国产成人av影院| 亚洲男同性视频| 欧美精品三级在线观看| 韩国在线一区二区| 国产精品国产三级国产aⅴ无密码| 色婷婷激情久久| 免费观看久久久4p| 中文字幕不卡的av| 欧美日韩午夜精品| 韩国午夜理伦三级不卡影院| 国产精品久久久久久久久久免费看| 91黄色免费观看| 久久精品国产亚洲高清剧情介绍| 久久精品亚洲国产奇米99| 色国产综合视频| 黑人巨大精品欧美黑白配亚洲| 中文字幕在线观看一区| 91精品国产乱| av电影在线观看不卡| 日本aⅴ免费视频一区二区三区 | 色噜噜狠狠成人中文综合| 视频精品一区二区| 一区在线播放视频| 欧美成人video| 在线观看国产日韩| 国产美女娇喘av呻吟久久| 亚洲综合免费观看高清完整版在线| 精品国产91久久久久久久妲己| 91在线免费播放| 激情综合网激情| 午夜影视日本亚洲欧洲精品| 日本一区二区久久| 日韩精品专区在线| 欧美日韩在线一区二区| 粉嫩嫩av羞羞动漫久久久| 麻豆91免费观看| 亚洲一区二区在线免费看| 国产欧美日韩卡一| 欧美精品一区二区三区蜜臀| 欧美日韩成人激情| 91久久久免费一区二区| 大胆亚洲人体视频| 国产九九视频一区二区三区| 水蜜桃久久夜色精品一区的特点 | 青青草97国产精品免费观看无弹窗版| 国产女人18毛片水真多成人如厕| 日韩一区二区三区免费看 | 亚洲精品视频在线看| 欧美激情艳妇裸体舞| 久久亚洲春色中文字幕久久久| 91精品国产色综合久久ai换脸| 欧洲亚洲精品在线| 欧美日韩午夜在线| 欧美日韩精品一区二区三区四区| 91啪九色porn原创视频在线观看| 成人精品视频.| 成人app网站| 色婷婷国产精品| 欧美专区在线观看一区| 欧美性受xxxx黑人xyx性爽| 一本色道久久综合亚洲精品按摩| 色偷偷久久一区二区三区| 在线看国产日韩| 欧美另类videos死尸| 日韩女优av电影在线观看| 中文字幕av一区 二区| 337p日本欧洲亚洲大胆色噜噜| 精品国产伦一区二区三区观看体验| 91精品国产综合久久久久| 日韩免费高清视频| 久久久亚洲精华液精华液精华液| 日韩欧美另类在线| 国产蜜臀av在线一区二区三区| 国产精品欧美一区喷水| 亚洲同性同志一二三专区| 亚洲综合视频在线观看| 亚洲va国产天堂va久久en| 男男视频亚洲欧美| 国产一区二区精品久久| 色综合天天视频在线观看| 欧美视频在线一区| 精品日韩一区二区| 欧美国产一区视频在线观看| 依依成人精品视频| 日韩av电影天堂| 国产成人激情av| 色一情一乱一乱一91av| 精品视频一区二区三区免费| 精品88久久久久88久久久| 国产精品少妇自拍| 香蕉加勒比综合久久| 国产成人免费高清| 欧美视频三区在线播放| 久久综合久久综合亚洲| 亚洲黄色小视频| 国产剧情一区在线| 欧美丰满少妇xxxxx高潮对白| 欧美哺乳videos| 亚洲一本大道在线| 国产成人鲁色资源国产91色综| 欧美又粗又大又爽| 国产日韩欧美麻豆| 蜜桃一区二区三区在线| 色综合 综合色| 国产欧美视频在线观看| 日韩电影在线一区二区三区| 99精品国产视频| 久久先锋影音av鲁色资源网|