va_経由Listおよび/dev/kmsgシリアルポートでデバッグ情報を印刷


次はソース
#include <stdio.h>
#include <string.h>
#include <stdarg.h>

static void mp4api_dbprint_ttxgz(char* format,...)
{
    va_list args;
    int fd;
    char string[1000];
    va_start(args,format);
    vsprintf(string,format,args);
    va_end(args);

    fd = open("/dev/kmsg",O_RDWR);
    if(fd == -1)
    {    
            return;
    }    
    write(fd,string,strlen(string)+1);
    close(fd);  
}

注意すべきは、linuxが起きた後、端末で/dev/kmsgの権限を変更する必要がある777です.
このような利点は、開発時にkernelがadbに接続できない場合、ddmsでLogcat印刷を見ることができず、端末でlogcat印刷を見るのは面倒で、このような方法で直接シリアルポートに印刷を追加することができるということです.
しかし、ここのwriteはブロック式かもしれないし、プログラムを遅くする可能性があります.