本文整理汇总了C++中rtems_task_create函数的典型用法代码示例。如果您正苦于以下问题:C++ rtems_task_create函数的具体用法?C++ rtems_task_create怎么用?C++ rtems_task_create使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了rtems_task_create函数的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。
示例1: Init
rtems_task Init( rtems_task_argument ignored )
{
rtems_id thread;
rtems_status_code rc;
int sc;
struct timespec delay_request;
TEST_BEGIN();
puts( "Init - pthread key create with destructor - OK" );
sc = pthread_key_create( &key, destructor );
rtems_test_assert( !sc );
puts( "Init - thread create - OK" );
rc = rtems_task_create(
rtems_build_name( 'T', 'E', 'S', 'T' ),
1,
RTEMS_MINIMUM_STACK_SIZE,
RTEMS_DEFAULT_MODES,
RTEMS_DEFAULT_ATTRIBUTES,
&thread
);
rtems_test_assert( rc == RTEMS_SUCCESSFUL );
rc = rtems_task_start( thread, Test_Thread, 0 );
rtems_test_assert( rc == RTEMS_SUCCESSFUL );
puts( "Init - sleep - let thread run - OK" );
delay_request.tv_sec = 0;
delay_request.tv_nsec = 8 * 100000000;
sc = nanosleep( &delay_request, NULL );
rtems_test_assert( !sc );
puts( "Init - verify destructor did NOT run - OK" );
rtems_test_assert( destructor_ran == false );
/* puts( "Init - pthread key delete - OK" ); */
/* sc = pthread_key_delete( key ); */
/* rtems_test_assert( sc == 0 ); */
TEST_END();
rtems_test_exit(0);
}
开发者ID:AlexShiLucky,项目名称:rtems,代码行数:43,代码来源:init.c
示例2: test_init
rtems_task test_init(
rtems_task_argument argument
)
{
int index;
rtems_task_entry task_entry;
rtems_task_priority priority;
rtems_id task_id;
rtems_status_code status;
status = rtems_message_queue_create(
rtems_build_name( 'M', 'Q', '1', ' ' ),
OPERATION_COUNT,
MESSAGE_SIZE,
RTEMS_DEFAULT_ATTRIBUTES,
&Queue_id
);
directive_failed( status, "rtems_message_queue_create" );
priority = RTEMS_MAXIMUM_PRIORITY - 2u;
if ( OPERATION_COUNT > RTEMS_MAXIMUM_PRIORITY - 2u )
operation_count = (int) (RTEMS_MAXIMUM_PRIORITY - 2u);
for( index = 0; index < operation_count ; index++ ) {
status = rtems_task_create(
rtems_build_name( 'T', 'I', 'M', 'E' ),
priority,
RTEMS_MINIMUM_STACK_SIZE,
RTEMS_DEFAULT_MODES,
RTEMS_DEFAULT_ATTRIBUTES,
&task_id
);
directive_failed( status, "rtems_task_create LOOP" );
priority--;
if ( index==operation_count-1 ) task_entry = High_task;
else task_entry = Low_tasks;
status = rtems_task_start( task_id, task_entry, 0 );
directive_failed( status, "rtems_task_start LOOP" );
}
}
开发者ID:gedare,项目名称:rtems,代码行数:43,代码来源:task1.c
示例3: Init
rtems_task Init(
rtems_task_argument argument
)
{
uint32_t index;
rtems_status_code status;
puts( "\n\n*** TEST 20 ***" );
Task_name[ 1 ] = rtems_build_name( 'T', 'A', '1', ' ' );
Task_name[ 2 ] = rtems_build_name( 'T', 'A', '2', ' ' );
Task_name[ 3 ] = rtems_build_name( 'T', 'A', '3', ' ' );
Task_name[ 4 ] = rtems_build_name( 'T', 'A', '4', ' ' );
Task_name[ 5 ] = rtems_build_name( 'T', 'A', '5', ' ' );
Task_name[ 6 ] = rtems_build_name( 'T', 'A', '6', ' ' );
for ( index = 1 ; index <= 6 ; index++ ) {
status = rtems_task_create(
Task_name[ index ],
Priorities[ index ],
RTEMS_MINIMUM_STACK_SIZE * 4,
RTEMS_DEFAULT_MODES,
RTEMS_DEFAULT_ATTRIBUTES,
&Task_id[ index ]
);
directive_failed( status, "rtems_task_create loop" );
}
for ( index = 1 ; index <= 6 ; index++ ) {
status = rtems_task_start( Task_id[ index ], Task_1_through_6, index );
directive_failed( status, "rtems_task_start loop" );
}
Count.count[ 1 ] = 0;
Count.count[ 2 ] = 0;
Count.count[ 3 ] = 0;
Count.count[ 4 ] = 0;
Count.count[ 5 ] = 0;
Count.count[ 6 ] = 0;
status = rtems_task_delete( RTEMS_SELF );
directive_failed( status, "rtems_task_delete of RTEMS_SELF" );
}
开发者ID:FullMentalPanic,项目名称:RTEMS_NEW_TOOL_CHAIN,代码行数:43,代码来源:init.c
示例4: Init
static void Init(rtems_task_argument arg)
{
test_context *ctx = &test_instance;
rtems_status_code sc;
int rv;
TEST_BEGIN();
ctx->main_task = rtems_task_self();
sc = rtems_task_create(
rtems_build_name('C', 'L', 'O', 'S'),
2,
RTEMS_MINIMUM_STACK_SIZE,
RTEMS_DEFAULT_MODES,
RTEMS_DEFAULT_ATTRIBUTES,
&ctx->close_task
);
rtems_test_assert(sc == RTEMS_SUCCESSFUL);
sc = rtems_task_start(
ctx->close_task,
close_task,
(rtems_task_argument) ctx
);
rtems_test_assert(sc == RTEMS_SUCCESSFUL);
rv = rtems_bsdnet_initialize_network();
rtems_test_assert(rv == 0);
test_sync();
test_accept_and_close(ctx);
test_connect_and_close(ctx);
test_recv_and_close(ctx);
test_select_and_close(ctx);
sc = rtems_task_delete(ctx->close_task);
rtems_test_assert(sc == RTEMS_SUCCESSFUL);
TEST_END();
rtems_test_exit(0);
}
开发者ID:Avanznow,项目名称:rtems,代码行数:43,代码来源:init.c
示例5: test
static void test(void)
{
test_context *ctx = &ctx_instance;
rtems_status_code sc;
rtems_mode mode;
ctx->consumer = rtems_task_self();
ctx->consumer_processor = rtems_get_current_processor();
sc = rtems_signal_catch(signal_handler, RTEMS_DEFAULT_MODES);
rtems_test_assert(sc == RTEMS_SUCCESSFUL);
sc = rtems_task_create(
rtems_build_name('P', 'R', 'O', 'D'),
RTEMS_MINIMUM_PRIORITY,
RTEMS_MINIMUM_STACK_SIZE,
RTEMS_DEFAULT_MODES,
RTEMS_DEFAULT_ATTRIBUTES,
&ctx->producer
);
rtems_test_assert(sc == RTEMS_SUCCESSFUL);
sc = rtems_task_start(ctx->producer, producer, (rtems_task_argument) ctx);
rtems_test_assert(sc == RTEMS_SUCCESSFUL);
check_consumer_processor(ctx);
wait_for_state(ctx, SIG_0_SENT);
change_state(ctx, SIG_0_ENABLE);
sc = rtems_task_mode(RTEMS_ASR, RTEMS_ASR_MASK, &mode);
rtems_test_assert(sc == RTEMS_SUCCESSFUL);
wait_for_state(ctx, SIG_0_PROCESSED);
check_consumer_processor(ctx);
change_state(ctx, SIG_1_READY);
wait_for_state(ctx, SIG_1_PROCESSED);
check_consumer_processor(ctx);
}
开发者ID:goetzpf,项目名称:rtems,代码行数:42,代码来源:init.c
示例6: test
static void test(void)
{
test_context *ctx;
rtems_status_code sc;
size_t i;
ctx = &test_instance;
ctx->master_id = rtems_task_self();
for (i = 0; i < TASK_COUNT; ++i) {
sc = rtems_task_create(
NAME,
P(i),
RTEMS_MINIMUM_STACK_SIZE,
RTEMS_DEFAULT_MODES,
RTEMS_DEFAULT_ATTRIBUTES,
&ctx->task_ids[i]
);
rtems_test_assert(sc == RTEMS_SUCCESSFUL);
sc = rtems_task_start(ctx->task_ids[i], do_nothing_task, 0);
rtems_test_assert(sc == RTEMS_SUCCESSFUL);
}
sc = rtems_timer_create(NAME, &ctx->timer_id);
rtems_test_assert(sc == RTEMS_SUCCESSFUL);
sc = rtems_timer_fire_after(ctx->timer_id, 1, timer, ctx);
rtems_test_assert(sc == RTEMS_SUCCESSFUL);
sc = rtems_event_transient_receive(RTEMS_WAIT, RTEMS_NO_TIMEOUT);
rtems_test_assert(sc == RTEMS_SUCCESSFUL);
for (i = 0; i < TASK_COUNT; ++i) {
sc = rtems_task_delete(ctx->task_ids[i]);
rtems_test_assert(sc == RTEMS_SUCCESSFUL);
}
sc = rtems_timer_delete(ctx->timer_id);
rtems_test_assert(sc == RTEMS_SUCCESSFUL);
}
开发者ID:gedare,项目名称:rtems,代码行数:42,代码来源:init.c
示例7: Init
rtems_task Init(
rtems_task_argument argument
)
{
rtems_status_code status;
rtems_id Task_id;
Print_Warning();
TEST_BEGIN();
if (
_Scheduler_Table[ 0 ].Operations.initialize
!= _Scheduler_priority_Initialize
) {
puts( " Error ==> " );
puts( "Test only supported for deterministic priority scheduler\n" );
rtems_test_exit( 0 );
}
#define LOW_PRIORITY (RTEMS_MAXIMUM_PRIORITY - 1u)
status = rtems_task_create(
rtems_build_name( 'T', 'A', '1', ' ' ),
LOW_PRIORITY,
RTEMS_MINIMUM_STACK_SIZE,
RTEMS_DEFAULT_MODES,
RTEMS_DEFAULT_ATTRIBUTES,
&Task_id
);
directive_failed( status, "rtems_task_create Task_1" );
status = rtems_task_start( Task_id, Task_1, 0 );
directive_failed( status, "rtems_task_start Task_1" );
benchmark_timer_initialize();
benchmark_timer_read();
benchmark_timer_initialize();
timer_overhead = benchmark_timer_read();
status = rtems_task_delete( RTEMS_SELF );
directive_failed( status, "rtems_task_delete of RTEMS_SELF" );
}
开发者ID:AlexShiLucky,项目名称:rtems,代码行数:42,代码来源:ilatency.c
示例8: test
static void test(void)
{
test_context *ctx = &test_instance;
rtems_status_code sc;
int rv;
rtems_resource_snapshot snapshot;
ctx->main_task_id = rtems_task_self();
rtems_resource_snapshot_take(&snapshot);
rv = IMFS_make_generic_node(
&file_path[0],
S_IFCHR | S_IRWXU | S_IRWXG | S_IRWXO,
&node_control,
NULL
);
rtems_test_assert(rv == 0);
sc = rtems_task_create(
rtems_build_name('W', 'O', 'R', 'K'),
2,
RTEMS_MINIMUM_STACK_SIZE,
RTEMS_DEFAULT_MODES,
RTEMS_DEFAULT_ATTRIBUTES,
&ctx->worker_task_id
);
rtems_test_assert(sc == RTEMS_SUCCESSFUL);
sc = rtems_task_start(ctx->worker_task_id, worker_task, 0);
rtems_test_assert(sc == RTEMS_SUCCESSFUL);
wait();
sc = rtems_task_delete(ctx->worker_task_id);
rtems_test_assert(sc == RTEMS_SUCCESSFUL);
rv = unlink(&file_path[0]);
rtems_test_assert(rv == 0);
rtems_test_assert(rtems_resource_snapshot_check(&snapshot));
}
开发者ID:Avanznow,项目名称:rtems,代码行数:42,代码来源:init.c
示例9: Init
rtems_task Init(
rtems_task_argument argument
)
{
rtems_name task_name;
rtems_id tid;
rtems_status_code status;
TEST_BEGIN();
printf( "Creating and starting an application task\n" );
task_name = rtems_build_name( 'T', 'A', '1', ' ' );
status = rtems_task_create( task_name, 1, RTEMS_MINIMUM_STACK_SIZE,
RTEMS_INTERRUPT_LEVEL(0), RTEMS_DEFAULT_ATTRIBUTES, &tid );
status = rtems_task_start(
tid,
Application_task,
Multiprocessing_configuration.node
);
status = rtems_task_delete( RTEMS_SELF );
}
开发者ID:AlexShiLucky,项目名称:rtems,代码行数:20,代码来源:init.c
示例10: starttask
void starttask(
int arg
)
{
rtems_id tid;
rtems_status_code sc;
rtems_task_priority priority;
rtems_task_set_priority(RTEMS_SELF, RTEMS_CURRENT_PRIORITY, &priority);
sc = rtems_task_create(rtems_build_name('S', 'R', 'V', arg + 'A'),
priority,
RTEMS_MINIMUM_STACK_SIZE,
RTEMS_PREEMPT|RTEMS_NO_TIMESLICE|RTEMS_NO_ASR|RTEMS_INTERRUPT_LEVEL(0),
RTEMS_NO_FLOATING_POINT|RTEMS_LOCAL,
&tid);
directive_failed( sc, "task create" );
sc = rtems_task_start(tid, subtask, (rtems_task_argument) arg);
directive_failed( sc, "task start" );
}
开发者ID:FullMentalPanic,项目名称:RTEMS_NEW_TOOL_CHAIN,代码行数:20,代码来源:init.c
示例11: start_task
static rtems_id start_task(rtems_task_priority prio)
{
rtems_status_code sc;
rtems_id task_id;
sc = rtems_task_create(
rtems_build_name('T', 'A', 'S', 'K'),
prio,
RTEMS_MINIMUM_STACK_SIZE,
RTEMS_DEFAULT_MODES,
RTEMS_DEFAULT_ATTRIBUTES,
&task_id
);
rtems_test_assert(sc == RTEMS_SUCCESSFUL);
sc = rtems_task_start(task_id, task, 0);
rtems_test_assert(sc == RTEMS_SUCCESSFUL);
return task_id;
}
开发者ID:AlexShiLucky,项目名称:rtems,代码行数:20,代码来源:init.c
示例12: rtems_interrupt_server_initialize
rtems_status_code rtems_interrupt_server_initialize(
rtems_task_priority priority,
size_t stack_size,
rtems_mode modes,
rtems_attribute attributes,
rtems_id *server
)
{
rtems_status_code sc = RTEMS_SUCCESSFUL;
if (server != NULL) {
return RTEMS_NOT_IMPLEMENTED;
}
sc = rtems_task_create(
rtems_build_name('I', 'R', 'Q', 'S'),
priority,
stack_size,
modes,
attributes,
&bsp_interrupt_server_id
);
if (sc != RTEMS_SUCCESSFUL) {
return RTEMS_TOO_MANY;
}
sc = rtems_task_start(
bsp_interrupt_server_id,
bsp_interrupt_server_task,
0
);
if (sc != RTEMS_SUCCESSFUL) {
/* In this case we could also panic */
rtems_task_delete(bsp_interrupt_server_id);
bsp_interrupt_server_id = RTEMS_ID_NONE;
return RTEMS_TOO_MANY;
}
return RTEMS_SUCCESSFUL;
}
开发者ID:AndroidMarv,项目名称:rtems,代码行数:41,代码来源:irq-server.c
示例13: test
static void test(void)
{
rtems_status_code sc;
rtems_mode mode;
rtems_id id;
rtems_test_assert(rtems_configuration_is_smp_enabled());
sc = rtems_task_mode(RTEMS_NO_PREEMPT, RTEMS_PREEMPT_MASK, &mode);
rtems_test_assert(sc == RTEMS_NOT_IMPLEMENTED);
sc = rtems_task_create(
rtems_build_name('T', 'A', 'S', 'K'),
RTEMS_MINIMUM_PRIORITY,
RTEMS_MINIMUM_STACK_SIZE,
RTEMS_NO_PREEMPT,
RTEMS_DEFAULT_ATTRIBUTES,
&id
);
rtems_test_assert(sc == RTEMS_UNSATISFIED);
}
开发者ID:AlexShiLucky,项目名称:rtems,代码行数:21,代码来源:init.c
示例14: start_validate_task
static void start_validate_task(
rtems_id *id,
uintptr_t pattern,
rtems_task_priority priority
)
{
rtems_status_code sc;
sc = rtems_task_create(
rtems_build_name('V', 'A', 'L', 'I'),
priority,
RTEMS_MINIMUM_STACK_SIZE,
RTEMS_DEFAULT_MODES,
RTEMS_DEFAULT_ATTRIBUTES,
id
);
rtems_test_assert(sc == RTEMS_SUCCESSFUL);
sc = rtems_task_start(*id, validate_task, pattern);
rtems_test_assert(sc == RTEMS_SUCCESSFUL);
}
开发者ID:AlexShiLucky,项目名称:rtems,代码行数:21,代码来源:init.c
示例15: tone_init
/* Initialize the tone detector. */
void
tone_init (void)
{
Objects_Id t1;
rtems_status_code code;
*PEPAR &= ~PORTE_BUTTON0;
*DDRE &= ~PORTE_BUTTON0;
pta_init(TONE_TPU_PIN, tone_pta_cb, 1, 10);
printf ("Spawning tone task:\n");
code = rtems_task_create(rtems_build_name('T', 'O', 'N', 'E'),
20, RTEMS_MINIMUM_STACK_SIZE * 2,
RTEMS_DEFAULT_MODES,
RTEMS_DEFAULT_ATTRIBUTES,
&t1);
printf (" rtems_task_create returned %d; t1 = 0x%08x\n", code, t1);
code = rtems_task_start(t1, tone_task, 0);
printf ("Done. (rtems_task_start returned %d)\n\n", code);
}
开发者ID:cassioiks,项目名称:RTEMS-Testing,代码行数:22,代码来源:tone.c
示例16: Init
rtems_task Init(
rtems_task_argument argument
)
{
rtems_status_code status;
rtems_id id;
int i;
printk( "\n\n*** LOW MEMORY CLOCK TICK TEST (delay) ***\n" );
for (i=1 ; i<=3 ; i++ ) {
status = rtems_task_create(
rtems_build_name( 'T', 'A', 0x30+1, ' ' ), 1, 0, RTEMS_DEFAULT_MODES,
RTEMS_DEFAULT_ATTRIBUTES, &id
);
status = rtems_task_start( id, Test_task, i );
}
while( 1 )
;
}
开发者ID:BlueFireworks,项目名称:examples-v2,代码行数:21,代码来源:init.c
示例17: Init
rtems_task Init(
rtems_task_argument argument
)
{
uint32_t i;
char ch;
uint32_t cpu_num;
rtems_id id;
rtems_status_code status;
locked_print_initialize();
rtems_test_begin();
if ( rtems_get_processor_count() == 1 ) {
success();
}
for ( i=0; i<rtems_get_processor_count() ; i++ ) {
ch = '1' + i;
status = rtems_task_create(
rtems_build_name( 'T', 'A', ch, ' ' ),
1,
RTEMS_MINIMUM_STACK_SIZE,
RTEMS_DEFAULT_MODES,
RTEMS_DEFAULT_ATTRIBUTES,
&id
);
directive_failed( status, "task create" );
cpu_num = rtems_get_current_processor();
locked_printf(" CPU %" PRIu32 " start task TA%c\n", cpu_num, ch);
status = rtems_task_start( id, Test_task, i+1 );
directive_failed( status, "task start" );
}
while (1)
;
}
开发者ID:greenmeent,项目名称:rtems,代码行数:40,代码来源:init.c
示例18: rtems_print_printer_task
int rtems_print_printer_task(
rtems_printer *printer,
rtems_printer_task_context *ctx
)
{
rtems_status_code sc;
if ( ctx->buffer_size < sizeof( printer_task_buffer ) ) {
return EINVAL;
}
sc = rtems_task_create(
rtems_build_name( 'P', 'R', 'N', 'T'),
ctx->task_priority,
ctx->task_stack_size,
RTEMS_DEFAULT_MODES,
RTEMS_DEFAULT_ATTRIBUTES,
&ctx->task
);
if ( sc != RTEMS_SUCCESSFUL ) {
return ENOMEM;
}
rtems_chain_initialize_empty( &ctx->todo_buffers );
rtems_chain_initialize(
&ctx->free_buffers,
ctx->buffer_table,
ctx->buffer_count,
ctx->buffer_size
);
ctx->buffer_size -= sizeof( printer_task_buffer );
printer->context = ctx;
printer->printer = printer_task_printer;
rtems_task_start( ctx->task, printer_task, (rtems_task_argument) ctx );
return 0;
}
开发者ID:deval-maker,项目名称:rtems,代码行数:40,代码来源:printertask.c
示例19: Init
rtems_task Init(
rtems_task_argument argument
)
{
rtems_task_entry task_entry;
int index;
rtems_status_code status;
Print_Warning();
TEST_BEGIN();
Task_priority = RTEMS_MAXIMUM_PRIORITY - 1u;
if ( OPERATION_COUNT > RTEMS_MAXIMUM_PRIORITY - 2u )
operation_count = (int) (RTEMS_MAXIMUM_PRIORITY - 2u);
for( index = 0; index < operation_count ; index++ ) {
status = rtems_task_create(
rtems_build_name( 'T', 'I', 'M', 'E' ),
Task_priority,
RTEMS_MINIMUM_STACK_SIZE,
RTEMS_DEFAULT_MODES,
RTEMS_DEFAULT_ATTRIBUTES,
&Task_id[ index ]
);
directive_failed( status, "rtems_task_create loop" );
if ( index == operation_count-1 ) task_entry = Last_task;
else if ( index == 0 ) task_entry = First_task;
else task_entry = Middle_tasks;
status = rtems_task_start( Task_id[ index ], task_entry, 0 );
directive_failed( status, "rtems_task_start loop" );
}
Task_count = 1;
status = rtems_task_delete( RTEMS_SELF );
directive_failed( status, "rtems_task_delete of RTEMS_SELF" );
}
开发者ID:AlexShiLucky,项目名称:rtems,代码行数:39,代码来源:task1.c
示例20: test
static void test(void)
{
rtems_event_set events;
rtems_status_code sc;
rtems_task_argument task_index;
task_ids[0] = rtems_task_self();
for (task_index = 1; task_index < TASK_COUNT; ++task_index) {
rtems_id task_id;
sc = rtems_task_create(
rtems_build_name('T', 'A', 'S', 'K'),
FIRST_TASK_PRIORITY + task_index,
RTEMS_MINIMUM_STACK_SIZE,
RTEMS_DEFAULT_MODES,
RTEMS_DEFAULT_ATTRIBUTES,
&task_id
);
rtems_test_assert(sc == RTEMS_SUCCESSFUL);
sc = rtems_task_start(task_id, task, task_index);
rtems_test_assert(sc == RTEMS_SUCCESSFUL);
task_ids[task_index] = task_id;
}
sc = rtems_event_receive(
SECOND_TASK_READY,
RTEMS_EVENT_ALL | RTEMS_WAIT,
RTEMS_NO_TIMEOUT,
&events
);
rtems_test_assert(sc == RTEMS_SUCCESSFUL);
rtems_test_assert(events == SECOND_TASK_READY);
test_scheduler_cross();
test_scheduler_move_heir();
}
开发者ID:chch1028,项目名称:rtems,代码行数:39,代码来源:init.c
注:本文中的rtems_task_create函数示例由纯净天空整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 |
请发表评论