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的完美打印控制。

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