Beispiel #1
0
void SemA
   (
      uint32_t   parameter
   )
{
   _mqx_uint  sem_result;
   void      *Sem1_handle;

   /* create semaphore - sem.Sem1 */
   sem_result = _sem_create("sem.Sem1", 1, 0);
   if (sem_result != MQX_OK) {
      /* semaphore sem.Sem1 not be created */
   } /* endif */
   /* open connection to semaphore sem.Sem1 */
   sem_result = _sem_open("sem.Sem1",&Sem1_handle);
   if (sem_result != MQX_OK) {
      /* could not open sem.Sem1  */
   } /* endif */

   /*
   ** LOOP -
   */
   while ( TRUE ) {
      /* wait for semaphore sem.Sem1 */
      sem_result = _sem_wait_ticks(Sem1_handle, NO_TIMEOUT);
      if (sem_result != MQX_OK) {
         /* waiting on semaphore sem.Sem1 failed */
      }
      /* semaphore obtained, perform work */
      _time_delay_ticks(1);
      /* semaphore protected work done, release semaphore */
      sem_result = _sem_post(Sem1_handle);
   } /* endwhile */
} /*end of task*/
Beispiel #2
0
void main_task 
   (
      uint32_t initial_data
   )
{
   _task_id   task_id;
   _mqx_uint  i;

   fifo.READ_INDEX  = 0;
   fifo.WRITE_INDEX = 0;

   /* Create the semaphores */
   if (_sem_create_component(3,1,6) != MQX_OK) {
      printf("\nCreate semaphore component failed");
      _task_block();
   }
   if (_sem_create("sem.write", ARRAY_SIZE, 0) != MQX_OK) {
      printf("\nCreating write semaphore failed");
      _task_block();
   }
   if (_sem_create("sem.read", 0, 0) != MQX_OK) {
      printf("\nCreating read semaphore failed");
      _task_block();
   }
   if (_sem_create("sem.index", 1, 0) != MQX_OK) {
      printf("\nCreating index semaphore failed");
      _task_block();
   }

   /* Create the tasks */
   for (i = 0; i < NUM_WRITERS; i++) {
      task_id = _task_create(0, WRITE_TASK, (uint32_t)i);
      printf("\nwrite_task created, id 0x%lx", task_id);
   }
   
   task_id = _task_create(0,READ_TASK, 0);
   printf("\nread_task created, id 0x%lX", task_id);

   _task_block();

}
Beispiel #3
0
static int sem_new(lua_State *L)
{
	sem_t  *mutex;
	const char *semname = lua_tostring (L, 1);
	//delete semaphore
	_sem_delete(semname);
	//create semaphore
	mutex = _sem_create(semname);
	//close semaphore
	_sem_close(mutex);
	return 0;
}