summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMark Salyzyn2016-03-08 18:18:26 -0600
committerMark Salyzyn2017-02-08 15:37:44 -0600
commit62d0d2d683f5d19cf9d451548bd03c4b4f53c42e (patch)
tree6df22a249f02d030b93b7b4db8b5eb815a41614a /liblog/fake_writer.c
parent8f2492f5821f7163a13c58286de8d0d419fefddc (diff)
downloadplatform-system-core-62d0d2d683f5d19cf9d451548bd03c4b4f53c42e.tar.gz
platform-system-core-62d0d2d683f5d19cf9d451548bd03c4b4f53c42e.tar.xz
platform-system-core-62d0d2d683f5d19cf9d451548bd03c4b4f53c42e.zip
liblog: add logprint to host build
- cleanup of some style issues - resolve a few minor bugs - add -lrt for host so that clock_gettime can be issued - enable write-only logging, logprint and event list handling tests for host consumption. NB: CtsLiblogTestCases_list is only outlet for host testing of the interfaces, but it is not part of any automated testing Test: gTest liblog-unit-tests, liblog-benchmarks and CtsLiblogTestCases_list && build mmma system/core/liblog Bug: 27405083 Change-Id: I13db1f45f67569407587a5a909248de33809b8cf
Diffstat (limited to 'liblog/fake_writer.c')
-rw-r--r--liblog/fake_writer.c28
1 files changed, 25 insertions, 3 deletions
diff --git a/liblog/fake_writer.c b/liblog/fake_writer.c
index dab8bc54e..2350673e1 100644
--- a/liblog/fake_writer.c
+++ b/liblog/fake_writer.c
@@ -46,9 +46,19 @@ static int fakeOpen() {
46 int i; 46 int i;
47 47
48 for (i = 0; i < LOG_ID_MAX; i++) { 48 for (i = 0; i < LOG_ID_MAX; i++) {
49 char buf[sizeof("/dev/log_security")]; 49 /*
50 * Known maximum size string, plus an 8 character margin to deal with
51 * possible independent changes to android_log_id_to_name().
52 */
53 char buf[sizeof("/dev/log_security") + 8];
54 if (logFds[i] >= 0) {
55 continue;
56 }
50 snprintf(buf, sizeof(buf), "/dev/log_%s", android_log_id_to_name(i)); 57 snprintf(buf, sizeof(buf), "/dev/log_%s", android_log_id_to_name(i));
51 logFds[i] = fakeLogOpen(buf, O_WRONLY); 58 logFds[i] = fakeLogOpen(buf, O_WRONLY);
59 if (logFds[i] < 0) {
60 fprintf(stderr, "fakeLogOpen(%s, O_WRONLY) failed\n", buf);
61 }
52 } 62 }
53 return 0; 63 return 0;
54} 64}
@@ -66,16 +76,28 @@ static int fakeWrite(log_id_t log_id, struct timespec *ts __unused,
66 struct iovec *vec, size_t nr) 76 struct iovec *vec, size_t nr)
67{ 77{
68 ssize_t ret; 78 ssize_t ret;
69 int logFd; 79 size_t i;
80 int logFd, len;
70 81
71 if (/*(int)log_id >= 0 &&*/ (int)log_id >= (int)LOG_ID_MAX) { 82 if (/*(int)log_id >= 0 &&*/ (int)log_id >= (int)LOG_ID_MAX) {
72 return -EBADF; 83 return -EINVAL;
84 }
85
86 len = 0;
87 for (i = 0; i < nr; ++i) {
88 len += vec[i].iov_len;
89 }
90
91 if (len > LOGGER_ENTRY_MAX_PAYLOAD) {
92 len = LOGGER_ENTRY_MAX_PAYLOAD;
73 } 93 }
74 94
75 logFd = logFds[(int)log_id]; 95 logFd = logFds[(int)log_id];
76 ret = TEMP_FAILURE_RETRY(fakeLogWritev(logFd, vec, nr)); 96 ret = TEMP_FAILURE_RETRY(fakeLogWritev(logFd, vec, nr));
77 if (ret < 0) { 97 if (ret < 0) {
78 ret = -errno; 98 ret = -errno;
99 } else if (ret > len) {
100 ret = len;
79 } 101 }
80 102
81 return ret; 103 return ret;