Ejemplo n.º 1
0
static void event(void)
{
#if MQX_USE_EVENTS
   IF_TINIEST(pointer  handle=0);
   IF_TINIEST(_mqx_uint value=0);

   IF_SMALL(_event_create_component(1, 1, 1));
   IF_SMALL(_event_create_fast(1));
   IF_SMALL(_event_create_fast_auto_clear(1));
   IF_SMALL(_event_open("e", &handle));
   IF_SMALL(_event_set(handle, 0));
   IF_SMALL(_event_clear(handle, 0));
   IF_SMALL(_event_wait_all(handle, 0, 0));

   IF_TYPICAL(_event_close(handle));
   IF_TYPICAL(_event_create("e"));
   IF_MAX(_event_create_auto_clear("e"));
   IF_TYPICAL(_event_destroy("e"));
   IF_MAX(_event_destroy_fast(1));
   IF_MAX(_event_get_value(handle, &value));
   IF_MAX(_event_get_wait_count(handle));
   IF_MAX(_event_open_fast(1, &handle));
   IF_MAX(_event_test(&handle));
   IF_MAX(_event_wait_all_for(handle, 0, NULL));
   IF_TYPICAL(_event_wait_all_ticks(handle, 0, 0));
   IF_MAX(_event_wait_all_until(handle, 0, NULL));
   IF_MAX(_event_wait_any(handle, 0, 0));
   IF_MAX(_event_wait_any_for(handle, 0, NULL));
   IF_TYPICAL(_event_wait_any_ticks(handle, 0, 0));
   IF_MAX(_event_wait_any_until(handle, 0, NULL));
#endif

}
Ejemplo n.º 2
0
// -----[ _fifo_event_destroy ]--------------------------------------
static void _fifo_event_destroy(void ** item_ref)
{
  _event_t ** event_ref= (_event_t **) item_ref;
  _event_t * event= *event_ref;

  if (event == NULL)
    return;
  
  if ((event->ops != NULL) && (event->ops->destroy != NULL))
    event->ops->destroy(event->ctx);
  _event_destroy(event_ref);
}
Ejemplo n.º 3
0
/**
 * Process the events in the global linear queue.
 *
 * Arguments:
 * - iNumSteps: number of events to process during this run (if -1,
 *   process events until queue is empty).
 */
static net_error_t _run(sched_t * self, unsigned int num_steps)
{
  sched_static_t * sched= (sched_static_t *) self;
  _event_t * event;
  net_error_t error;

  sched->cancelled= 0;

  while ((!sched->cancelled) &&
	 ((event= (_event_t *) fifo_pop(sched->events)) != NULL)) {

    STREAM_DEBUG(STREAM_LEVEL_DEBUG, "=====<<< EVENT %2.2f >>>=====\n",
	      (double) sched->cur_time);
    error= event->ops->callback(sched->sim, event->ctx);
    _event_destroy(&event);
    if (error != ESUCCESS)
      return error;
    STREAM_DEBUG(STREAM_LEVEL_DEBUG, "\n");

    // Update simulation time
    sched->cur_time++;

    // Limit on simulation time ??
    if ((sched->sim->max_time > 0) &&
	(sched->cur_time >= sched->sim->max_time))
      return ESIM_TIME_LIMIT;

    // Limit on number of steps
    if (num_steps > 0) {
      num_steps--;
      if (num_steps == 0)
	break;
    }

    _log_progress(sched);
  }
  return ESUCCESS;
}