⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 init.c

📁 RTEMS (Real-Time Executive for Multiprocessor Systems) is a free open source real-time operating sys
💻 C
📖 第 1 页 / 共 2 页
字号:
  if ( !status )    printf( "status = %d\n", status );  assert( status == EBUSY );#endif  puts( "Init: pthread_mutex_trylock - EINVAL (illegal ID)" );  status = pthread_mutex_trylock( &Mutex_bad_id );  if ( status != EINVAL )    printf( "status = %d\n", status );  assert( status == EINVAL );  puts( "Init: pthread_mutex_trylock - SUCCESSFUL" );  status = pthread_mutex_trylock( &Mutex_id );  if ( status )    printf( "status = %d\n", status );  assert( !status );  puts( "Init: pthread_mutex_trylock - EDEADLK (already locked)" );  status = pthread_mutex_trylock( &Mutex_id );  if ( status != EDEADLK )    printf( "status = %d\n", status );  assert( status == EDEADLK );  puts( "Init: pthread_mutex_lock - EDEADLK (already locked)" );  status = pthread_mutex_lock( &Mutex_id );  if ( status != EDEADLK )    printf( "status = %d\n", status );  assert( status == EDEADLK );  puts( "Init: Sleep 1 second" );  sleep( 1 );       /* switch to task 1 */  puts( "Init: pthread_mutex_unlock - EINVAL (invalid id)" );  status = pthread_mutex_unlock( &Mutex_bad_id );  if ( status != EINVAL )    printf( "status = %d\n", status );  assert( status == EINVAL );  puts( "Init: pthread_mutex_unlock - SUCCESSFUL" );  status = pthread_mutex_unlock( &Mutex_id );  if ( status )    printf( "status = %d\n", status );  assert( !status );  puts( "Init: pthread_mutex_unlock - EPERM (not owner)" );  status = pthread_mutex_unlock( &Mutex_id );  if ( status != EPERM )    printf( "status = %d\n", status );  assert( status == EPERM );  times.tv_sec = 0;  times.tv_nsec = 500000000;  puts( "Init: pthread_mutex_timedlock - time out in 1/2 second" );  status = pthread_mutex_timedlock( &Mutex_id, &times );  if ( status != EAGAIN )    printf( "status = %d\n", status );  assert( status == EAGAIN );     /* switch to idle */  puts( "Init: pthread_mutex_timedlock - EAGAIN (timeout)" );  /* destroy a mutex */  empty_line();  puts( "Init: pthread_mutex_init - SUCCESSFUL" );  status = pthread_mutex_init( &Mutex2_id, &attr );  if ( status )    printf( "status = %d\n", status );  assert( !status );  puts( "Init: pthread_mutex_init - EAGAIN (too many)" );  status = pthread_mutex_init( &Mutex3_id, &attr );  assert( status == EAGAIN );  puts( "Init: pthread_mutexattr_destroy - SUCCESSFUL" );  status = pthread_mutexattr_destroy( &attr );  assert( !status );  puts( "Init: pthread_mutex_destroy - SUCCESSFUL" );  status = pthread_mutex_destroy( &Mutex2_id );  assert( !status );   puts( "Init: pthread_mutex_destroy - EINVAL (invalid id)" );  status = pthread_mutex_destroy( &Mutex_bad_id );  assert( status == EINVAL );   /* destroy a busy mutex */   empty_line();   puts( "Init: pthread_mutexattr_init - SUCCESSFUL" );  status = pthread_mutexattr_init( &attr );  assert( !status );  puts( "Init: pthread_mutex_init - SUCCESSFUL" );  status = pthread_mutex_init( &Mutex2_id, &attr );  assert( !status );   puts( "Init: pthread_mutex_trylock - SUCCESSFUL" );  status = pthread_mutex_trylock( &Mutex2_id );  if ( status )    printf( "status = %d\n", status );  assert( !status );  puts( "Init: pthread_mutex_destroy - EBUSY (already locked)" );  status = pthread_mutex_destroy( &Mutex2_id );  if ( status != EBUSY )    printf( "status = %d\n", status );  assert( status == EBUSY );  puts( "Init: pthread_mutex_unlock - SUCCESSFUL" );  status = pthread_mutex_unlock( &Mutex2_id );  assert( !status );  puts( "Init: pthread_mutex_destroy - SUCCESSFUL" );  status = pthread_mutex_destroy( &Mutex2_id );  assert( !status );  /* priority inherit mutex */  empty_line();   puts( "Init: pthread_mutexattr_init - SUCCESSFUL" );  status = pthread_mutexattr_init( &attr );  assert( !status );  puts(    "Init: pthread_mutexattr_setprotocol - SUCCESSFUL (PTHREAD_PRIO_INHERIT)"  );  status = pthread_mutexattr_setprotocol( &attr, PTHREAD_PRIO_INHERIT );  assert( !status );  puts( "Init: pthread_mutex_init - SUCCESSFUL" );  status = pthread_mutex_init( &Mutex2_id, &attr );  assert( !status );  puts( "Init: pthread_mutex_trylock - SUCCESSFUL" );  status = pthread_mutex_trylock( &Mutex2_id );  assert( !status );  /* create a thread at a lower priority */   status = pthread_create( &Task2_id, NULL, Task_2, NULL );  assert( !status );   /* set priority of Task2 to highest priority */   param.sched_priority = 254;   puts( "Init: pthread_setschedparam - Setting Task2 priority to highest" );  status = pthread_setschedparam( Task2_id, SCHED_FIFO, &param );  assert( !status );  /* switching to Task2 */  status = pthread_getschedparam( pthread_self(), &policy, &param );  assert( !status );  printf( "Init: pthread_getschedparam - priority = %d\n", param.sched_priority);  puts( "Init: pthread_mutex_unlock - SUCCESSFUL" );  status = pthread_mutex_unlock( &Mutex2_id );  assert( !status );    puts( "Init: pthread_mutexattr_destroy - SUCCESSFUL" );  status = pthread_mutexattr_destroy( &attr );  assert( !status );  puts( "Init: pthread_mutex_destroy - SUCCESSFUL" );  status = pthread_mutex_destroy( &Mutex2_id );  assert( !status );   /* priority ceiling mutex */   empty_line();   puts( "Init: pthread_mutexattr_init - SUCCESSFUL" );  status = pthread_mutexattr_init( &attr );  assert( !status );   puts(    "Init: pthread_mutexattr_setprotocol - SUCCESSFUL (PTHREAD_PRIO_PROTECT)"  );  status = pthread_mutexattr_setprotocol( &attr, PTHREAD_PRIO_PROTECT );  assert( !status );   puts( "Init: pthread_mutex_init - SUCCESSFUL" );  status = pthread_mutex_init( &Mutex2_id, &attr );  assert( !status );   puts( "Init: pthread_mutex_getprioceiling - EINVAL (invalid id)" );  status = pthread_mutex_getprioceiling( &Mutex_bad_id, &ceiling );  assert( status == EINVAL );  puts( "Init: pthread_mutex_getprioceiling - EINVAL (NULL ceiling)" );  status = pthread_mutex_getprioceiling( &Mutex2_id, NULL );  assert( status == EINVAL );  status = pthread_mutex_getprioceiling( &Mutex2_id, &ceiling );  assert( !status );  printf( "Init: pthread_mutex_getprioceiling - %d\n", ceiling );   puts( "Init: pthread_mutex_setprioceiling - EINVAL (invalid id)" );  status = pthread_mutex_setprioceiling( &Mutex_bad_id, 200, &old_ceiling );  assert( status == EINVAL );  puts( "Init: pthread_mutex_setprioceiling - EINVAL (illegal priority)" );  status = pthread_mutex_setprioceiling( &Mutex2_id, 512, &old_ceiling );  assert( status == EINVAL );  puts( "Init: pthread_mutex_setprioceiling - EINVAL (NULL ceiling)" );  status = pthread_mutex_setprioceiling( &Mutex2_id, 128, NULL );  assert( status == EINVAL );  /* normal cases of set priority ceiling */  puts( "Init: pthread_mutex_setprioceiling - new ceiling = 200" );  status = pthread_mutex_setprioceiling( &Mutex2_id, 200, &old_ceiling );  assert( !status );  printf(    "Init: pthread_mutex_setprioceiling - old ceiling = %d\n",old_ceiling  );   status = pthread_getschedparam( pthread_self(), &policy, &param );  assert( !status );  printf(    "Init: pthread_getschedparam - priority = %d\n", param.sched_priority  );  puts( "Init: pthread_mutex_trylock - SUCCESSFUL" );  status = pthread_mutex_trylock( &Mutex2_id );  assert( !status );   status = pthread_getschedparam( pthread_self(), &policy, &param );  assert( !status );  printf(    "Init: pthread_getschedparam - priority = %d\n", param.sched_priority  );  /* create a thread at a higher priority */   status = pthread_create( &Task3_id, NULL, Task_3, NULL );  assert( !status );   /* set priority of Task3 to highest priority */   param.sched_priority = 199;   status = pthread_setschedparam( Task3_id, SCHED_FIFO, &param );  assert( !status );  puts( "Init: pthread_setschedparam - set Task3 priority to highest" );   /* DOES NOT SWITCH to Task3 */  puts( "Init: Sleep 1 second" );  assert( !status );  sleep( 1 );    /* switch to task 3 */   puts( "Init: pthread_mutex_unlock - SUCCESSFUL" );  status = pthread_mutex_unlock( &Mutex2_id );  assert( !status );   status = pthread_mutex_getprioceiling( &Mutex2_id, &ceiling );  assert( !status );  printf( "Init: pthread_mutex_getprioceiling- ceiling = %d\n", ceiling );   /* set priority of Init to highest priority */   param.sched_priority = 254;   status = pthread_setschedparam( Init_id, SCHED_FIFO, &param );  assert( !status );  puts( "Init: pthread_setschedparam - set Init priority to highest" );   puts( "Init: pthread_mutex_lock - EINVAL (priority ceiling violation)" );  status = pthread_mutex_lock( &Mutex2_id );  if ( status != EINVAL )    printf( "status = %d\n", status );  assert( status == EINVAL );  puts( "*** END OF POSIX TEST 5 ***" );  rtems_test_exit( 0 );  return NULL; /* just so the compiler thinks we returned something */}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -