国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Linux 內(nèi)核定時(shí)器(高級(jí)字符設(shè)備五)

這篇具有很好參考價(jià)值的文章主要介紹了Linux 內(nèi)核定時(shí)器(高級(jí)字符設(shè)備五)。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

一、Linux 內(nèi)核定時(shí)器介紹

??在 Linux 內(nèi)核中很多函數(shù)是基于定時(shí)器進(jìn)行驅(qū)動(dòng)的,但是內(nèi)核定時(shí)器的精度并不高,所以不能作為高精度定時(shí)器使用。并且內(nèi)核定時(shí)器的運(yùn)行沒有周期性,到達(dá)計(jì)時(shí)終點(diǎn)后會(huì)自動(dòng)關(guān)閉。如果要實(shí)現(xiàn)周期性定時(shí),就要在定時(shí)處理函數(shù)中重新開啟定時(shí)器。
??Linux 內(nèi)核中使用 timer_list 結(jié)構(gòu)體表示內(nèi)核定時(shí)器,該結(jié)構(gòu)體定義在“內(nèi)核源碼/include/linux/timer.h”文件中,具體內(nèi)容如下所示:

struct timer_list {
	/*
	 * All fields that change during normal runtime grouped to the
	 * same cacheline
	 */
	struct hlist_node	entry;
	unsigned long		expires;
	void			(*function)(struct timer_list *);
	u32			flags;

#ifdef CONFIG_LOCKDEP
	struct lockdep_map	lockdep_map;
#endif

	ANDROID_KABI_RESERVE(1);
	ANDROID_KABI_RESERVE(2);
};

??使用以下宏對(duì) timer_list 結(jié)構(gòu)體進(jìn)行定義,_name 為定義的結(jié)構(gòu)體名稱,_function為定時(shí)處理函數(shù),該宏同樣定義在文件 “內(nèi)核源碼/include/linux/timer.h”文件中,如下所示:

#define DEFINE_TIMER(_name, _function)				\
	struct timer_list _name =				\
		__TIMER_INITIALIZER(_function, 0)

??例如可以使用以下代碼對(duì)定時(shí)器和相應(yīng)的定時(shí)處理函數(shù)進(jìn)行定義

DEFINE_TIMER(timer_test,function_test);//定義一個(gè)定時(shí)器

??定時(shí)器定義完成之后還需要通過一系列的 API 函數(shù)來初始化此定時(shí)器,部分函數(shù)說明如下

函數(shù) 作用
void add_timer(struct timer_list *timer) 向 Linux 內(nèi)核注冊定時(shí)器,使用add_timer 函數(shù)向內(nèi)核注冊定時(shí)器以后,定時(shí)器就會(huì)開始運(yùn)行
int del_timer(struct timer_list * timer) 刪除一個(gè)定時(shí)器
int mod_timer(struct timer_list *timer,unsigned long expires) 修改定時(shí)值,如果定時(shí)器還沒

??在使用 add_timer()函數(shù)向 Linux 內(nèi)核注冊定時(shí)器之前,還需要設(shè)置定時(shí)時(shí)間,定時(shí)時(shí)間由 timer_list 結(jié)構(gòu)體中的 expires 參數(shù)所確定,單位為節(jié)拍數(shù)。文章來源地址http://www.zghlxwxcb.cn/news/detail-714185.html

二、代碼示例

2.1、程序示例

#include <linux/init.h>
#include <linux/module.h>
#include <linux/timer.h>

static void function_test(struct timer_list *t);//定義function_test定時(shí)功能函數(shù)
DEFINE_TIMER(timer_test,function_test);//定義一個(gè)定時(shí)器
static void function_test(struct timer_list *t)
{
	printk("this is function test \n");
	mod_timer(&timer_test,jiffies_64 + msecs_to_jiffies(5000));//使用mod_timer函數(shù)將定時(shí)時(shí)間設(shè)置為五秒后
}	
static int __init timer_mod_init(void) //驅(qū)動(dòng)入口函數(shù)
{
	timer_test.expires = jiffies_64 + msecs_to_jiffies(5000);//將定時(shí)時(shí)間設(shè)置為五秒后
	add_timer(&timer_test);//添加一個(gè)定時(shí)器
	return 0;
}

static void __exit timer_mod_exit(void) //驅(qū)動(dòng)出口函數(shù)
{
	del_timer(&timer_test);//刪除一個(gè)定時(shí)器
	printk("module exit \n");
}
module_init(timer_mod_init);
module_exit(timer_mod_exit);

2.2、Linux 內(nèi)核定時(shí)器使用API要點(diǎn)

DEFINE_TIMER(timer_test,function_test);//定義一個(gè)定時(shí)器
add_timer(&timer_test);//添加一個(gè)定時(shí)器
static void function_test(struct timer_list *t)
{
	printk("this is function test \n");
	mod_timer(&timer_test,jiffies_64 + msecs_to_jiffies(5000));//使用mod_timer函數(shù)將定時(shí)時(shí)間設(shè)置為五秒后
}	

到了這里,關(guān)于Linux 內(nèi)核定時(shí)器(高級(jí)字符設(shè)備五)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • <Linux開發(fā)>驅(qū)動(dòng)開發(fā) -之-內(nèi)核定時(shí)器與中斷

    <Linux開發(fā)>驅(qū)動(dòng)開發(fā) -之-內(nèi)核定時(shí)器與中斷

    <Linux開發(fā)>驅(qū)動(dòng)開發(fā) -之-內(nèi)核定時(shí)器與中斷 交叉編譯環(huán)境搭建: <Linux開發(fā)> linux開發(fā)工具-之-交叉編譯環(huán)境搭建 uboot移植可參考以下: <Linux開發(fā)> -之-系統(tǒng)移植 uboot移植過程詳細(xì)記錄(第一部分) <Linux開發(fā)> -之-系統(tǒng)移植 uboot移植過程詳細(xì)記錄(第二部分) <Linux開

    2024年02月08日
    瀏覽(26)
  • RK3399平臺(tái)開發(fā)系列講解(基礎(chǔ)篇)Linux 傳統(tǒng)間隔定時(shí)器

    RK3399平臺(tái)開發(fā)系列講解(基礎(chǔ)篇)Linux 傳統(tǒng)間隔定時(shí)器

    ??返回專欄總目錄 沉淀、分享、成長,讓自己和他人都能有所收獲!?? ??本篇將詳細(xì) 介紹 Linux 傳統(tǒng)間隔定時(shí)器。 Linux 的傳統(tǒng)間隔定時(shí)器設(shè)置接口是 setitimer,它可以設(shè)定在未來某個(gè)時(shí)

    2023年04月11日
    瀏覽(23)
  • [驅(qū)動(dòng)開發(fā)]Linux內(nèi)核定時(shí)器與中斷的簡單應(yīng)用

    首先介紹一下定時(shí)器原理。 在linux系統(tǒng)中定時(shí)器有分為軟定時(shí)和硬件定時(shí)器。 以海思某款芯片為例,定時(shí)器模塊又稱為Timer模塊,主要實(shí)現(xiàn)定時(shí)、計(jì)數(shù)功能。 Timer 具有以下特點(diǎn): 帶可編程 8 位預(yù)分頻器的 32bit/16bit 減法定時(shí)器/計(jì)數(shù)器。 Timer 的計(jì)數(shù)時(shí)鐘為 3MHz 時(shí)鐘。 支持 3 種

    2024年02月20日
    瀏覽(34)
  • Linux學(xué)習(xí)第21天:Linux內(nèi)核定時(shí)器驅(qū)動(dòng)開發(fā): 流淌的時(shí)間長河

    Linux學(xué)習(xí)第21天:Linux內(nèi)核定時(shí)器驅(qū)動(dòng)開發(fā): 流淌的時(shí)間長河

    Linux版本號(hào)4.1.15? ?芯片I.MX6ULL? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 大叔學(xué)Linux? ? 品人間百味? 思文短情長 ? ? ? ? ? 在人類的發(fā)展進(jìn)化中,時(shí)間是一個(gè)非常重要神秘的物質(zhì)量。任何事物都是在時(shí)間的長河中流淌發(fā)生、發(fā)展、變化。我們進(jìn)行驅(qū)動(dòng)開發(fā)中對(duì)時(shí)間的定義和使

    2024年02月07日
    瀏覽(20)
  • lv14 內(nèi)核定時(shí)器 11

    lv14 內(nèi)核定時(shí)器 11

    硬件有一個(gè)時(shí)鐘裝置,該裝置每隔一定時(shí)間發(fā)出一個(gè)時(shí)鐘中斷( 稱為一次時(shí)鐘嘀嗒-tick ),對(duì)應(yīng)的中斷處理程序就將 全局變量jiffies_64加1 jiffies_64 是一個(gè)全局64位整型, jiffies全局變量為其低32位的全局變量, 程序中一般用jiffies HZ:可配置的宏,表示1秒鐘產(chǎn)生的時(shí)鐘中斷次數(shù)

    2024年01月22日
    瀏覽(18)
  • STM32 MCU 定時(shí)器詳解(3)--高級(jí)定時(shí)器

    STM32 MCU 定時(shí)器詳解(3)--高級(jí)定時(shí)器

    16位遞增、遞減、中心對(duì)齊計(jì)數(shù)器(計(jì)數(shù)值:0~65535) 16位預(yù)分頻器(分頻系數(shù):1~65536) 可用于觸發(fā)DAC、ADC 在更新事件、觸發(fā)事件、輸入捕獲、輸出比較時(shí),會(huì)產(chǎn)生中斷/DMA請(qǐng)求 4個(gè)獨(dú)立通道,可用于:輸入捕獲、輸出比較、輸出PWM、單脈沖模式 使用外部信號(hào)控制定時(shí)器且可實(shí)

    2024年04月17日
    瀏覽(28)
  • STM32中TIM定時(shí)器定時(shí)功能詳解(適用基本,通用,高級(jí)定時(shí)器)

    STM32中TIM定時(shí)器定時(shí)功能詳解(適用基本,通用,高級(jí)定時(shí)器)

    定時(shí)器有高級(jí)定時(shí)器、通用定時(shí)器、基本定時(shí)器三種類型。具體功能如下。 上面是每種定時(shí)器所具有的功能。 我們可以看到每種定時(shí)器都有一個(gè)定時(shí)功能,(可能是名字的由來吧)。當(dāng)然,每個(gè)定時(shí)器都可以來使用定時(shí)功能,但是我們往往在基本定時(shí)器和通用定時(shí)器上面使用

    2024年01月19日
    瀏覽(31)
  • 高級(jí)定時(shí)器

    高級(jí)定時(shí)器

    本節(jié)主要介紹以下內(nèi)容: 定時(shí)器簡介 高級(jí)定時(shí)器功能框圖講解 定時(shí)器功能 ? : 定時(shí)、輸出比較、輸入捕獲、斷路輸入 定時(shí)器分類 ? : 基本定時(shí)器、通用定時(shí)器、高級(jí)定時(shí)器 定時(shí)器資源 ? : F103 有 2 個(gè)高級(jí)定時(shí)器、 4 個(gè)通用定時(shí)器、 2 個(gè)基本定時(shí)器 計(jì)數(shù)器特性: 高級(jí)定

    2024年01月16日
    瀏覽(13)
  • STM32TIM定時(shí)器PWM輸出比較(適用于通用,高級(jí)定時(shí)器)

    STM32TIM定時(shí)器PWM輸出比較(適用于通用,高級(jí)定時(shí)器)

    在定時(shí)器中我們最常用的功能就是輸出PWM,大多是用在電機(jī)控制方面,目前網(wǎng)絡(luò)上相關(guān)資料也有很多,但是,很多不利于我們“現(xiàn)搜現(xiàn)用”我這里不是說我寫的有多好,而是你搜索到此類文章時(shí)大部分是急于解決目前的問題,一段相關(guān)代碼和講解就行,當(dāng)然不是學(xué)習(xí)背后的原

    2024年01月25日
    瀏覽(21)
  • STM32高級(jí)定時(shí)器詳解

    STM32高級(jí)定時(shí)器詳解

    ?作者簡介:嵌入式入坑者,與大家一起加油,希望文章能夠幫助各位?。。?! ??個(gè)人主頁:@rivencode的個(gè)人主頁 ??系列專欄:玩轉(zhuǎn)STM32 ??保持學(xué)習(xí)、保持熱愛、認(rèn)真分享、一起進(jìn)步??! 基本定時(shí)器TIM6和TIM7各包含 一個(gè)16位自動(dòng)裝載計(jì)數(shù)器 ,由各自的可編程預(yù)分頻器驅(qū)動(dòng)。

    2024年01月19日
    瀏覽(20)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包