diff options
author | Dan Willemsen | 2017-05-07 14:17:15 -0500 |
---|---|---|
committer | Dan Willemsen | 2017-05-07 15:21:35 -0500 |
commit | f3452d817886829669a7ff6dbce5b73d336caa52 (patch) | |
tree | da755004c1e40b74e6bbf43cb6d5a81bba96c3c8 /liblog | |
parent | 0de03b53fcf8c5807abbfc71d082f3b9cad031fa (diff) | |
download | platform-system-core-f3452d817886829669a7ff6dbce5b73d336caa52.tar.gz platform-system-core-f3452d817886829669a7ff6dbce5b73d336caa52.tar.xz platform-system-core-f3452d817886829669a7ff6dbce5b73d336caa52.zip |
Remove old simulator support from liblog
As far as I know, this isn't used anymore, and is causing problems when
building with bionic on the host (with the cast of open).
Bug: 31559095
Test: host bionic compiles
Change-Id: I8b6e802e2d6dcc6e8476e387a5a365903aec3be1
Diffstat (limited to 'liblog')
-rw-r--r-- | liblog/fake_log_device.c | 81 | ||||
-rw-r--r-- | liblog/fake_log_device.h | 2 | ||||
-rw-r--r-- | liblog/fake_writer.c | 4 |
3 files changed, 18 insertions, 69 deletions
diff --git a/liblog/fake_log_device.c b/liblog/fake_log_device.c index ae7a33412..1483c248e 100644 --- a/liblog/fake_log_device.c +++ b/liblog/fake_log_device.c | |||
@@ -15,9 +15,7 @@ | |||
15 | */ | 15 | */ |
16 | /* | 16 | /* |
17 | * Intercepts log messages intended for the Android log device. | 17 | * Intercepts log messages intended for the Android log device. |
18 | * When running in the context of the simulator, the messages are | 18 | * Messages are printed to stderr. |
19 | * passed on to the underlying (fake) log device. When not in the | ||
20 | * simulator, messages are printed to stderr. | ||
21 | */ | 19 | */ |
22 | #include <ctype.h> | 20 | #include <ctype.h> |
23 | #include <errno.h> | 21 | #include <errno.h> |
@@ -561,7 +559,8 @@ static void showLog(LogState* state, int logPrio, const char* tag, | |||
561 | * tag (N bytes -- null-terminated ASCII string) | 559 | * tag (N bytes -- null-terminated ASCII string) |
562 | * message (N bytes -- null-terminated ASCII string) | 560 | * message (N bytes -- null-terminated ASCII string) |
563 | */ | 561 | */ |
564 | static ssize_t logWritev(int fd, const struct iovec* vector, int count) { | 562 | LIBLOG_HIDDEN ssize_t fakeLogWritev(int fd, const struct iovec* vector, |
563 | int count) { | ||
565 | LogState* state; | 564 | LogState* state; |
566 | 565 | ||
567 | /* Make sure that no-one frees the LogState while we're using it. | 566 | /* Make sure that no-one frees the LogState while we're using it. |
@@ -626,8 +625,18 @@ error: | |||
626 | 625 | ||
627 | /* | 626 | /* |
628 | * Free up our state and close the fake descriptor. | 627 | * Free up our state and close the fake descriptor. |
628 | * | ||
629 | * The logger API has no means or need to 'stop' or 'close' using the logs, | ||
630 | * and as such, there is no way for that 'stop' or 'close' to translate into | ||
631 | * a close operation to the fake log handler. fakeLogClose is provided for | ||
632 | * completeness only. | ||
633 | * | ||
634 | * We have no intention of adding a log close operation as it would complicate | ||
635 | * every user of the logging API with no gain since the only valid place to | ||
636 | * call is in the exit handler. Logging can continue in the exit handler to | ||
637 | * help debug HOST tools ... | ||
629 | */ | 638 | */ |
630 | static int logClose(int fd) { | 639 | LIBLOG_HIDDEN int fakeLogClose(int fd) { |
631 | deleteFakeFd(fd); | 640 | deleteFakeFd(fd); |
632 | return 0; | 641 | return 0; |
633 | } | 642 | } |
@@ -635,7 +644,7 @@ static int logClose(int fd) { | |||
635 | /* | 644 | /* |
636 | * Open a log output device and return a fake fd. | 645 | * Open a log output device and return a fake fd. |
637 | */ | 646 | */ |
638 | static int logOpen(const char* pathName, int flags __unused) { | 647 | LIBLOG_HIDDEN int fakeLogOpen(const char* pathName) { |
639 | LogState* logState; | 648 | LogState* logState; |
640 | int fd = -1; | 649 | int fd = -1; |
641 | 650 | ||
@@ -654,66 +663,6 @@ static int logOpen(const char* pathName, int flags __unused) { | |||
654 | return fd; | 663 | return fd; |
655 | } | 664 | } |
656 | 665 | ||
657 | /* | ||
658 | * Runtime redirection. If this binary is running in the simulator, | ||
659 | * just pass log messages to the emulated device. If it's running | ||
660 | * outside of the simulator, write the log messages to stderr. | ||
661 | */ | ||
662 | |||
663 | static int (*redirectOpen)(const char* pathName, int flags) = NULL; | ||
664 | static int (*redirectClose)(int fd) = NULL; | ||
665 | static ssize_t (*redirectWritev)(int fd, const struct iovec* vector, | ||
666 | int count) = NULL; | ||
667 | |||
668 | static void setRedirects() { | ||
669 | const char* ws; | ||
670 | |||
671 | /* Wrapsim sets this environment variable on children that it's | ||
672 | * created using its LD_PRELOAD wrapper. | ||
673 | */ | ||
674 | ws = getenv("ANDROID_WRAPSIM"); | ||
675 | if (ws != NULL && strcmp(ws, "1") == 0) { | ||
676 | /* We're running inside wrapsim, so we can just write to the device. */ | ||
677 | redirectOpen = (int (*)(const char* pathName, int flags))open; | ||
678 | redirectClose = close; | ||
679 | redirectWritev = writev; | ||
680 | } else { | ||
681 | /* There's no device to delegate to; handle the logging ourselves. */ | ||
682 | redirectOpen = logOpen; | ||
683 | redirectClose = logClose; | ||
684 | redirectWritev = logWritev; | ||
685 | } | ||
686 | } | ||
687 | |||
688 | LIBLOG_HIDDEN int fakeLogOpen(const char* pathName, int flags) { | ||
689 | if (redirectOpen == NULL) { | ||
690 | setRedirects(); | ||
691 | } | ||
692 | return redirectOpen(pathName, flags); | ||
693 | } | ||
694 | |||
695 | /* | ||
696 | * The logger API has no means or need to 'stop' or 'close' using the logs, | ||
697 | * and as such, there is no way for that 'stop' or 'close' to translate into | ||
698 | * a close operation to the fake log handler. fakeLogClose is provided for | ||
699 | * completeness only. | ||
700 | * | ||
701 | * We have no intention of adding a log close operation as it would complicate | ||
702 | * every user of the logging API with no gain since the only valid place to | ||
703 | * call is in the exit handler. Logging can continue in the exit handler to | ||
704 | * help debug HOST tools ... | ||
705 | */ | ||
706 | LIBLOG_HIDDEN int fakeLogClose(int fd) { | ||
707 | /* Assume that open() was called first. */ | ||
708 | return redirectClose(fd); | ||
709 | } | ||
710 | |||
711 | LIBLOG_HIDDEN ssize_t fakeLogWritev(int fd, const struct iovec* vector, | ||
712 | int count) { | ||
713 | /* Assume that open() was called first. */ | ||
714 | return redirectWritev(fd, vector, count); | ||
715 | } | ||
716 | |||
717 | LIBLOG_HIDDEN ssize_t __send_log_msg(char* buf __unused, | 666 | LIBLOG_HIDDEN ssize_t __send_log_msg(char* buf __unused, |
718 | size_t buf_size __unused) { | 667 | size_t buf_size __unused) { |
719 | return -ENODEV; | 668 | return -ENODEV; |
diff --git a/liblog/fake_log_device.h b/liblog/fake_log_device.h index 462d026b2..7b0e7453e 100644 --- a/liblog/fake_log_device.h +++ b/liblog/fake_log_device.h | |||
@@ -23,7 +23,7 @@ | |||
23 | 23 | ||
24 | struct iovec; | 24 | struct iovec; |
25 | 25 | ||
26 | LIBLOG_HIDDEN int fakeLogOpen(const char* pathName, int flags); | 26 | LIBLOG_HIDDEN int fakeLogOpen(const char* pathName); |
27 | LIBLOG_HIDDEN int fakeLogClose(int fd); | 27 | LIBLOG_HIDDEN int fakeLogClose(int fd); |
28 | LIBLOG_HIDDEN ssize_t fakeLogWritev(int fd, const struct iovec* vector, | 28 | LIBLOG_HIDDEN ssize_t fakeLogWritev(int fd, const struct iovec* vector, |
29 | int count); | 29 | int count); |
diff --git a/liblog/fake_writer.c b/liblog/fake_writer.c index 969661ada..403dc72be 100644 --- a/liblog/fake_writer.c +++ b/liblog/fake_writer.c | |||
@@ -55,9 +55,9 @@ static int fakeOpen() { | |||
55 | continue; | 55 | continue; |
56 | } | 56 | } |
57 | 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)); |
58 | logFds[i] = fakeLogOpen(buf, O_WRONLY); | 58 | logFds[i] = fakeLogOpen(buf); |
59 | if (logFds[i] < 0) { | 59 | if (logFds[i] < 0) { |
60 | fprintf(stderr, "fakeLogOpen(%s, O_WRONLY) failed\n", buf); | 60 | fprintf(stderr, "fakeLogOpen(%s) failed\n", buf); |
61 | } | 61 | } |
62 | } | 62 | } |
63 | return 0; | 63 | return 0; |