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

📄 init.c

📁 RTEMS (Real-Time Executive for Multiprocessor Systems) is a free open source real-time operating sys
💻 C
字号:
/* * Thread Test Program *  *  - test of POSIX's pthread_init() function from rtemstask Init() * *     ott@linux.thai.net * *  The license and distribution terms for this file may be *  found in the file LICENSE in this distribution or at *  http://www.rtems.com/license/LICENSE. * *  $Id: init.c,v 1.4.2.1 2003/09/04 18:46:26 joel Exp $ */#include <stdio.h>#include <stdlib.h>#include <pthread.h>#include <sys/time.h>#ifdef __rtems__#include <rtems.h>/* configuration information */#define CONFIGURE_INIT#include <unistd.h>#include <errno.h>#include <sched.h>#include <bsp.h> /* for device driver prototypes */#include <pmacros.h>rtems_task Init( rtems_task_argument argument);/* configuration information */#define CONFIGURE_APPLICATION_NEEDS_CONSOLE_DRIVER#define CONFIGURE_APPLICATION_NEEDS_CLOCK_DRIVER#define CONFIGURE_MAXIMUM_TASKS             3#define CONFIGURE_RTEMS_INIT_TASKS_TABLE#define CONFIGURE_EXTRA_TASK_STACKS         (3 * RTEMS_MINIMUM_STACK_SIZE)#define CONFIGURE_MAXIMUM_POSIX_THREADS 5#define CONFIGURE_MAXIMUM_POSIX_MUTEXES 5#define CONFIGURE_MAXIMUM_POSIX_CONDITION_VARIABLES 5#include <console.h>#include <confdefs.h>#endif /* __rtems__ */void countTaskDeferred() {  int i=0;  int type,state;  pthread_setcancelstate(PTHREAD_CANCEL_ENABLE, &type);  pthread_setcanceltype(PTHREAD_CANCEL_DEFERRED, &state);  while (1) {    printf("countTaskDeferred: elapsed time (second): %2d\n", i++ );    sleep(1);    pthread_testcancel();    }}void countTaskAsync() {  int i=0;  int type,state;  pthread_setcancelstate(PTHREAD_CANCEL_ENABLE, &type);  pthread_setcanceltype(PTHREAD_CANCEL_ASYNCHRONOUS, &state);  while (1) {    printf("countTaskAsync: elapsed time (second): %2d\n", i++ );    sleep(1);    }}#ifdef __linux__int main(){#else  rtems_task Init( rtems_task_argument ignored ) {#endif  pthread_t count;  int taskparameter = 0;  puts( "\n\n*** POSIX CANCEL TEST ***" );  /* Start countTask deferred */  {    int task_ret;    task_ret = pthread_create(&count, NULL, (void *) countTaskDeferred, (void *) &taskparameter);    if (task_ret) {      perror("pthread_create: countTask");      rtems_test_exit(EXIT_FAILURE);    }    /* sleep for 5 seconds, then cancel it */    sleep(5);    pthread_cancel(count);    pthread_join(count,NULL);  }  /* Start countTask asynchronous */  {    int task_ret;    task_ret = pthread_create(&count, NULL, (void *) countTaskAsync, (void *) &taskparameter);    if (task_ret) {      perror("pthread_create: countTask");      rtems_test_exit(EXIT_FAILURE);    }    /* sleep for 5 seconds, then cancel it */    sleep(5);    pthread_cancel(count);    pthread_join(count,NULL);  }  puts( "*** END OF POSIX CANCEL TEST ***" );#ifdef __linux__  return 0;#else  rtems_test_exit(EXIT_SUCCESS);#endif}

⌨️ 快捷键说明

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