用户态代码怎么会无缘无故打出许多空白行,而且用打断输出?

发布于 2022-09-22 14:16:21 字数 5545 浏览 18 评论 0

最近写了个字符设备驱动,然后写了个用户态代码进行测试,测试代码如下:

main()
{
    unsigned char str_conf[] = {0x06, 0x00, 0x00};
    unsigned char str_wr[] = {0x02, 0x00, 0x00};
    unsigned char str_rd[] = {0x00, 0x30, 0x00};

    int fd;
    int count = 2;
    int i = 0;

    unsigned char byte;

    printf("begin\n");
    fd = open("/dev/i2c", O_RDWR);
    printf("open\n");
    ioctl(fd, I2C_SLAVE, 0x44);
    printf("ioctl\n");

#if 1
    //configuration register for output port 0

    write(fd, str_conf, count);
    printf("read byte = %x\n", byte);

    //write output port 0 register

    while(1){
        byte = 0x3F & ~(1 << i);
        str_wr[1] = byte;
        write(fd, str_wr, count);
        printf("read byte = %x\n", byte);
        sleep(1);
        i++;
        if(i == 6)i = 0;
    }
#endif
}

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(6

江挽川 2022-09-29 14:16:21

很怪异,貌似有其它地方在往终端输出东西

臻嫒无言 2022-09-29 14:16:21

嗯,我又试了一下,把驱动的printk注释掉用,打印就正常了,奇怪,用户态被打断也不应该打印空白行啊

腻橙味 2022-09-29 14:16:21

难道打印的是换行符?

情场扛把子 2022-09-29 14:16:21

原帖由 soararing 于 2008-11-20 11:00 发表
嗯,我又试了一下,把驱动的printk注释掉用,打印就正常了,奇怪,用户态被打断也不应该打印空白行啊

printk和用户空间的printf居然联系上了?

杀お生予夺 2022-09-29 14:16:21

原帖由 dreamice 于 2008-11-20 16:55 发表

printk和用户空间的printf居然联系上了?

我觉得不大可能啊。内核空间和用户空间都是严格分开的

不一样的天空 2022-09-29 14:16:21

应该是有中断进来吧, 内核的调试信息?

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文