📄 rvsem_.h
字号:
#if (0)
******************************************************************************
Filename :
Description :
******************************************************************************
Copyright (c) 1999 RADVision Inc.
************************************************************************
NOTICE:
This document contains information that is proprietary to RADVision LTD.
No part of this publication may be reproduced in any form whatsoever
without written prior approval by RADVision LTD..
RADVision LTD. reserves the right to revise this publication and make
changes without obligation to notify any person of such revisions or
changes.
******************************************************************************
$Revision:$
$Date:$
$Author: S. Cipolli$
******************************************************************************
#endif
#ifndef RV_SEM__H
#define RV_SEM__H
#include "rvplatform.h"
/* OS dependent semaphore interface */
/* The interfaces in the this file are not for general consumption. */
/* Use rvsem.h instead. */
/* WIN32 implementation */
#if defined(RV_SEMAPHORE_WIN32)
#include <windows.h>
#include <process.h>
typedef HANDLE RvSem_;
#define rvSemConstruct_(s, i) ((*(s) = CreateSemaphore(0, (int)(i), 0xFFFFFFF, 0)), (s))
#define rvSemDestruct_(s) (CloseHandle(*(s)))
#define rvSemWait_(s) (WaitForSingleObject(*(s), INFINITE))
#define rvSemPost_(s) (ReleaseSemaphore(*(s), 1, 0))
/* POSIX implementation */
#elif defined(RV_SEMAPHORE_POSIX)
#include <semaphore.h>
typedef sem_t RvSem_;
#define rvSemConstruct_(s, i) ((sem_init((s), 0, (i))), (s))
#define rvSemDestruct_(s) (sem_destroy(s))
#define rvSemWait_(s) (sem_wait(s))
#define rvSemPost_(s) (sem_post(s))
/* VxWorks implementation */
#elif defined(RV_SEMAPHORE_VXWORKS)
#include "semLib.h"
typedef SEM_ID RvSem_;
#define rvSemConstruct_(m, i) ((*(m) = semCCreate(SEM_Q_PRIORITY, (i))), (m))
#define rvSemDestruct_(m) (semDelete(*(m)))
#define rvSemWait_(m) (semTake(*(m), WAIT_FOREVER))
#define rvSemPost_(m) (semGive(*(m)))
/* PSoS */
#elif defined(RV_SEMAPHORE_PSOS)
#include <psos.h>
typedef unsigned long RvSem_;
#define rvSemConstruct_(m, i) (sm_create("", (i), SM_LOCAL | SM_PRIOR ,(m)), (m))
#define rvSemDestruct_(m) (sm_delete(*(m)))
#define rvSemWait_(m) (sm_p(*(m), SM_WAIT, 0))
#define rvSemPost_(m) (sm_v(*(m)))
#elif defined(RV_SEMAPHORE_OSE)
/* OSE implementation */
#include <ose.h>
typedef SEMAPHORE RvSem_;
RvSem_ *rvSemConstruct_(RvSem_ *s, unsigned int i);
void rvSemDestruct_(RvSem_ *s);
#define rvSemWait_(s) (wait_sem(s))
#define rvSemPost_(s) (signal_sem(s))
/* Nucleus implementation */
#elif defined(RV_SEMAPHORE_NUCLEUS)
#include "nucleus.h"
typedef NU_SEMAPHORE RvSem_;
#define rvSemConstruct_(m, i) (NU_Create_Semaphore((m), "rvsema", (i), NU_PRIORITY))
#define rvSemDestruct_(m) (NU_Delete_Semaphore((m)))
#define rvSemWait_(m) (NU_Obtain_Semaphore((m), NU_SUSPEND))
#define rvSemPost_(m) (NU_Release_Semaphore((m)))
#else
# error Unknown semaphore implementation
#endif
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -