linux 驱动调试 bug 记录

文章讨论了在字符设备操作中`pinpong_control_uart_write`函数遇到的错误(-512)及其原因,提到内核中未找到对应错误码,最终通过共享队列解决。同时提及Python中使用守护线程时线程释放的问题,指出需两次Ctrl+C才能确保线程关闭。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1. 字符设备 close 中的最后一条数据一直报错,有没有人知道怎么回事

ssize_t pinpong_control_uart_write(char *buf, size_t len){

    int ret = 0;
    uint8_t recv[50] = {0};
    kernel_read(filp, 0, recv, 50);   // 相当于错误处理,读出之前缓冲的字符串,保证下一个字符串正常
    ret = kernel_write(filp, buf, len, filp->f_pos);
    // while(1){
    //   if(ret > 0){
    //     break;
    //   }
    //   msleep(2000);
    //   ret = kernel_write(filp, buf, len, filp->f_pos);
    //   kernel_read(filp, 0, recv, 1);
    //   printk("buf = %d %d %d %d %d %d\n", buf[0],buf[1],buf[2],buf[3],buf[4],buf[5]);
    //   printk("len = %d ++++++++write error  ret = %d \n",len ,ret);
    // }
    return ret;
}

ret 一直等于 -512  ,内核中也没有这个错误码啊!!!! 最后使用共享队列解决 

2.python 中在代码中开辟了线程,必须使用两次ctrl+c才能释放,使用守护线程,随主线程释放而释放

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值