가상 오퍼레이션 정의

이 태스크 정보

<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;
   }
};

피드백