linux logger.c移植问题

        andriod的logcat工具很好用,可以将其移植到linux上,方便程序调试。logcat在linux上分为两部分:logcat工具和内核驱动logger。logger驱动在3.x内核中位于/drivers/staging/andriod中,如果使用内核版本是3.x,直接编译即可。如果内核版本使用4.x,会编译报错,主要是4.x内核的部分结构体进行了调整,所以需要修改logger.c。本想直接使用4.x内核中的logger.c,不过很遗憾,从4.0开始logger被移除了staging,所以只能修改3.x中的logger.c。我使用的logger.c是3.14.12中的,其它版本下的应该大同小异吧。主要修改点如下:

  1. 包含头文件:#include <uio.h>   
  2. 修改函数logger_aio_write:

         入参改为struct kiocb *iocb和struct iov_iter *iter;  //根据4.x内核file_operations中write_iter原型定义修改

         iocb->ki_nbytes改为iter->count  //4.0内核无ki_nbytes字段,替换字段为iter->count

         nr_segsiov移到iter结构中,前面加iter->即可

    3. file_operations中异步接口改为write_iter

经过上面三处修改应该就能编译了,生成ko文件insmod试试吧,体验logcat的完美打印控制。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章