亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? timers.c

?? fsmlabs的real time linux的內(nèi)核
?? C
字號:
/* * Modified by J. Vidal to test RTLinux POSIX.4 interval timers 22-09-2002  * */#include <rtl.h>#include <pthread.h>#include <time.h>#include <signal.h>#include "utils.h"#define perror(s) do { rtl_printf(s" -> error localitzation: "); myperror(s); } while(0)#define printf rtl_printf#define getpid() th#define kill pthread_kill#define sleep(sec) usleep(sec*1000*1000)#define exit(a) do {return a;} while (0)#define strerror(a) a#define MAX_NOF_TIMERS 6000#define SIGRTMIN RTL_SIGRTMIN#define SIGRTMAX RTL_SIGRTMAX#define SIGALRM RTL_SIGUSR1#define sigprocmask pthread_sigmasktimer_t tt[MAX_NOF_TIMERS];timer_t t,t2;pthread_t th;struct timespec ref;struct itimerspec ispec;struct itimerspec ospec;struct sigaction sa;rtl_sigset_t set;int retval;int i,j;int signo,sival_expected;  struct sigevent timer_event_spec;static void reset_ref_time(void){  clock_gettime(CLOCK_REALTIME, &ref);}/*static void print_rel_time(void){  struct timespec now;  clock_gettime(CLOCK_REALTIME, &now);  now.tv_sec -= ref.tv_sec;  now.tv_nsec -= ref.tv_nsec;  if (now.tv_nsec < 0) {    now.tv_sec--;    now.tv_nsec += 1000000000;  }  printf("%ld.%09ld", now.tv_sec, now.tv_nsec);}*/void alrm_handler(int signo){  rtl_printf("Alarm handler called for signal:%d\n",signo);}void *th_code(void *arg){  rtl_printf("Starting th_code\n");  rtl_sigemptyset(&set);  sigprocmask(SIG_SETMASK, &set, NULL);    sa.sa_handler = alrm_handler;  rtl_sigemptyset(&sa.sa_mask);  if (sigaction(SIGALRM, &sa, NULL)) {    perror("sigaction failed");    exit(1);  }    if (sigaction(SIGRTMIN, &sa, NULL)) {    perror("sigaction failed");    exit(1);  }  rtl_printf("before sigaction(%d, &sa, NULL)) \n",SIGRTMIN +1 );  if (sigaction(SIGRTMIN + 1, &sa, NULL)) {    perror("sigaction failed");    exit(1);  }    printf("\ntest 10: set absolute time (no time specification): expect failure\n");	retval = timer_settime(t, TIMER_ABSTIME, NULL, NULL);	if (retval) {		perror("timer_settime(TIMER_ABSTIME) failed");	}	assert(retval == -1);		printf("\ntest 11: set relative time (no time specification): expect failure\n");	retval = timer_settime(t, 0, NULL, NULL);	if (retval) {		perror("timer_settime(0) failed");	}	assert(retval == -1);	retval = clock_gettime(CLOCK_REALTIME, &ispec.it_value);	if (retval) {		perror("clock_gettime(CLOCK_REALTIME) failed");	}	assert(retval == 0);	ispec.it_value.tv_sec += 2;	ispec.it_value.tv_nsec = 0;	ispec.it_interval.tv_sec = 0;	ispec.it_interval.tv_nsec = 0;	reset_ref_time();	printf("\ntest 18: set timer (absolute time) 2 seconds in the future\n");	retval = timer_settime(t, TIMER_ABSTIME, &ispec, &ospec);	if (retval) {		perror("timer_settime(TIMER_ABSTIME) failed");	}	assert(retval == 0);	printf("timer_settime: old setting value=%ld.%09ld, interval=%ld.%09ld\n",	       ospec.it_value.tv_sec, ospec.it_value.tv_nsec,	       ospec.it_interval.tv_sec, ospec.it_interval.tv_nsec);	reset_ref_time();	printf("\ntest 19: set timer (absolute time) same time\n");	retval = timer_settime(t, TIMER_ABSTIME, &ispec, &ospec);	if (retval) {		perror("timer_settime(TIMER_ABSTIME) failed");	}	assert(retval == 0);	printf("timer_settime: old setting value=%ld.%09ld, interval=%ld.%09ld\n",	       ospec.it_value.tv_sec, ospec.it_value.tv_nsec,	       ospec.it_interval.tv_sec, ospec.it_interval.tv_nsec);		printf("\ntest 21: timer_gettime good timer id, NULL timespec pointer: expect failure\n");	retval = timer_gettime(t, NULL);	if (retval) {		perror("timer_gettime() failed");	}	assert(retval == -1);	printf("\ntest 23: timer_gettime good timer id, good timespec pointer\n");	retval = timer_gettime(t, &ispec);	if (retval) {		perror("timer_gettime() failed");	}	assert(retval == 0);	printf("timer_gettime: value=%ld.%09ld, interval=%ld.%09ld\n",	       ispec.it_value.tv_sec, ispec.it_value.tv_nsec,	       ispec.it_interval.tv_sec, ispec.it_interval.tv_nsec);	printf("\ntest 24: send ALRM signal to self with kill()\n");	reset_ref_time();	sival_expected = -1;	retval = kill(getpid(), SIGALRM);	if (retval) {		perror("kill(myself with SIGALRM) failed");	}	assert(retval == 0);        usleep(1); // only to call the scheduler.	rtl_sigemptyset(&set);	rtl_sigaddset(&set, SIGALRM);	sigprocmask(SIG_BLOCK, &set, NULL);		printf("\ntest 26: send ALRM signal to self with kill() (signal blocked)\n");	retval = kill(getpid(), SIGALRM);	if (retval) {		perror("kill(myself with SIGALRM) failed");	}	assert(retval == 0);	usleep(1); // only to call the scheduler.	printf("\ntest 30: timer_gettime()\n");	sleep(1);	retval = timer_gettime(t, &ispec);	if (retval) {		perror("timer_gettime() failed");	}	assert(retval == 0);	printf("timer_gettime: value=%ld.%09ld, interval=%ld.%09ld\n",	       ispec.it_value.tv_sec, ispec.it_value.tv_nsec,	       ispec.it_interval.tv_sec, ispec.it_interval.tv_nsec);	rtl_printf(" wait for timer expiration of test 18 \n");	sleep(1);		/* wait for timer expiration of test 18 */	printf("\ntest 32: timer_gettime: deleted timer and NULL itimer_spec: expect failure\n");	retval = timer_gettime(tt[1], NULL);	if (retval) {		perror("timer_gettime() failed");	}	assert(retval == -1);	/*	 * Test to see if timer goes off immediately if not a future time is	 * provided with TIMER_ABSTIME 	 */	printf("\ntest 35: set up timer to go off immediately, followed by 10 ticks at 10 Hz\n");	ispec.it_value.tv_nsec = 1;	rtl_printf("ispec.it_value.tv_nsec:%d\n",ispec.it_value.tv_sec);	ispec.it_interval.tv_sec = 0;	ispec.it_interval.tv_nsec = 100000000;	reset_ref_time();	retval = timer_settime(t2, TIMER_ABSTIME, &ispec, &ospec);	if (retval) {		perror("timer_settime(TIMER_ABSTIME) failed");	}	printf("timer should have expired now\n");	printf("timer_settime: old setting value=%ld.%09ld, interval=%ld.%09ld\n",	       ospec.it_value.tv_sec, ospec.it_value.tv_nsec,	       ospec.it_interval.tv_sec, ospec.it_interval.tv_nsec);	retval = timer_gettime(t, &ispec);	if (retval) {		perror("timer_gettime() failed");	}	printf("timer_gettime: value=%ld.%09ld, interval=%ld.%09ld\n",	       ispec.it_value.tv_sec, ispec.it_value.tv_nsec,	       ispec.it_interval.tv_sec, ispec.it_interval.tv_nsec);	printf("catch 10 signals\n");	rtl_sigfillset(&set);	rtl_sigdelset(&set,SIGRTMIN);	for (i = 0; i < 10; i++) {	  sigsuspend(&set);	  rtl_printf("Number of signals catched %d\n",i);	}	pthread_exit(NULL);	return 0;}int init_module(void){	printf("\ntest 7: attempt to create too many timers: don't expect failure in RTLinux while there is free memory\n");	for (i = 0; i < MAX_NOF_TIMERS; i++) {	  	retval = timer_create(CLOCK_REALTIME, NULL, &tt[i]);		if (retval) {			rtl_printf("timer_create(CLOCK_REALTIME) %d failed: %d\n", i, strerror(errno));			break;		}	}        if ( i < MAX_NOF_TIMERS) {                assert((i > 30) && (retval == -1));                j = i;        }else {                assert( (i == MAX_NOF_TIMERS) && (retval != -1));                rtl_printf( "timer_create(CLOCK_REALTIME) %d timers created\n",i);                j = i ;        }	printf("\ntest 8: delete these timers: don't expect failure in RTLinux\n");	for (i = 0; i < j; i++) {	  	retval = timer_delete(tt[i]);		if (retval) {			rtl_printf("timer_delete(CLOCK_REALTIME) %d failed: %d\n", i, strerror(errno));			break;		}	}	assert(retval == 0);	printf("\ntest 9: create default timer\n");	retval = timer_create(CLOCK_REALTIME, NULL, &t);	if (retval) {		perror("timer_create(CLOCK_REALTIME) failed");	}	assert(retval == 0);		printf("\ntest 31: timer_delete()\n");	retval = timer_delete(t);	if (retval) {		perror("timer_delete(deleted timer) failed");	}	assert(retval == 0);	/*	 * test to check timer cancellation by deletion	 */	printf("\ntest 33: create default timer\n");	retval = timer_create(CLOCK_REALTIME, NULL, &t);	if (retval) {		perror("timer_create(CLOCK_REALTIME) failed");	}		retval = clock_gettime(CLOCK_REALTIME, &ispec.it_value);	if (retval) {	  perror("clock_gettime(CLOCK_REALTIME) failed");	}	/*         * Test to see if timer goes off immediately if not a future time is         * provided with TIMER_ABSTIME         */        printf("\ntest 35: set up timer to go off immediately, followed by 10 ticks at 10 Hz\n");        timer_event_spec.sigev_notify = SIGEV_SIGNAL;        timer_event_spec.sigev_signo = SIGRTMIN + 0;        sival_expected = timer_event_spec.sigev_value.sival_int = 0x1234;        retval = timer_create(CLOCK_REALTIME, &timer_event_spec, &t2);	        retval = clock_gettime(CLOCK_REALTIME, &ispec.it_value);        if (retval) {          perror("clock_gettime(CLOCK_REALTIME) failed");        }	rtl_printf("Create test thread.\n");	pthread_create(&th,NULL,th_code,(int *) 0);	return 0;}void cleanup_module(void){  int retval;  printf("\ntest 31: timer_delete()\n");  retval = timer_delete(t);  if (retval) {    perror("timer_delete(existing timer) failed");  }  assert(retval == 0);    retval = timer_delete(t2);  if (retval) {    perror("timer_delete(existing timer) failed");  }  assert(retval == 0);  printf("\ntest 1: delete non existing timer: expect failure\n");  retval = timer_delete((PAGE_OFFSET+10000));  if (retval) {    perror("timer_delete(bogus timer) failed");  }  assert(retval == -1);      printf("\ntest 4: delete timer again: expect failure\n");  retval = timer_delete(t);  if (retval) {    perror("timer_delete(deleted timer) failed");  }  assert(retval == -1);  printf("\ntest 5: delete non-existing timer: expect failure\n");  retval = timer_delete(0);  if (retval) {    perror("timer_delete(0) failed");  }  assert(retval == -1);    rtl_printf("\nDeleting test thread\n");  pthread_delete_np(th);  }

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美成人性福生活免费看| 欧美最新大片在线看| 337p日本欧洲亚洲大胆色噜噜| 首页国产欧美日韩丝袜| 欧美日韩一区二区三区在线看 | 亚洲最大成人网4388xx| 在线观看日韩一区| 性久久久久久久久| 日韩视频国产视频| 国产成人久久精品77777最新版本 国产成人鲁色资源国产91色综 | 成人成人成人在线视频| 国产精品欧美一区喷水| 色国产综合视频| 日本美女一区二区三区视频| 亚洲精品在线观| 一本色道a无线码一区v| 日本不卡视频在线| 国产欧美日产一区| 在线观看免费成人| 国产伦精品一区二区三区视频青涩| 国产精品理论片在线观看| 欧美在线观看视频在线| 精品一区二区精品| 亚洲人成精品久久久久| 日韩女优av电影在线观看| 成人高清免费在线播放| 日韩高清在线不卡| 中文字幕在线视频一区| 欧美电影在线免费观看| 成人毛片老司机大片| 亚瑟在线精品视频| 国产精品免费丝袜| 欧美xingq一区二区| 日本韩国精品在线| 国产成人啪免费观看软件| 亚洲成av人片一区二区梦乃| 国产欧美一区二区在线| 678五月天丁香亚洲综合网| 成人h动漫精品| 激情综合色综合久久| 夜夜爽夜夜爽精品视频| 国产欧美精品国产国产专区| 欧美精品 日韩| 色综合久久久网| 国产一区二区三区黄视频| 日日夜夜免费精品| 亚洲美女视频一区| 国产精品卡一卡二卡三| 精品国产一区久久| 91精品国产综合久久久蜜臀图片| 色呦呦日韩精品| 成人丝袜高跟foot| 国产一区二区三区免费观看| 日本不卡在线视频| 天天av天天翘天天综合网| 亚洲色欲色欲www| 国产免费观看久久| 久久久久国产精品麻豆| 精品国产电影一区二区| 91精品婷婷国产综合久久| 欧美在线不卡一区| 欧美午夜理伦三级在线观看| 99久久精品一区| 成人av电影免费在线播放| 国内欧美视频一区二区 | 国产拍欧美日韩视频二区| 欧美电视剧在线看免费| 欧美一区二区视频网站| 欧美日韩成人在线一区| 欧美性感一类影片在线播放| 91亚洲永久精品| 99久久99久久久精品齐齐| 国产91精品精华液一区二区三区 | 久久亚洲精品小早川怜子| 日韩欧美一区二区在线视频| 欧美精品1区2区3区| 在线播放91灌醉迷j高跟美女| 欧美影院精品一区| 欧美日韩国产在线播放网站| 欧美色男人天堂| 欧美三级电影网站| 欧美高清视频不卡网| 欧美日韩aaa| 8v天堂国产在线一区二区| 欧美一区午夜视频在线观看| 日韩一区二区免费高清| 欧美sm美女调教| 国产亚洲精品7777| 1024成人网| 亚洲综合男人的天堂| 日本中文一区二区三区| 激情综合网最新| 国产+成+人+亚洲欧洲自线| 91在线看国产| 欧美日韩不卡一区二区| 日韩美女在线视频| 欧美激情一区二区| 亚洲国产精品影院| 久久精品国产亚洲aⅴ| 国产九九视频一区二区三区| www.日韩精品| 欧美另类久久久品| 久久综合色之久久综合| 中文字幕在线不卡一区二区三区| 亚洲一区二区三区四区在线| 麻豆极品一区二区三区| 国产精品一线二线三线精华| 91视频.com| 日韩一区二区三区三四区视频在线观看| 久久综合色婷婷| 亚洲丝袜美腿综合| 日本不卡视频一二三区| 丁香六月久久综合狠狠色| 91成人网在线| 国产日韩亚洲欧美综合| 亚洲一级在线观看| 国产一区二区影院| 欧美亚州韩日在线看免费版国语版| 日韩欧美一区二区免费| 亚洲欧洲国产专区| 极品尤物av久久免费看| 日本精品视频一区二区三区| 日韩视频中午一区| 亚洲人成7777| 国产精品一品二品| 欧美日韩一区久久| 中文字幕一区在线| 精品亚洲免费视频| 欧美日韩一区三区四区| 国产精品久久久久7777按摩| 琪琪一区二区三区| 欧美最新大片在线看 | 日韩精品一区在线| 一区二区三区四区不卡在线| 国产又黄又大久久| 欧美伦理电影网| 一区二区激情小说| 不卡一区在线观看| 精品国产成人系列| 麻豆专区一区二区三区四区五区| 色婷婷精品久久二区二区蜜臀av| 久久亚洲捆绑美女| 蜜臀av一级做a爰片久久| 欧美午夜不卡在线观看免费| 国产精品天干天干在观线| 久久电影网站中文字幕| 欧美日韩国产一二三| 亚洲美女淫视频| 99久久99久久久精品齐齐| 2021国产精品久久精品| 日韩精品久久久久久| 欧美手机在线视频| 亚洲综合色自拍一区| 99久久精品国产一区| 欧美国产乱子伦| 国产精品99久久久久久久女警| 日韩免费视频线观看| 水野朝阳av一区二区三区| 欧美调教femdomvk| 亚洲一区二区五区| 欧美日韩在线亚洲一区蜜芽| 一区二区欧美精品| 欧美在线观看视频在线| 香蕉乱码成人久久天堂爱免费| 91精品福利视频| 亚洲人成在线播放网站岛国| aaa国产一区| 一级做a爱片久久| 色88888久久久久久影院野外| 亚洲摸摸操操av| 欧美午夜一区二区三区免费大片| 亚洲一区二区3| 欧美无人高清视频在线观看| 亚洲国产你懂的| 欧美一区二区三区啪啪| 免费的成人av| 久久婷婷国产综合精品青草| 国产精品自拍av| 国产精品传媒入口麻豆| 不卡一区二区在线| 亚洲图片有声小说| 日韩一区二区免费高清| 国产精品一级黄| 亚洲欧美成aⅴ人在线观看 | 51精品久久久久久久蜜臀| 蜜桃视频一区二区三区| 久久久另类综合| av电影在线观看一区| 亚洲亚洲人成综合网络| 欧美一区日本一区韩国一区| 国产麻豆日韩欧美久久| 综合在线观看色| 欧美精品在线一区二区三区| 激情文学综合插| 成人欧美一区二区三区在线播放| 欧美日韩视频不卡| 国产精品一区二区无线| 亚洲欧美色图小说| 日韩欧美一卡二卡| 不卡av电影在线播放|