官术网_书友最值得收藏!

4.3.4 Alarm驅動程序

Alarm驅動程序為用戶空間提供了一個時鐘的接口。它和RTC系統密切相關,起到封裝的作用,同時使用了Android系統的wake_lock等功能。Alarm提供給用戶空間的接口是主設備號為10的Misc字符設備,其次設備號是動態生成的。在用戶空間中,Alarm設備節點為:/dev/alarm。

Alarm驅動程序的內容在drivers/rtc/目錄中,KConfig和Makefile中定義了相關的內容,如下所示:

    rtc-core-$(CONFIG_RTC_INTF_ALARM) += alarm.o

Alarm驅動程序的頭文件是include/linux/中的android_alarm.h文件,alarm.c文件中定義了misc設備。

Alarm可以提供一些ioctl的命令供用戶空間調用,如下所示:

    #define ANDROID_ALARM_CLEAR(type)            _IO('a', 0 | ((type) << 4))
    #define ANDROID_ALARM_WAIT                   _IO('a', 1)
    #define ALARM_IOW(c, type, size)             _IOW('a', (c) | ((type) << 4), size)
    #define ANDROID_ALARM_SET(type)              ALARM_IOW(2, type, struct timespec)
    #define ANDROID_ALARM_SET_AND_WAIT(type)    ALARM_IOW(3, type, struct timespec)
    #define ANDROID_ALARM_GET_TIME(type)        ALARM_IOW(4, type, struct timespec)
    #define ANDROID_ALARM_SET_RTC                _IOW('a', 5, struct timespec)
    #define ANDROID_ALARM_BASE_CMD(cmd)         (cmd & ~(_IOC(0, 0, 0xf0, 0)))
    #define ANDROID_ALARM_IOCTL_TO_TYPE(cmd)    (_IOC_NR(cmd) >> 4)

以上ioctl命令主要用于設置警報器的時間,設置RTC(實時時鐘)時間,獲取當前時間等功能。

提示:Alarm設備需要利用內核中的RTC部分,但是和具體的RTC驅動程序沒有直接關系。

主站蜘蛛池模板: 兰州市| 安顺市| 伊宁市| 土默特左旗| 彰化县| 新巴尔虎左旗| 綦江县| 务川| 秦安县| 互助| 广州市| 彭山县| 通山县| 和硕县| 成都市| 淮北市| 凤山县| 道孚县| 金川县| 隆子县| 沈丘县| 泸溪县| 邢台市| 巴塘县| 临城县| 资阳市| 大兴区| 滦平县| 古田县| 福建省| 临高县| 高阳县| 饶平县| 友谊县| 雷波县| 新田县| 财经| 雷山县| 本溪市| 观塘区| 山东|