linux闹钟命令,linux基于alarm的定时闹钟

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#define RTC_MAGIC 'y'

#define INIT

_IOW(RTC_MAGIC,1,int)

#define ADD

_IOW(RTC_MAGIC,2,int)

#define DEL

_IOW(RTC_MAGIC,3,int)

MODULE_LICENSE("Dual BSD/GPL");

#define MAJOR_NUM 222

unsigned char val_temp;

static ssize_t chardev_read(struct file *, char *, size_t,

loff_t*);

static ssize_t chardev_write(struct file *, const char *, size_t,

loff_t*);

static int chardev_ioctl(struct inode

*inode,struct file *file, unsigned int cmd,int * arg);

static int major = 0;

static int chardev_var = 0x555555;

static void one_func_task(void *p);

static struct rtc_device *rtc;

int data=0;

void add(int);

//struct rtc_wkalrm alam;

static

void one_func_task(void *p)

{

static int

count = 0 ;

printk("ok,finish!%d\n",count);

count++;

add(data);

}

static struct rtc_task func_task={

.func=one_func_task

};

void add(int);

void del(void);

void init(void);

void init(void)

{

// copy_from_user(&data,arg, sizeof(int));

// printk("1

start %d !\n",data);

rtc = rtc_class_open("rtc0"); // rtc_irq_unregister(rtc,&func_task);

rtc_irq_register(rtc,&func_task);

// rtc_irq_set_state(rtc,&func_task,1);

// rtc_irq_set_freq(rtc,&func_task,data);

printk("1 start %d !\n",data);

}

void del(void)

{

// copy_from_user(&data,(unsigned long *)arg,

sizeof(unsigned long));

// rtc =

rtc_class_open("rtc0"); // rtc_irq_set_freq(rtc,&func_task,0);

// rtc_irq_set_state(rtc,&func_task,0);

CMOS_WRITE(val_temp,RTC_CONTROL);

rtc_irq_unregister(rtc,&func_task);

rtc_class_close(rtc);

printk("3 start\n");

}

void add(int data_temp)

{ unsigned char val;

struct rtc_time before;

memset(&before,0,sizeof(struct

rtc_time)); before.tm_sec= CMOS_READ (RTC_SECONDS);

before.tm_min= CMOS_READ (RTC_MINUTES);

before.tm_hour= CMOS_READ (RTC_HOURS);

before.tm_sec=bcd2bin(before.tm_sec);

before.tm_min=bcd2bin(before.tm_min);

before.tm_hour=bcd2bin(before.tm_hour);

// printk("%d",before.tm_sec);

before.tm_sec+=data_temp;

// printk("%d",before.tm_sec);

/

return sizeof(int);

}

module_init(chardev_init);

module_exit(chardev_exit);

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值