文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>可在用户态编写中断处理程序的范例

可在用户态编写中断处理程序的范例

时间:2010-10-29  来源:chenxibing008


如果希望某个硬件动作发生后,用户能在用户态编写中断处理程序,可以使用内核信号,下面是使用范例。

驱动(中断处理):

static irqreturn_t key_interrupt(int irq, void *dev_id, struct pt_regs *regs)
{
    printk(DEV_NAME" Interrupted!\n");
    send_sig(SIGUSR1, current, NULL); //send SIGUSR 1

    return IRQ_HANDLED;
}


驱动程序其它都没有不同,仅仅是在中断中发射信号而已。
用户程序:

/*
 * Catch SIGUSR1 sent from kernel mode Interrupt routine.
 * 捕捉内核态中断服务程序发送的SIGUSR1信号。
 * 用户可以在用户态编写自己的中断处理程序。
 */
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <sys/ioctl.h>
#include <errno.h>
#include <fcntl.h>
#include <sys/types.h>
#include <signal.h>

//#define MODE1
//#define MODE2
void signal_handler(int signo)
{
    printf("####in %s\n", __func__);
}


int main(int argc, char **argv)
{
#if defined (MODE1)
    signal(SIGUSR1, (void *)signal_handler); //这样可以


#else //这样也可以,第一种方式更加简单一些
    struct sigaction action;
    action.sa_handler = signal_handler;
    action.sa_flags = 0;
    sigaction(SIGUSR1, &action, NULL);
#endif

    while(1);
    return 0;
}

相关阅读 更多 +
排行榜 更多 +
辰域智控app

辰域智控app

系统工具 下载
网医联盟app

网医联盟app

运动健身 下载
汇丰汇选App

汇丰汇选App

金融理财 下载