增加将log信息存入/data/中的功能

增加将log信息存入/data/中的功能

1源码在system/extras/test/rec-kmsg/main.c

2修改system/extras/test/rec-kmsg/Android.mk

将LOCAL_MODULE_TAGS := optional

修改为LOCAL_MODULE_TAGS := optional eng

因为前者生成的文件rec-kmsg只存于out/target/product/ msm8660_surf/symbols/system中,加了eng之后,还存于out/target/product/ msm8660_surf/system中。

LOCAL_MODULE_TAGS用于指定编译android时形成的版本风格

3修改system/core/rootdir/init.rc

加入:

service rec-kmsg /system/xbin/rec-kmsg

    class main

user root

则在系统启动时,自动运行rec-kmsg。

 

  1 #include <stdio.h>
  2 #include <unistd.h>
  3 #include <fcntl.h>
  4 #include <linux/ioctl.h>
  5 #include <time.h>
  6 #include <linux/msm_audio.h>
  7 #include <pthread.h>
  8 #include <sys/ioctl.h>
  9 #include <string.h>
 10 #include <stdlib.h>
 11 #include <unistd.h>
 12 #include <stdint.h>
 13 
 14 #define CAT_BUFSIZ (4096)
 15 
 16 static void raw_cat(void)
 17 {
 18     time_t now_t = time(NULL);
 19     struct tm  now = *localtime(&now_t);
 20     char date[32];
 21     char logcat[32];
 22     char command[256];
 23     static char *buf;
 24     static char fb_buf[CAT_BUFSIZ];
 25     static size_t bsize;
 26     ssize_t nr, nw, off;
 27     int wfd, rfd;
 28 
 29     /* Get day time as file name */
 30     strftime(date, 32, "/data/%Y%m%d-%H-%M-%S-kmsg", &now);
 31     strftime(logcat, 32, "/data/%Y%m%d-%H-%M-%S-logcat", &now);
 32     date[31] = 0;
 33     logcat[31] = 0;
 34     printf("%s\n", date);
 35     snprintf(command, 256, "/system/bin/logcat -b main -b system -b events -b radio -v time *:v > %s&", logcat);
 36 
 37     system(command);
 38 
 39     /* Read fd */
 40     rfd = open("/proc/kmsg", O_RDONLY);
 41     //printf("rfd = %d\n", rfd);
 42 
 43     /* Write fd */
 44     wfd = open(date, O_RDWR|O_CREAT);
 45     //wfd = open("/data/kmsg", O_RDWR|O_CREAT);
 46     //printf("wfd = %d\n", wfd);
 47 
 48     if (buf == NULL) {
 49         buf = fb_buf;
 50         bsize = CAT_BUFSIZ;
 51     }
 52 
 53     while ((nr = read(rfd, buf, bsize)) > 0)
 54         for (off = 0; nr; nr -= nw, off += nw)
 55             if ((nw = write(wfd, buf + off, (size_t)nr)) < 0)
 56             {
 57                 perror("write");
 58                 exit(EXIT_FAILURE);
 59             }
 60 }
 61 
 62 int main(int argc, char **argv)
 63 {
 64     raw_cat();
 65     return 0;
 66 }


system/extras/tests/rec-kmsg/Android.mk

  1 ifneq ($(TARGET_SIMULATOR),true)
  2 ifeq ($(TARGET_PRODUCT),msm8660_surf)
  3 LOCAL_PATH:= $(call my-dir)
  4 include $(CLEAR_VARS)
  5 LOCAL_SRC_FILES := \
  6     main.c
  7 LOCAL_MODULE := rec-kmsg
  8 LOCAL_MODULE_TAGS := optional
  9 LOCAL_MODULE_PATH := $(TARGET_OUT_OPTIONAL_EXECUTABLES)
 10 include $(BUILD_EXECUTABLE)
 11 endif  # TARGET_PRODUCT == msm8660_surf
 12 endif  # TARGET_SIMULATOR != true
~                                         


 

1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值