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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? dougan.txt

?? 國外的-C++ 200多個源碼
?? TXT
字號:
Measuring Periodic Task Scheduling
by Cort Dougan


Listing 1

#
# Copyright (C) Cort Dougan, 2003
# Cort Dougan <cort@fsmlabs.com>
#

#include <stdio.h>
#include <pthread.h>
#include <unistd.h>
#include <semaphore.h>
/*
* User-level doesn't have some of these utilities.
* In fact, POSIX entirely ignores the idea of SMP or
* any utility routines for comparing/setting
* timespec values.
* -- Cort <cort@fsmlabs.com>
*/

#ifndef CONFIG_RTL

#define RTL_CPUS_MAX 1

#define rtl_num_cpus() (RTL_CPUS_MAX)
#define NSECS_PER_SEC 1000000000

#define timespec_normalize(t) {\ 
   if ((t) ->tv_nsec >= NSECS_PER_SEC) { \ 
       (t) ->tv_nsec -= NSECS_PER_SEC; \ 
       (t) ->tv_sec++; \ 
   } else if ((t) ->tv_nsec < 0) { \ 
       (t) ->tv_nsec += NSECS_PER_SEC; \ 
       (t) ->tv_sec -- ; \ 
   } \ 
}

#define timespec_sub(t1, t2) do { \ 
   (t1) ->tv_nsec -= (t2) ->tv_nsec; \ 
   (t1) ->tv_sec  -= (t2) ->tv_sec; \ 
   timespec_normalize(t1); \ 
} while (0)

#define_timespec_add_ns(t,n) do { \ 
   (t) ->tv_nsec += (n); \ 
   timespec_normalize(t); \ 
   } while (0)

#define timespec_lt(t1, t2) \ 
   ((t1) ->tv_sec < (t2) ->tv_sec || ((t1) ->tv_sec == 
              (t2) ->tv_sec && (t1)->tv_nsec < (t2) ->tv_nsec))
#define timespec_nz(t) ((t) ->tv_sec != 0 || (t) ->tv_nsec != 0)
#endif

pthread_t thread[RTL_CPUS_MAX], print_thread;
struct timespec worst[RTL_CPUS_MAX];
sem_t irqsem;
struct timespec abs_start;
/* in nanoseconds */
#define PERIOD (1000*1000)

void *print_code(void *t)
{ 
   int i;
   while ( 1 ) { 
      /* wait for a thread to signal us */
      sem_wait( &irqsem );
      for ( i = 0 ; i < rtl_num_cpus() ; i++ ) { 
         printf( "CPU%d: %3d.%01d us ", i,
            worst[i].tv_nsec/1000,
            (worst[i].tv_nsec/100)%10 );
      } printf("\n");
   }
   return NULL;
}

void *thread_code(void *t)
{ 
   struct timespec next, cur;
   int cpu = (int)t;
   /* zero it out */
   worst[cpu].tv_nsec = worst[cpu].tv_sec = 0;
   /* Get the current time and the start time that the main() function
    * setup for us so that all the threads are synchronized. Then, add
    * a per-cpu skew to them so the threads don't end up becoming runnable
    * at the same time and creating unnecessary resource contention.
    */
   next = abs_start;
   timespec_add_ns( &next, (PERIOD/rtl_num_cpus())*cpu );
   clock_gettime( CLOCK_REALTIME, &cur );
   while ( timespec_lt( &next, &cur ) )
      timespec_add_ns( &next, PERIOD );
   while ( 1 ) { 
      /* set the period so that we're running at PERIOD */
      timespec_add_ns( &next, PERIOD );
      /* sleep */
      clock_nanosleep( CLOCK_REALTIME, TIMER_ABSTIME, &next, NULL);
      /* compute the error between now and when
       * we expected to return from the sleep
       */
      clock_gettime( CLOCK_REALTIME, &cur );
      timespec_sub( &cur, &next );
      /* if this is the first run, set the "worst" value */
      if ( !timespec_nz(&worst[cpu]) ) { 
         worst[cpu] = cur;
         sem_post( &irqsem );
      }
      /* if this is the worst we have seen so far, print it */
      if ( timespec_lt( &worst[cpu], &cur ) ) { 
         worst[cpu] = cur;
         sem_post( &irqsem );
      } 
   }
   return NULL;
}

int main(void)
{ 
   int i;
   pthread_attr_t attr;
   struct sched_param sched_param;

   /* initialize the semaphore */
   sem_init( &irqsem, 1, 0 );

   /* get the current time that the threads can base their scheduling on */
   clock_gettime( CLOCK_REALTIME, &abs_start );

   /*
    * Start the thread that prints the timing values.
    * We set the thread priority very low to make sure that it does
    * not interfere with the threads that are doing the actual timing
    */
   pthread_attr_init( &attr );
   sched_param.sched_priority = sched_get_priority_min(SCHED_OTHER);
   pthread_attr_setschedparam( &attr, &sched_param );
   pthread_create( &print_thread, &attr, print_code, (void *)0 );
   
   /* create the threads to do the timing */
   for ( i = 0; i < rtl_num_cpus(); i++ ) { 
      /* initialize the thread attributes and set the CPU to run on */
      pthread_attr_init( &attr );

#ifdef CONFIG RTL
      /* Linux does not allow us to set the CPU to run on */
      pthread_attr_setcpu_np( &attr, i );
#endif

      sched_param.sched_priority = sched_get_priority_max(SCHED_OTHER);
      pthread_attr_setschedparam( &attr, &sched_param );
      pthread_create( &thread[i], &attr, thread_code, (void *)i );
   }

   /* wait for the thread to exit or for the user
    * to signal us asynchronously (with ^c or some such) to exit.
    */
#ifdef CONFIG_RTL
   rtl_main_wait();

   /* cancel the threads */
   for ( i = 0 ; i < rtl_num_cpus() ; i++ )
      pthread_cancel( thread[i] );
   /* cancel the print thread */
   pthread_cancel( print_thread );
#endif

   /* join the threads */
   for ( i = 0 ; i < rtl_num_cpus() ; i++ )
      pthread_join( thread[i], NULL );
   /* join the print thread */
   pthread_join( print_thread, NULL );
   return 0;
}



Listing 2

#
# Copyright (C) Cort Dougan, 2003
# Cort Dougan <cort@fsmlabs.com>
#
include /opt/rtldk-2.0/rtlinuxpro/rtl.mk

USER_CFLAGS += -lrt -lpthread

all: jitter jitter.rtl

clean: dummy
    jitter jitter.rtl
include /opt/rtldk-2.0/rtlinuxpro/Rules.make





1


?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
在线中文字幕一区| 麻豆91小视频| 色狠狠av一区二区三区| 亚洲美女电影在线| 色视频欧美一区二区三区| 亚洲区小说区图片区qvod| 欧美在线高清视频| 美女久久久精品| 精品久久人人做人人爽| 国产91对白在线观看九色| 中文字幕综合网| 欧美午夜不卡在线观看免费| 美女性感视频久久| 亚洲三级在线观看| 93久久精品日日躁夜夜躁欧美| 一区二区三区在线观看动漫| 欧美色视频在线观看| 喷白浆一区二区| 久久精品人人爽人人爽| 在线看日本不卡| 久久国产精品色婷婷| 国产婷婷一区二区| 欧美午夜精品久久久久久孕妇 | 亚洲欧美偷拍三级| 欧美日韩高清一区| 国产精品一区在线| 亚洲一区在线播放| 国产亚洲精品久| 在线观看免费亚洲| 国产一区高清在线| 伊人性伊人情综合网| 精品国产乱子伦一区| 91亚洲精品乱码久久久久久蜜桃 | 成人app在线| 天堂在线一区二区| 国产精品伦一区二区三级视频| 欧美三级韩国三级日本三斤| 国产一区二区三区四区五区美女 | 欧美日韩成人综合| 国产精品自拍一区| 午夜精品福利一区二区三区蜜桃| 久久久不卡网国产精品一区| 欧洲精品中文字幕| 国产成人精品一区二| 三级影片在线观看欧美日韩一区二区| 精品国一区二区三区| 欧美图区在线视频| 成人精品一区二区三区中文字幕| 日本不卡高清视频| 亚洲午夜视频在线| 中文字幕在线免费不卡| 久久久不卡影院| 日韩欧美在线观看一区二区三区| 一本到一区二区三区| 国产精品一区二区三区网站| 日韩在线一区二区| 一区二区在线观看视频在线观看| 欧美激情在线观看视频免费| 91精品国产高清一区二区三区| 91精品福利视频| 91丨porny丨蝌蚪视频| 激情成人午夜视频| 免费人成黄页网站在线一区二区| 亚洲最大色网站| 亚洲欧洲精品天堂一级 | 美女一区二区视频| 亚洲图片有声小说| 伊人开心综合网| 亚洲最色的网站| 亚洲免费看黄网站| 综合欧美一区二区三区| 一区二区中文视频| 国产精品久久99| 亚洲欧洲另类国产综合| 亚洲婷婷综合久久一本伊一区| 国产精品网站在线| 国产精品久久国产精麻豆99网站| 亚洲国产经典视频| 国产精品久久久久久久久免费樱桃 | 日本午夜精品一区二区三区电影| 午夜精品久久久久久久久 | 亚洲高清免费观看高清完整版在线观看 | 国产**成人网毛片九色| 成人免费看视频| 99热在这里有精品免费| av资源站一区| 色乱码一区二区三区88| 在线观看亚洲专区| 欧美一区二区在线免费播放| 日韩一级免费一区| 精品国产凹凸成av人导航| 亚洲精品一区二区三区四区高清| 久久精品欧美一区二区三区不卡| 国产亚洲一区二区三区| 国产精品灌醉下药二区| 亚洲免费毛片网站| 日本欧美在线看| 国产乱子伦一区二区三区国色天香 | 国产亚洲午夜高清国产拍精品 | 麻豆国产精品一区二区三区| 韩国欧美国产1区| 成人免费视频app| 日本道精品一区二区三区 | 免费看欧美女人艹b| 国内一区二区视频| 91在线高清观看| 欧美精品久久99久久在免费线| 欧美一区二区免费视频| 久久―日本道色综合久久| 亚洲欧洲av一区二区三区久久| 亚洲综合网站在线观看| 国精产品一区一区三区mba桃花| 国产精品羞羞答答xxdd| 色综合天天做天天爱| 日韩精品最新网址| 日韩成人dvd| 成人爱爱电影网址| 7777精品伊人久久久大香线蕉完整版 | 国内欧美视频一区二区| 国产盗摄一区二区三区| 色欧美片视频在线观看| 日韩视频免费直播| 中文字幕在线不卡一区| 蜜桃av噜噜一区二区三区小说| 高清国产一区二区| 欧美裸体一区二区三区| 国产日韩欧美制服另类| 亚洲成人中文在线| 国产成人精品一区二| 欧美另类久久久品| 国产精品久久精品日日| 麻豆成人久久精品二区三区小说| 91欧美激情一区二区三区成人| 欧美一级专区免费大片| 亚洲欧洲日产国码二区| 精品亚洲免费视频| 欧美色涩在线第一页| 国产精品人成在线观看免费| 蓝色福利精品导航| 精品视频1区2区| 国产精品视频第一区| 美女脱光内衣内裤视频久久网站| 91蜜桃免费观看视频| 久久久久综合网| 美女视频黄免费的久久| 欧美色涩在线第一页| 日韩美女精品在线| 国产精一品亚洲二区在线视频| 777色狠狠一区二区三区| 亚洲精品第1页| 成人国产精品视频| 精品1区2区在线观看| 奇米影视7777精品一区二区| 欧美在线观看18| 亚洲美女一区二区三区| 波多野结衣91| 国产精品色婷婷久久58| 国产精品99久久久久久似苏梦涵| 欧美精选一区二区| 亚洲二区在线观看| 欧美网站一区二区| 亚洲国产裸拍裸体视频在线观看乱了 | 国产日产欧美精品一区二区三区| 美女脱光内衣内裤视频久久网站| 欧美一区二区精美| 婷婷综合久久一区二区三区| 欧美日韩在线三级| 亚洲va韩国va欧美va精品 | 高潮精品一区videoshd| 久久久久久综合| 国产成人在线视频免费播放| 欧美国产精品专区| 成人网页在线观看| 亚洲视频1区2区| 91福利视频在线| 五月激情综合婷婷| 91.com视频| 国产一二三精品| 国产欧美日韩视频一区二区| 成人免费va视频| 亚洲欧美激情一区二区| 欧美中文字幕亚洲一区二区va在线| 亚洲已满18点击进入久久| 欧美日本不卡视频| 久久精品国产澳门| 国产日韩欧美综合在线| 91亚洲精华国产精华精华液| 亚洲另类色综合网站| 欧美日韩黄视频| 美女mm1313爽爽久久久蜜臀| 国产人成一区二区三区影院| aaa国产一区| 亚洲va韩国va欧美va| 精品日韩欧美一区二区| 不卡一区二区三区四区| 亚洲精品视频在线观看免费| 欧美高清www午色夜在线视频| 黑人巨大精品欧美黑白配亚洲| 国产精品国产自产拍高清av王其| 日本韩国精品在线|