bool canStartDriver() {
    transferBuf_s s_transferBuf;

    int16_t rc = createMsqs( msqDataClient );

    if ( rc != HAL_NO_ERR )
      return false;

    s_transferBuf.i32_mtypePid = msqDataClient.i32_pid;
    s_transferBuf.ui16_command = COMMAND_REGISTER;
    s_transferBuf.s_startTimeClock.t_clock = getStartupTime();

    rc = send_command( &s_transferBuf, &msqDataClient );

    if ( rc == HAL_NO_ERR ) {

      if ( s_transferBuf.s_acknowledge.i32_dataContent != ACKNOWLEDGE_DATA_CONTENT_PIPE_ID ) {
        return false;
      }

#ifdef USE_MUTUAL_EXCLUSION
      if( pipe2( breakWaitPipeFd, O_NONBLOCK ) != 0 ) {
        perror("pipe");
      }
#endif

      char pipe_name[255];
      sprintf( pipe_name, "%s%d", PIPE_PATH, s_transferBuf.s_acknowledge.i32_data );

      int fd = open( pipe_name, O_NONBLOCK | O_RDONLY );
      if( fd == -1 ) {
        return false;
      } else {
        msqDataClient.i32_pipeHandle = fd;
      }
    }

    return true;
  }
Exemple #2
0
	StartupTimeStaticInitializer ()
	{
        getStartupTime();
    }
Boolean UNIX_ApplicationSystem::getStartupTime(CIMProperty &p) const
{
	p = CIMProperty(PROPERTY_STARTUP_TIME, getStartupTime());
	return true;
}