加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

Linux 异步通知使用任意信号SIGUSR1的说明 kill_fasync(&a.async_queue, SIGUSR1,&

(2017-05-27 16:37:26)
分类: Driver
参考
http://bbs.csdn.net/topics/391000942?page=1

一般的,Linux使用异步通知发送信号都是SIGIO,在默认的情况下,即使调用
kill_fasync(&a.async_queue, SIGUSR1, POLL_IN);
应用层接收到的信号还是SIGIO
怎么能让驱动发出啥信号,应用就收到啥信号。
根据man说的,是用F_SETSIG。以信号SIGURG为例,我就加了一句:
fcntl(fd, F_SETSIG, SIGURG);
发现这个F_SETSIG奇葩啊~~~~~~编译的时候还要额外加编译选项,否则说未定义这个东西:
gcc -D_GNU_SOURCE xxx.c
之后我让驱动发SIGURG,应用就能够收到SIGURG了并执行相应的处理函数

对于Makefile加入-D_GNU_SOURCE
OBJS := usb_probe.o cmd.o main.o 

HDRS :=  usb_probe.h cmd.h 

LIBS := -I/zynq/usb/libusb-1.0.9/_install/include/libusb-1.0 -L/zynq/usb/libusb-1.0.9/_install/lib -lusb-1.0

CC := arm-xilinx-linux-gnueabi-gcc -D_GNU_SOURCE

zynq_psw : $(OBJS) $(HDRS)

$(CC) $(OBJS) -o zynq_psw $(LIBS)

%.o:%.c $(HDRS)

$(CC) -Wall -c $< -o $@ $(LIBS)

.PHONY : clean

clean:

rm -rf *.o

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有