コード例 #1
0
ファイル: socket.c プロジェクト: timurey/oryx_stm32f205
error_t socketInit(void)
{
   uint_t i;
   uint_t j;

   //Create a mutex to prevent simultaneous access to sockets
   if(!osCreateMutex(&socketMutex))
   {
      //Failed to create mutex
      return ERROR_OUT_OF_RESOURCES;
   }

   //Initialize socket related data
   memset(socketTable, 0, sizeof(socketTable));

   //Loop through socket descriptors
   for(i = 0; i < SOCKET_MAX_COUNT; i++)
   {
      //Set socket identifier
      socketTable[i].descriptor = i;

      //Create an event object to track socket events
      if(!osCreateEvent(&socketTable[i].event))
      {
         //Clean up side effects
         for(j = 0; j < i; j++)
            osDeleteEvent(&socketTable[j].event);

         //Delete mutex
         osDeleteMutex(&socketMutex);

         //Report an error
         return ERROR_OUT_OF_RESOURCES;
      }
   }

   //Successful initialization
   return NO_ERROR;
}
コード例 #2
0
ファイル: ipv4.c プロジェクト: frankzzcn/M2_SE_RTOS_Project
error_t ipv4Init(NetInterface *interface)
{
   //Use default MTU
   interface->ipv4Config.mtu = interface->nicDriver->mtu;

   //Identification field is primarily used to identify
   //fragments of an original IP datagram
   interface->ipv4Identification = 0;

   //Create a mutex to prevent simultaneous access to the IPv4 filter table
   if(!osCreateMutex(&interface->ipv4FilterMutex))
   {
      //Failed to create mutex
      return ERROR_OUT_OF_RESOURCES;
   }

   //Clear IPv4 filter table contents
   memset(interface->ipv4Filter, 0, sizeof(interface->ipv4Filter));
   //No entry in the filter table
   interface->ipv4FilterSize = 0;

#if (IPV4_FRAG_SUPPORT == ENABLED)
   //Create a mutex to prevent simultaneous access to the reassembly queue
   if(!osCreateMutex(&interface->ipv4FragQueueMutex))
   {
      //Clean up side effects
      osDeleteMutex(&interface->ipv4FilterMutex);
      //Report an error
      return ERROR_OUT_OF_RESOURCES;
   }

   //Clear the reassembly queue
   memset(interface->ipv4FragQueue, 0, sizeof(interface->ipv4FragQueue));
#endif

   //Successful initialization
   return NO_ERROR;
}
コード例 #3
0
ファイル: irradiance.cpp プロジェクト: ataibarkai/Pixie-iOS
///////////////////////////////////////////////////////////////////////
// Class				:	CIrradianceCache
// Method				:	~CIrradianceCache
// Description			:	Dtor
// Return Value			:
// Comments				:
CIrradianceCache::~CIrradianceCache() {

	osDeleteMutex(mutex);

	// Are we writing the file out ?
	if (flags & CACHE_WRITE) {
		if (name[0] != 0) {
			FILE	*out	=	ropen(name,"wb",fileIrradianceCache);

			if (out != NULL) {
			
				// Write the samples
				fwrite(&maxDepth,	sizeof(int),1,out);
				writeNode(out,root);

				fclose(out);
			}
		}
	}

	// Delete the memory pool
	delete memory;
}