<env>OSFactory 클래스 오퍼레이션에서 애플리케이션에 필요한 운영 체제 서비스를 작성하는 가상 오퍼레이션 세트를 정의해야 합니다. 이 서비스에는 태스킹, 동기화, 연결 포트, 메시지 큐 및 타이밍 서비스가 포함됩니다.
VxOS.h 파일에서 가상 오퍼레이션 선언은 다음과 같습니다.
public:
virtual OMOSMessageQueue *createOMOSMessageQueue(
OMBoolean /* shouldGrow */ = TRUE,
const long messageQueueSize =
OMOSThread::DefaultMessageQueueSize)
{ return (OMOSMessageQueue*)new
VxOSMessageQueue(messageQueueSize);}
virtual OMOSConnectionPort *createOMOSConnectionPort()
{
#ifdef _OMINSTRUMENT
return (OMOSConnectionPort*)new VxConnectionPort();
#else
return NULL;
#endif
}
virtual OMOSEventFlag* createOMOSEventFlag() {
return (OMOSEventFlag *)new VxOSEventFlag(); }
virtual OMOSThread *createOMOSThread(void tfunc(
void*), void *param,
const char* const threadName = NULL,
const long stackSize=OMOSThread::DefaultStackSize)
{return (OMOSThread*)new VxThread(tfunc, param,
threadName, stackSize);};
virtual OMOSThread* createOMOSWrapperThread(
void* osHandle) {
if (NULL == osHandle)
osHandle = getCurrentThreadHandle();
return (OMOSThread*)new VxThread(osHandle);
}
virtual OMOSMutex *createOMOSMutex() {return
(OMOSMutex*)new VxMutex();}
virtual OMOSTimer *createOMOSTickTimer(timeUnit tim,
void cbkfunc(void*), void *param) {
return (OMOSTimer*)new VxTimer(tim, cbkfunc,
param); // TickTimer for real time
}
virtual OMOSTimer *createOMOSIdleTimer(
void cbkfunc(void*), void *param) {
return (OMOSTimer*)new VxTimer(cbkfunc, param);
/ Idle timer for simulated time
}
virtual OMOSSemaphore* createOMOSSemaphore(
unsigned long semFlags = 0,
unsigned long initialCount = 1,
unsigned long /* maxCount */ = 1,
const char * const /* name */ = NULL)
{
return (OMOSSemaphore*) new VxSemaphore(
semFlags, initialCount);
}
virtual void* getCurrentThreadHandle();
virtual void delayCurrentThread(timeUnit ms);
virtual OMBoolean waitOnThread(void* osHandle,
timeUnit ms) {return FALSE;
}
};