本文整理汇总了C++中rtems_task_start函数的典型用法代码示例。如果您正苦于以下问题:C++ rtems_task_start函数的具体用法?C++ rtems_task_start怎么用?C++ rtems_task_start使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了rtems_task_start函数的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: Task01
rtems_task Task01( rtems_task_argument ignored )
{
rtems_status_code status;
/* Start up TA02, yield so it can run */
if ( sem_exe == 0 ) {
status = rtems_task_start( Task_id[1], Task02, 0 );
directive_failed( status, "rtems_task_start of TA02" );
} else {
status = rtems_task_restart( Task_id[1], 0 );
directive_failed( status, "rtems_task_restart of TA02" );
}
rtems_task_wake_after( RTEMS_YIELD_PROCESSOR );
/* Benchmark code */
for ( ; count < BENCHMARKS ; ) {
if ( sem_exe == 1 ) {
rtems_semaphore_obtain( sem_id, RTEMS_WAIT, 0 );
}
rtems_task_wake_after( RTEMS_YIELD_PROCESSOR );
if ( sem_exe == 1 ) {
rtems_semaphore_release( sem_id );
}
rtems_task_wake_after( RTEMS_YIELD_PROCESSOR );
}
/* Should never reach here */
rtems_test_assert( false );
}
示例2: Init
static void Init(rtems_task_argument arg)
{
uint32_t self = rtems_get_current_processor();
uint32_t cpu_count = rtems_get_processor_count();
rtems_test_begink();
main_cpu = self;
if (cpu_count >= CPU_COUNT) {
rtems_status_code sc;
rtems_id id;
sc = rtems_task_create(
rtems_build_name( 'W', 'A', 'I', 'T' ),
1,
RTEMS_MINIMUM_STACK_SIZE,
RTEMS_DEFAULT_MODES,
RTEMS_DEFAULT_ATTRIBUTES,
&id
);
assert(sc == RTEMS_SUCCESSFUL);
sc = rtems_task_start(id, acquire_giant_and_fatal_task, 0);
assert(sc == RTEMS_SUCCESSFUL);
wait_for_giant();
} else {
rtems_test_endk();
exit(0);
}
}
示例3: start_validate_task
static void start_validate_task(
rtems_id *id,
uintptr_t pattern,
rtems_task_priority priority,
bool fp_unit
)
{
rtems_status_code sc;
rtems_attribute fpu_state;
fpu_state = fp_unit ? RTEMS_FLOATING_POINT : RTEMS_DEFAULT_ATTRIBUTES;
sc = rtems_task_create(
rtems_build_name('V', 'A', 'L', 'I'),
priority,
RTEMS_MINIMUM_STACK_SIZE,
RTEMS_DEFAULT_MODES,
fpu_state,
id
);
rtems_test_assert(sc == RTEMS_SUCCESSFUL);
sc = rtems_task_start(*id, validate_task, pattern);
rtems_test_assert(sc == RTEMS_SUCCESSFUL);
}
示例4: Init
rtems_task Init(
rtems_task_argument argument
)
{
rtems_status_code status;
printf(
"\n\n*** TEST 4 -- NODE %" PRId32 " ***\n",
Multiprocessing_configuration.node
);
Task_name[ 1 ] = rtems_build_name( '1', '1', '1', ' ' );
Task_name[ 2 ] = rtems_build_name( '2', '2', '2', ' ' );
puts( "Creating Test_task (Global)" );
status = rtems_task_create(
Task_name[ Multiprocessing_configuration.node ],
Multiprocessing_configuration.node,
RTEMS_MINIMUM_STACK_SIZE,
RTEMS_DEFAULT_MODES,
RTEMS_GLOBAL,
&Task_id[ 1 ]
);
directive_failed( status, "rtems_task_create" );
puts( "Starting Test_task (Global)" );
status = rtems_task_start( Task_id[ 1 ], Test_task, 0 );
directive_failed( status, "rtems_task_start" );
puts( "Deleting initialization task" );
status = rtems_task_delete( RTEMS_SELF );
directive_failed( status, "rtems_task_delete of RTEMS_SELF" );
}
示例5: create_task
static rtems_id create_task(
char name,
rtems_task_entry entry,
uart_bridge_master_control *control
)
{
rtems_status_code sc = RTEMS_SUCCESSFUL;
rtems_id task = RTEMS_ID_NONE;
char index = (char) ('0' + control->type - INTERCOM_TYPE_UART_0);
sc = rtems_task_create(
rtems_build_name('U', 'B', name, index),
QORIQ_UART_BRIDGE_TASK_PRIORITY,
0,
RTEMS_DEFAULT_MODES,
RTEMS_DEFAULT_ATTRIBUTES,
&task
);
assert(sc == RTEMS_SUCCESSFUL);
sc = rtems_task_start(
task,
entry,
(rtems_task_argument) control
);
assert(sc == RTEMS_SUCCESSFUL);
return task;
}
示例6: Init
rtems_task Init(
rtems_task_argument argument
)
{
rtems_status_code status;
puts( "\n\n*** TEST 21 ***" );
Task_name[ 1 ] = rtems_build_name( 'T', 'A', '1', ' ' );
status = rtems_task_create(
Task_name[ 1 ],
1,
RTEMS_MINIMUM_STACK_SIZE,
RTEMS_DEFAULT_MODES,
RTEMS_DEFAULT_ATTRIBUTES,
&Task_id[ 1 ]
);
directive_failed( status, "rtems_task_create of TA1" );
status = rtems_task_start( Task_id[ 1 ], Task_1, 0 );
directive_failed( status, "rtems_task_start of TA1" );
status = rtems_task_delete( RTEMS_SELF );
directive_failed( status, "rtems_task_delete of RTEMS_SELF" );
}
示例7: Init
rtems_task Init(
rtems_task_argument ignored
)
{
rtems_status_code status;
rtems_id task_id;
puts( "\n\n*** TEST 57 ***" );
puts( "Init - rtems_task_create - delay task - OK" );
status = rtems_task_create(
rtems_build_name( 'T', 'A', '1', ' ' ),
1,
RTEMS_MINIMUM_STACK_SIZE,
RTEMS_DEFAULT_OPTIONS,
RTEMS_DEFAULT_ATTRIBUTES,
&task_id
);
directive_failed( status, "rtems_task_create" );
puts( "Init - rtems_task_start - delay task - OK" );
status = rtems_task_start( task_id, Delay_task, 0 );
directive_failed( status, "rtems_task_start" );
puts( "Init - rtems_task_wake_after - let delay task block - OK" );
status = rtems_task_wake_after( RTEMS_MILLISECONDS_TO_TICKS(1000) );
directive_failed( status, "rtems_task_wake_after" );
puts( "Init - rtems_task_restart - delay task - OK" );
status = rtems_task_restart( task_id, 0 );
directive_failed( status, "rtems_task_restart" );
puts( "*** END OF TEST 57 ***" );
rtems_test_exit(0);
}
示例8: start_task
static void start_task(rtems_id id, rtems_task_entry entry)
{
rtems_status_code sc;
sc = rtems_task_start(id, entry, 0);
rtems_test_assert(sc == RTEMS_SUCCESSFUL);
}
示例9: test_with_request_server
static void test_with_request_server(void)
{
rtems_status_code sc;
rtems_id id;
request req;
sc = rtems_event_transient_receive(RTEMS_NO_WAIT, 0);
rtems_test_assert(sc == RTEMS_UNSATISFIED);
req.client = rtems_task_self();
req.complete = false;
sc = rtems_task_create(
rtems_build_name('S', 'E', 'R', 'V'),
1,
RTEMS_MINIMUM_STACK_SIZE,
RTEMS_DEFAULT_MODES,
RTEMS_DEFAULT_ATTRIBUTES,
&id
);
rtems_test_assert(sc == RTEMS_SUCCESSFUL);
sc = rtems_task_start(id, server_task, (rtems_task_argument) &req);
rtems_test_assert(sc == RTEMS_SUCCESSFUL);
sc = rtems_event_transient_receive(RTEMS_WAIT, RTEMS_NO_TIMEOUT);
rtems_test_assert(sc == RTEMS_SUCCESSFUL);
rtems_test_assert(req.complete);
}
示例10: Task01
/* Task01 starts with priority 36 */
rtems_task Task01(rtems_task_argument ignored)
{
rtems_status_code status;
printf("TA01: started with priority %d\n", getprio());
status = rtems_semaphore_obtain( sem_id[0], RTEMS_WAIT, 0 );
directive_failed( status, "rtems_semaphore_obtain of S0\n");
printf("TA01: priority %d, holding S0\n", getprio());
status = rtems_semaphore_obtain( sem_id[1], RTEMS_WAIT, 0 );
directive_failed( status, "rtems_semaphore_obtain of S1");
printf("TA01: priority %d, holding S0, S1\n", getprio());
/* Start Task 2 (TA02) with priority 34. It will run immediately. */
status = rtems_task_start( Task_id[1], Task02, 0);
directive_failed( status, "rtems_task_start of TA02\n");
status = rtems_semaphore_release(sem_id[1]);
directive_failed( status, "rtems_semaphore_release of S1\n");
printf("TA01: priority %d, holding S0\n", getprio());
status = rtems_semaphore_release(sem_id[0]);
directive_failed( status, "rtems_semaphore_release of S0\n");
printf("TA01: priority %d\n", getprio());
printf("TA01: exiting\n");
printf("*** END OF SEM01 ***\n");
status = rtems_task_delete( RTEMS_SELF);
directive_failed( status, "rtems_task_delete TA01");
}
示例11: setThreadInfo
static void
setThreadInfo(rtems_id tid, const char *name, EPICSTHREADFUNC funptr,
void *parm)
{
struct taskVar *v;
uint32_t note;
rtems_status_code sc;
v = mallocMustSucceed (sizeof *v, "epicsThreadCreate_vars");
v->name = epicsStrDup(name);
v->id = tid;
v->funptr = funptr;
v->parm = parm;
v->threadVariableCapacity = 0;
v->threadVariables = NULL;
note = (uint32_t)v;
rtems_task_set_note (tid, RTEMS_NOTEPAD_TASKVAR, note);
taskVarLock ();
v->forw = taskVarHead;
v->back = NULL;
if (v->forw)
v->forw->back = v;
taskVarHead = v;
taskVarUnlock ();
if (funptr) {
sc = rtems_task_start (tid, threadWrapper, (rtems_task_argument)v);
if (sc != RTEMS_SUCCESSFUL)
errlogPrintf ("setThreadInfo: Can't start %s: %s\n",
name, rtems_status_text(sc));
}
}
示例12: init_task
rtems_task init_task(
rtems_task_argument ignored
)
{
rtems_id tid;
rtems_status_code status;
rtems_name name;
name = rtems_build_name( ’A’, ’P’, ’P’, ’1’ )
status = rtems_task_create(
name, 1, RTEMS_MINIMUM_STACK_SIZE,
RTEMS_NO_PREEMPT, RTEMS_FLOATING_POINT, &tid
);
if ( status != RTEMS_STATUS_SUCCESSFUL ) {
printf( "rtems_task_create failed with status of %d.\n", status );
exit( 1 );
}
status = rtems_task_start( tid, user_application, 0 );
if ( status != RTEMS_STATUS_SUCCESSFUL ) {
printf( "rtems_task_start failed with status of %d.\n", status );
exit( 1 );
}
status = rtems_task_delete( SELF );
/* should not return */
printf( "rtems_task_delete returned with status of %d.\n", status );
exit( 1 );
}
示例13: start_task
static void start_task(
test_context *ctx,
task_id id,
rtems_task_entry entry,
rtems_task_priority prio,
rtems_name scheduler
)
{
rtems_status_code sc;
rtems_id scheduler_id;
sc = rtems_task_create(
rtems_build_name('T', 'A', 'S', 'K'),
prio,
RTEMS_MINIMUM_STACK_SIZE,
RTEMS_DEFAULT_MODES,
RTEMS_DEFAULT_ATTRIBUTES,
&ctx->tasks[id]
);
rtems_test_assert(sc == RTEMS_SUCCESSFUL);
sc = rtems_scheduler_ident(scheduler, &scheduler_id);
rtems_test_assert(sc == RTEMS_SUCCESSFUL);
sc = rtems_task_set_scheduler(ctx->tasks[id], scheduler_id);
rtems_test_assert(sc == RTEMS_SUCCESSFUL);
sc = rtems_task_start(ctx->tasks[id], entry, id);
rtems_test_assert(sc == RTEMS_SUCCESSFUL);
}
示例14: Init
rtems_task Init(
rtems_task_argument argument
)
{
rtems_status_code status;
rtems_id task_id;
puts( "\n\n*** TEST @[email protected] ***" );
status = rtems_task_create(
rtems_build_name( 'T', 'E', 'S', 'T' ),
1,
RTEMS_MINIMUM_STACK_SIZE,
RTEMS_DEFAULT_MODES,
RTEMS_DEFAULT_ATTRIBUTES,
&task_id
);
directive_failed( status, "rtems_task_create" );
status = rtems_task_start( task_id, Test_task, 0 );
directive_failed( status, "rtems_task_start" );
puts( "*** END OF TEST @[email protected] ***" );
rtems_test_exit(0);
}
示例15: Init
rtems_task Init(
rtems_task_argument argument
)
{
rtems_status_code status;
rtems_id task_id;
Print_Warning();
TEST_BEGIN();
status = rtems_task_create(
rtems_build_name( 'T', 'A', '1', ' ' ),
RTEMS_MAXIMUM_PRIORITY - 1u,
RTEMS_MINIMUM_STACK_SIZE,
RTEMS_DEFAULT_MODES,
RTEMS_DEFAULT_ATTRIBUTES,
&task_id
);
directive_failed( status, "rtems_task_create of test_init" );
status = rtems_task_start( task_id, test_init, 0 );
directive_failed( status, "rtems_task_start of test_init" );
status = rtems_task_delete( RTEMS_SELF );
directive_failed( status, "rtems_task_delete of RTEMS_SELF" );
}