歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux編程 >> Linux編程

Linux驅動:內核延時測試

環境:

主機:Fedora 12

目標板:MINI6410

目標板LINUX內核版本:2.6.38

實現功能:

延遲2S

 

方法1:利用系統全局變量jiffies

jiffies記錄系統節拍,每一次節拍,內核時鐘中斷函數會將jiffies加1.

HZ在ARM中為100,表示1S被分為100份,系統每個節拍為10ms.

修改上篇《Linux驅動編寫:LED驅動測試》(見 http://www.linuxidc.com/Linux/2012-01/51818.htm)中的ioctl函數,測試延時

[cpp]
  1. <span style="font-family:'Arial Black';font-size:18px;">//功能:ioctl操作函數   
  2. //返回值:成功返回0   
  3. static long led_driver_ioctl(struct file *filp, unsigned int cmd, unsigned long arg)  
  4. {  
  5.     unsigned int temp = 0;  
  6.     unsigned long t = 0;  
  7.       
  8.     temp = readl(S3C64XX_GPKDAT);  
  9.     if (cmd == 0)  
  10.     {  
  11.         temp &= ~(1 << (arg + 3));  
  12.     }  
  13.     else  
  14.     {  
  15.         temp |= 1 << (arg + 3);  
  16.     }  
  17.   
  18.     //等待2S   
  19.     t = jiffies;  
  20.     while (time_after(jiffies,t + 2 * HZ) != 1);  
  21.     writel(temp,S3C64XX_GPKDAT);  
  22.   
  23.     printk (DEVICE_NAME"\tjdh:led_driver cmd=%d arg=%d jiffies = %d\n",cmd,arg,jiffies);  
  24.       
  25.     return 0;  
  26. }</span>  
這個方法會使內核忙等待,會影響系統效率.

2.利用宏ndelay(n),延時ns

udelay(n),延時us

mdelay(n),延時ms

這個簡單,不做介紹

Copyright © Linux教程網 All Rights Reserved