当前位置: 技术问答>linux和unix
linux 下简单的字符设备驱动
来源: 互联网 发布时间:2016-11-16
本文导语: 最近在学做linux设备驱动,写了一个简单的字符设备如下 #ifndef __KERNEL__ #define __KERNEL__ #endif #ifndef MODULE #define MODULE #endif #include #include #include static int __init hello_init(void) { printk("hello world!n");//打...
最近在学做linux设备驱动,写了一个简单的字符设备如下
#ifndef __KERNEL__
#define __KERNEL__
#endif
#ifndef MODULE
#define MODULE
#endif
#include
#include
#include
static int __init hello_init(void)
{
printk("hello world!n");//打印一句话
return 0;
}
void __exit hello_exit(void)
{
printk("bye!n");
}
module_init(hello_init);
就是初始化然后打印一段话,我make出.ko文件 然后加载驱动,mknod 创建节点,然后写了一个测试的
int main()
{
int fd;
if((fd=open("/dev/test",O_RDWR))==-1)
printf("opened!n");
}
但是运行结果只有opened! ,而没有驱动应该打印的那句话!这是怎么回事,我是在PC上做的
#ifndef __KERNEL__
#define __KERNEL__
#endif
#ifndef MODULE
#define MODULE
#endif
#include
#include
#include
static int __init hello_init(void)
{
printk("hello world!n");//打印一句话
return 0;
}
void __exit hello_exit(void)
{
printk("bye!n");
}
module_init(hello_init);
就是初始化然后打印一段话,我make出.ko文件 然后加载驱动,mknod 创建节点,然后写了一个测试的
int main()
{
int fd;
if((fd=open("/dev/test",O_RDWR))==-1)
printf("opened!n");
}
但是运行结果只有opened! ,而没有驱动应该打印的那句话!这是怎么回事,我是在PC上做的
|
驱动打印了。只有在字符模式下才能看到这个。
你进入图形界面,是看不到这个打印语句的
你进入图形界面,是看不到这个打印语句的
|
要用dmesg看才行,printk不能输出到用户空间,如果要的话应该是copy_to_user