rtems_task Task5( rtems_task_argument argument ) { void *segment_address_1; void *segment_address_2; rtems_status_code status; puts( "TA5 - rtems_region_get_segment - wait on 1.5K segment from region 1" ); status = rtems_region_get_segment( Region_id[ 1 ], 1536, RTEMS_DEFAULT_OPTIONS, RTEMS_NO_TIMEOUT, &segment_address_1 ); directive_failed( status, "rtems_region_get_segment" ); status = rtems_region_return_segment( Region_id[ 1 ], segment_address_1 ); directive_failed( status, "rtems_region_return_segment" ); puts_nocr( "TA5 - got and returned " ); Put_address_from_area_1( segment_address_1 ); new_line; /* * Use TOD_MICROSECONDS_TO_TICKS not RTEMS_MICROSECONDS_TO_TICKS to * test C implementation in SuperCore -- not macro version used * everywhere else. */ status = rtems_task_wake_after( TOD_MICROSECONDS_TO_TICKS( 1000000 ) ); directive_failed( status, "rtems_task_wake_after" ); puts( "TA5 - rtems_region_get_segment - wait on 3K segment from region 1" ); status = rtems_region_get_segment( Region_id[ 1 ], 3072, RTEMS_DEFAULT_OPTIONS, RTEMS_NO_TIMEOUT, &segment_address_2 ); puts_nocr( "TA5 - got segment from region 1 - " ); Put_address_from_area_1( segment_address_2 ); new_line; status = rtems_region_return_segment( Region_id[ 1 ], segment_address_2 ); puts_nocr( "TA5 - rtems_region_return_segment - return segment to region 1 - " ); Put_address_from_area_1( segment_address_2 ); new_line; puts( "TA5 - rtems_task_delete - delete self" ); status = rtems_task_delete( RTEMS_SELF ); directive_failed( status, "rtems_task_delete of RTEMS_SELF" ); }
/** * BDBUF Sleep. */ static bool bdbuf_sleep (unsigned long msecs) { rtems_status_code sc; sc = rtems_task_wake_after (TOD_MICROSECONDS_TO_TICKS (msecs * 1000)); if (sc != RTEMS_SUCCESSFUL) { bdbuf_test_printf ("sleep wake after failed: "); bdbuf_test_print_sc (sc, true); return false; } return true; }
/** * BDBUf wait for the wait event. */ static rtems_status_code bdbuf_watch (unsigned long timeout) { rtems_status_code sc; rtems_event_set out; sc = rtems_event_receive (RTEMS_EVENT_1, RTEMS_WAIT | RTEMS_EVENT_ANY, TOD_MICROSECONDS_TO_TICKS (timeout * 1000), &out); if (sc != RTEMS_SUCCESSFUL) { bdbuf_test_printf ("watch: receive failed: "); bdbuf_test_print_sc (sc, true); } else if ((out & RTEMS_EVENT_1) == 0) { bdbuf_test_printf ("watch: received wrong event: %08x", out); } return sc; }
/* * Once tasking has started we use a task sleep. */ static void pc386_ide_tasking_sleep (void) { rtems_task_wake_after (TOD_MICROSECONDS_TO_TICKS (10000) ? TOD_MICROSECONDS_TO_TICKS (10000) : 1); }
static void capture_wait (uint32_t period) { rtems_task_wake_after (TOD_MICROSECONDS_TO_TICKS (period * 1000)); }