Michal Bloch [Fri, 10 Feb 2023 12:43:26 +0000 (13:43 +0100)]
dlog_logger: writer_free uses foreach
Mostly for consistency with all the other foreach that are
going to be introduced for readers in further patches.
Change-Id: Ied26532bd13ed9644126acab98501a35e1ae4afe
Signed-off-by: Michal Bloch <m.bloch@samsung.com>
Michal Bloch [Wed, 8 Feb 2023 14:00:31 +0000 (15:00 +0100)]
dlog_logger: readers keep their owning server
Will allow readers to unregister themselves from server structures
when they are cleaned up, which allows to prevent mistakes via RAII
and makes it possible to commonize more reader handling functions.
Change-Id: I1e2e5645b3106465a877ebf2b7385e83364dfb61
Michal Bloch [Wed, 8 Feb 2023 12:54:09 +0000 (13:54 +0100)]
dlog_logger: cleanup config line handling
* remove needless setting to NULL (already NULL and would leak otherwise).
* remove a needless void cast (just makes the code less type safe)
* remove a needless conditional-but-not-really removal wrapper (proper API exists for this)
Change-Id: Iebc4f3cd76c5aa7973f16dca9c33575e0c21445a
Signed-off-by: Michal Bloch <m.bloch@samsung.com>
Michal Bloch [Tue, 7 Feb 2023 15:50:33 +0000 (16:50 +0100)]
ptrs_list: make list_foreach self removal safe
The function applied in list_foreach is now allowed to remove
the element on which it is being applied. This will allow us
to simplify various patterns such as "conditional removal that
always returns true" in the daemon.
Change-Id: Ia6e908a3085ad3aecbc6b5eacdcd077fdedaa8e6
Michal Bloch [Tue, 7 Feb 2023 16:29:44 +0000 (17:29 +0100)]
ptrs_list: simplify remove_at implementation
Consider a table with memory layout like this:
[A]->[B]->[C]->[D]
Now, consider the removal of B. Intuitively it would result in:
[A]------>[C]->[D]
Which is what will happen now. Previously, what happened was:
[A]->[C]------>[D]
meaning B wasn't actually removed; rather, C was removed and
B took on the value of C. This was not only needlessly complex
but also made it difficult to implement "safe" iteration
that lets one remove the value being iterated on, which is
going to be implemented in a subsequent patch.
Change-Id: Icca3066ecd7c6a33b3eaf9655780c1ffc97ba722
Signed-off-by: Michal Bloch <m.bloch@samsung.com>
Michal Bloch [Thu, 2 Feb 2023 15:02:36 +0000 (16:02 +0100)]
dlog_logger: QoS contained by aggregation
The server struct in dlog_logger now contains a pointer
to the QoS module struct (aggregation) instead of being
a member field (composition).
This lets multiple server structs share the same QoS module.
Change-Id: I573318cb74f76374a3cd93ad03d89b7892b7dcb3
Signed-off-by: Michal Bloch <m.bloch@samsung.com>
Michal Bloch [Wed, 1 Feb 2023 18:02:01 +0000 (19:02 +0100)]
dlog_logger: refactor QoS distributions
* now there's a getter that returns the appropriate func,
instead of it being parsed inside config preparation code
* the func is now a member of the QoS module struct instead
of being global (this is related to the plan of wrapping
logger readers in the server struct, since that contains
an object of type QoS module)
Change-Id: Ic08bc091079e280c891f78b1358d68d63b377669
Signed-off-by: Michal Bloch <m.bloch@samsung.com>
Michal Bloch [Tue, 31 Jan 2023 13:10:44 +0000 (14:10 +0100)]
dlog_logger: extract main loop iteration
Needed to intertwine two server structs in a single loop, which will
be introduced in a further patch. The aim is to encapsulate a reader
in its own server struct to maintain identical behaviour when moved
to a separate thread.
Also makes the code cleaner (small building blocks, etc).
Change-Id: Id60f30df617f30b65a6b121eabfd6ebeed4af6db
Signed-off-by: Michal Bloch <m.bloch@samsung.com>
Michal Bloch [Fri, 13 Jan 2023 18:34:04 +0000 (19:34 +0100)]
dlog_logger: reader_logger keeps dev FD directly
This is in preparation for the future change where each reader
operates from its own thread and manages the FD independently.
Change-Id: Ic2e1637ccfb2ca389a0c154cba1478da6559592f
Signed-off-by: Michal Bloch <m.bloch@samsung.com>
Michal Bloch [Fri, 13 Jan 2023 20:08:28 +0000 (21:08 +0100)]
dlog_logger: cull unused logger readers
This will avoid unnecessary resource usage, in particular
needless threads when the transition happens.
Change-Id: Ia2a057b964f1ab0e9cefc582214495d37984ed4c
Michal Bloch [Thu, 22 Dec 2022 13:32:00 +0000 (14:32 +0100)]
dlogctl: adjust the buffer enable/disable display
Put each ENABLE/DISABLE in its own line for easy parsing.
Fix tests to use only the lines they were meant to use.
When stdout status was added to the same line, parsing
in tests became able to use either of the two statuses.
Change-Id: I4d05b9dbb9ac3899976f13ff7e3fc1ed756359ee
Signed-off-by: Michal Bloch <m.bloch@samsung.com>
Michal Bloch [Fri, 13 Jan 2023 18:48:27 +0000 (19:48 +0100)]
dlog_logger: remove reader logger sink FD entity
Reader logger uses internal sub-readers as sinks,
so it does not need a sink FD entity to manage it.
Change-Id: I87248d83b26384e8f37b3999132526b4cd25be4d
Michal Bloch [Fri, 13 Jan 2023 18:31:45 +0000 (19:31 +0100)]
dlog_logger: code documentation
Prevent tears in the rain.
Change-Id: Ia6d5160064c2a5e08d99b3026f32da4d3b8fe556
Michal Bloch [Thu, 5 Jan 2023 18:50:03 +0000 (19:50 +0100)]
tests: extract header to a separate file
Can be included by specific, focused tests in the future,
allowing to reduce the time it takes to test individual
features (since a lot of time is wasted waiting for other
irrelevant tests to run).
Change-Id: Id5046219726a7cdeb2177ea10ac36d46fa717923
Michal Bloch [Wed, 4 Jan 2023 15:33:20 +0000 (16:33 +0100)]
libdlog: extract dynamic config inotify check
Opens up the possibility for another implementation.
Change-Id: I0ed92ef14a8e24d5389ade4e76e26f3d58d71b75
Signed-off-by: Michal Bloch <m.bloch@samsung.com>
Marek Szulc [Tue, 10 Jan 2023 16:08:57 +0000 (17:08 +0100)]
Fix gcno file path
Change-Id: Iab6285dbdd7a6b86390161e9a2b69388b36130fd
Signed-off-by: Marek Szulc <m.szulc3@samsung.com>
Marek Szulc [Wed, 30 Nov 2022 15:15:55 +0000 (16:15 +0100)]
Add integration test for log limiter
Change-Id: I951ececa259bed4a7aa5b2806dcdcc5e3aa40e89
Michal Bloch [Mon, 19 Dec 2022 18:43:27 +0000 (19:43 +0100)]
Release 7.5.2
Fix lazy polling and add a null backend.
Change-Id: I1b856b536857c6d882576e7fab82aafeb17ddfae
Signed-off-by: Michal Bloch <m.bloch@samsung.com>
Michal Bloch [Fri, 9 Dec 2022 15:29:01 +0000 (16:29 +0100)]
dlog_logger: refactoring
Now there's a function that just handles system IO,
and another function that just parses data. This is
to make adapting the IO part to multi-threading easier.
Change-Id: Ia185928c092de94e617ec76a937e312d90cf7b3e
Signed-off-by: Michal Bloch <m.bloch@samsung.com>
Michal Bloch [Thu, 8 Dec 2022 15:43:42 +0000 (16:43 +0100)]
dlog_logger: extract a static var to a struct
Change-Id: Ib9b254d2a679833659c558572cc6516030a6548c
Signed-off-by: Michal Bloch <m.bloch@samsung.com>
Michal Bloch [Tue, 6 Dec 2022 13:47:52 +0000 (14:47 +0100)]
dlog_logger: abstract (sub-)reader operations
In preparation for future work.
Change-Id: I6e38452f41b030a4677a0d45a069350308160701
Michal Bloch [Mon, 12 Dec 2022 17:54:44 +0000 (18:54 +0100)]
miniz: get rid of unused code
Slightly improves compile time and makes maintenance easier.
Change-Id: I5fa293286f81d5ff309f37a6cd1a4c5538383bde
Signed-off-by: Michal Bloch <m.bloch@samsung.com>
Michal Bloch [Tue, 13 Dec 2022 16:28:02 +0000 (17:28 +0100)]
libdlog: implement a null backend
Set via 'backend=null' config entry, drops logs.
Note that backend-independent features (like limiter)
need to be disabled separately; a conf file is provided.
Change-Id: Id0afe298960ae8a57d72b0eba3b4cdb33811e7f0
Signed-off-by: Michal Bloch <m.bloch@samsung.com>
Michal Bloch [Mon, 19 Dec 2022 17:06:32 +0000 (18:06 +0100)]
dlog_logger: lazy poll only for Logger backend
The delay makes sense for Android Logger because it only reads logs
from an "external" (from the daemon's PoV) storage so they aren't
going anywhere, and it's good not to waste resources trying to read
them at boot time.
Meanwhile for the Pipe backend it is important for the daemon to
actively listen to clients who might be trying to write logs, since
in that case the daemon is the storage (so logs need to be written
immediately, for example for crash report reasons) and also the
implementation requires it (since pipes otherwise get clogged).
Change-Id: I215438459c334698b4f3c195f6fce69ab7454f9c
Signed-off-by: Michal Bloch <m.bloch@samsung.com>
Michal Bloch [Tue, 6 Dec 2022 13:46:28 +0000 (14:46 +0100)]
dlog_logger: remove duplicate code
Change-Id: I218b74301576afdd18cb61dcf0be4a05b85c9208
Michal Bloch [Fri, 2 Dec 2022 14:47:44 +0000 (15:47 +0100)]
Release 7.5.1
ID caching + compression framework
Change-Id: Ide7ba9e5b9129fe7d3770d9b56fdb3802cc86030
Michal Bloch [Wed, 23 Nov 2022 15:15:22 +0000 (16:15 +0100)]
libdlog: thread-local cache for pid/tid
Expand the thread-local pid/tid caching from the zero-copy backend
to all of them. This avoids a syscall or two per log, saving a lot
of performance.
Change-Id: I964b4bb79e400833c47adf5e0fc527f2aaa5e9c4
Signed-off-by: Michal Bloch <m.bloch@samsung.com>
Michal Bloch [Tue, 22 Nov 2022 16:57:38 +0000 (17:57 +0100)]
Distribute compression benchmark onto target
Change-Id: If1b5f239e237901d89e2d2e914a2edb9b5d31660
Signed-off-by: Michal Bloch <m.bloch@samsung.com>
Michal Bloch [Tue, 22 Nov 2022 11:54:43 +0000 (12:54 +0100)]
Add miniz to the daemon framework
Change-Id: If4b899546504659e320719ecb28286453b658e81
Michal Bloch [Tue, 22 Nov 2022 11:53:46 +0000 (12:53 +0100)]
Add a compression framework to the daemon
Currently only adds fastlz. Miniz to be added later.
Change-Id: I8703d45a2a5253a5823968fb81b5a9074a747a1c
Signed-off-by: Michal Bloch <m.bloch@samsung.com>
Michal Bloch [Fri, 4 Nov 2022 19:21:17 +0000 (20:21 +0100)]
Compression buffer size spec: bytes -> kilobytes
As in, `dlog_logger_conf_foo=dlogutil -r 123 -b main -m bar` now
creates a buffer for 123 KB whereas previously it was 123 bytes.
Fixes an inconsistency where for files (-f) this already meant
kilobytes, and makes the default sensible (1 KB -> 1 MB).
Change-Id: I1553c29051b674a91613921a5d4eec4f0dd09d4b
Signed-off-by: Michal Bloch <m.bloch@samsung.com>
Karol Lewandowski [Fri, 28 Oct 2022 12:58:11 +0000 (14:58 +0200)]
Release 7.5.0
Support the rewritten zero-copy backend
Change-Id: I8be6f987dd1d7c7d81b3648bdf94ecc32db22e9f
Marek Szulc [Thu, 8 Sep 2022 14:18:55 +0000 (16:18 +0200)]
Add tests for the miniz compression library
Change-Id: Ic6c9a3ee7c9e97ee492eeed9f71aa738c81db21a
Signed-off-by: Marek Szulc <m.szulc3@samsung.com>
Marek Szulc [Thu, 13 Oct 2022 16:55:21 +0000 (18:55 +0200)]
Add miniz compression library
From https://github.com/richgel999/miniz
Change-Id: I139388170a7440afe588eaaa85246af1ebc088d2
Marek Szulc [Mon, 26 Sep 2022 11:31:56 +0000 (13:31 +0200)]
Add benchmark framework for testing compression algos
Most tests originally come from test_fastlz_pos.c
Change-Id: Ie8fec39be15959ae0565701627f12d8093c29f22
Signed-off-by: Marek Szulc <m.szulc3@samsung.com>
Michal Bloch [Tue, 11 Oct 2022 11:32:30 +0000 (13:32 +0200)]
Add a timespec handling helper
Change-Id: I24657e243fc51ef2e284fd192bce1b205294adb0
Signed-off-by: Michal Bloch <m.bloch@samsung.com>
Mateusz Majewski [Wed, 7 Sep 2022 12:57:16 +0000 (14:57 +0200)]
Enable tests for zero-copy backend
Change-Id: I963d42019ae4f1106cc9dc24f288b59539ee3103
Mateusz Majewski [Mon, 24 Oct 2022 08:50:13 +0000 (10:50 +0200)]
Store ze->len in a variable
This is needed since ze is a pointer to shared memory and can change at
any time. Therefore, when load_single_device tries to do bound checks
for ze->len, they become invalid immediately, since the ze->len variable
contents can change right after the check.
Change-Id: Iaa169af3180000cd8a797e1753d569f7cb3ddbbf
Mateusz Majewski [Fri, 21 Oct 2022 13:08:12 +0000 (15:08 +0200)]
Ensure the timestamp always increases in zero-copy libdlog
The kernel guarantees that it won't decrease, but if function is
executed in quick repetition it might happen that we get the same value
twice in a row. This is unacceptable, since the timestamp is the only
thing we rely on in order to sort the messages.
This mirrors a similar change in the kernel module, see 282866. In the
kernel the issue has been more visible since the kernel might split the
messages in a quite arbitrary way. In userspace the issue has been
harder to notice, but with Marek's changes increasing the performance it
has become more urgent.
Change-Id: I993529a2f8e7f8e477733c929232b10fb981eaba
Marek Szyprowski [Wed, 14 Sep 2022 08:16:43 +0000 (10:16 +0200)]
zlogger: use dynamic mappings for each client
Change-Id: I7cdf81ab79445d9121728dbecd140af8042fbc84
Signed-off-by: Marek Szyprowski <m.szyprowski@samsung.com>
Marek Szyprowski [Wed, 19 Oct 2022 15:48:35 +0000 (17:48 +0200)]
zlogger: use cache for gettid() to reduce logging hot path overhead
Use thread local variable to cache gettid() calls and clear it with
pthread_atfork() hook. This reduces the logging hot path overhead by
avoiding any kernel calls.
On RPi4 this reduced a test message logging time (averaged) from 2.2us
to 0.8us.
Signed-off-by: Marek Szyprowski <m.szyprowski@samsung.com>
Change-Id: I8ed74a4442d76183f2403861ac3c428fd9b5b051
Marek Szyprowski [Mon, 17 Oct 2022 10:08:19 +0000 (12:08 +0200)]
zlogger: don't call get_time() twice
Signed-off-by: Marek Szyprowski <m.szyprowski@samsung.com>
Change-Id: I1e57a2dae628b0fc4aa2d2a954bfc6ad269ba09f
Mateusz Majewski [Tue, 11 Oct 2022 13:16:50 +0000 (15:16 +0200)]
Fix dlogutil -t in zero-copy backend
The removed code block looks sensible. However, this is actually done
somewhere else (compare the Android Logger backend, which works in a
similar way and doesn't really handle the dump value).
Change-Id: I68161e26bda09833f2a1c20870fa8f4f72c9acaa
Mateusz Majewski [Tue, 11 Oct 2022 10:21:22 +0000 (12:21 +0200)]
Fix redirection check for zero-copy logger
Change-Id: Ieaf450b09b0058551148841153838d8a5aa291f8
Michal Bloch [Mon, 10 Oct 2022 10:39:42 +0000 (12:39 +0200)]
Hotfix release 7.0.11
Fix zero-copy sorting
Change-Id: Ia2afa31554cba7fdbefe0cb4c710bd70ca381408
Mateusz Majewski [Fri, 7 Oct 2022 13:20:01 +0000 (15:20 +0200)]
Fix zero copy sorting
Otherwise, the multiplication overflows since sec_sent_mono is 32 bit
and NSEC_PER_SEC is kinda big.
Change-Id: I1b4ce376bad39792929142feb7c3a05308188112
Marek Szulc [Thu, 8 Sep 2022 14:13:50 +0000 (16:13 +0200)]
Add timer and string test to test_fastlz_pos/neg.c
Change-Id: Idd8d64ceb08430ab7fef52a854a0b15ce4fe29b3
Signed-off-by: Marek Szulc <m.szulc3@samsung.com>
Michal Bloch [Wed, 21 Sep 2022 20:27:48 +0000 (22:27 +0200)]
Release 7.0.10
Adds the clear option to the zero-copy backend
and the default dlogutil format config option.
Change-Id: I31bb1ab6439e1aecea79fd21c5a7212d169d33d3
Mateusz Majewski [Mon, 19 Sep 2022 09:42:09 +0000 (11:42 +0200)]
Add util_default_format configuration option
Change-Id: I6b3368007ca6546b5e6cf7cc340d27651354317d
Mateusz Majewski [Wed, 7 Sep 2022 12:32:20 +0000 (14:32 +0200)]
Add clear operation to zero copy libdlogutil
Change-Id: If22bd2e78ec0ffe41f79d886c579e7615cddbba2
Karol Lewandowski [Tue, 20 Sep 2022 10:33:51 +0000 (12:33 +0200)]
Add package to explicitly enable zero-copy dlog backend
Change-Id: If977fd867e7459523bb384877cee6ff117146471
Mateusz Majewski [Tue, 20 Sep 2022 12:39:40 +0000 (14:39 +0200)]
Actually store the block number in the thread-local
Change-Id: Ia5788deca19364199f397b51a9914aa63955ee9b
Karol Lewandowski [Mon, 19 Sep 2022 12:24:49 +0000 (14:24 +0200)]
Release 7.0.8
Change-Id: I2d75370c199830ee492d9baa4b7c98fccd6f1eef
Karol Lewandowski [Mon, 19 Sep 2022 11:46:00 +0000 (13:46 +0200)]
Do not allow overriding DLOG_CONFIG_PATH for setuid programs
Unprivileged process could try to redirect logs to unused backend
potentially hiding malicious attemps to break into the program.
Change-Id: I4161467c2ff9014c048a1c9d6220a792d468187e
Marek Szyprowski [Thu, 15 Sep 2022 11:31:36 +0000 (13:31 +0200)]
zlogger: correct calculation of buffer map/offset
Fix calculation of buffer map & offset for the non-2KB buffer case.
Signed-off-by: Marek Szyprowski <m.szyprowski@samsung.com>
Change-Id: I753f34b105439af4b7c5db13b5c08a7918aa4d02
Michal Bloch [Thu, 15 Sep 2022 11:40:39 +0000 (13:40 +0200)]
Release 7.0.7
Integrate zlogutil into (lib)dlogutil
Change-Id: Ia3146a435b56575229958889a3842934fa37129b
Michal Bloch [Fri, 26 Aug 2022 15:54:18 +0000 (17:54 +0200)]
Integrate zlogutil into libdlogutil
Change-Id: I910ba8eda65721afc1a687b4d76b927587cde09b
Signed-off-by: Michal Bloch <m.bloch@samsung.com>
Karol Lewandowski [Tue, 6 Sep 2022 13:39:32 +0000 (15:39 +0200)]
Release 7.0.6
Change-Id: Ia0fba0db16c7bbf743bba15df0b1f5880faf6475
Mateusz Majewski [Fri, 2 Sep 2022 11:44:58 +0000 (13:44 +0200)]
Make log-redirect-stdout refuse to redirect logs if they are disabled
This is sometimes needed for integration tests to work.
Change-Id: I5c829b45442276982d053111142bb87e998d4712
Mateusz Majewski [Fri, 2 Sep 2022 10:15:00 +0000 (12:15 +0200)]
Bring dlog-logger.conf.alias closer to dlog-logger.conf.test
Otherwise, the aliasing test will fail if a logger daemon is not running
outside of the tests.
Change-Id: Ic62909639ad0ea5fca3a8e0690f70bf194b3fa38
Mateusz Majewski [Fri, 2 Sep 2022 09:12:00 +0000 (11:12 +0200)]
Hack in a graceful shutdown of the daemon in the zero-copy backend
Change-Id: Ia01d41469b14895c0de5435a30bb290610ba9c47
Karol Lewandowski [Mon, 5 Sep 2022 10:31:40 +0000 (12:31 +0200)]
Ensure proper access rights for zlogger device
Change-Id: Ie3e9e4ee492df5a7a051ad4754f7a80290db17c3
Mateusz Majewski [Thu, 1 Sep 2022 06:34:57 +0000 (08:34 +0200)]
Add zero-copy backend support to log-redirect-stdout
Change-Id: I7e54084e89a1f0dfe0b94fc497d71e50492cb3e9
Michal Bloch [Tue, 19 Jul 2022 17:20:33 +0000 (19:20 +0200)]
Add Zlogutil for reading zero-copy backend logs
Change-Id: Iffaa7bbfcf8329e1e7888efd88cd13a7ba15f493
Signed-off-by: Michal Bloch <m.bloch@samsung.com>
Michal Bloch [Thu, 23 Jun 2022 14:51:54 +0000 (16:51 +0200)]
Add a zero-copy backend
This is the initial implementation of a zero-copy backend,
also known as 'zlog' in various places.
Many facilities (logutil, stdout redirection etc) are to be
implemented in further commits, only writing is supported
so far.
It aims to minimize the cost of writing logs above all else.
When it comes to perf, it's pushin' it to the max, rollin' deep, baby.
Some traits:
+ limited syscalls (one per N logs)
+ no needless copies (writes directly to destination)
- no way to monitor logs efficiently (which also has
consequences for features like QoS)
- kernel-based and somewhat convoluted
Change-Id: I183ca7ee29aaeb6d24b2c5da96fc353f2c298d3e
Signed-off-by: Michal Bloch <m.bloch@samsung.com>
Michal Bloch [Mon, 22 Aug 2022 10:56:14 +0000 (12:56 +0200)]
Reuse -m for memory compression mode
Previously known as --compress.
Monitor mode is now done via --monitor.
Change-Id: If88daa7da4e9a222c8c674beb4f79c03c5a3bff0
Signed-off-by: Michal Bloch <m.bloch@samsung.com>
Michal Bloch [Mon, 8 Aug 2022 11:37:34 +0000 (13:37 +0200)]
Reduce max logger request length
Change-Id: I243e1c7ca10e5c2a5f0e383e9b01c3731fe64bf5
Signed-off-by: Michal Bloch <m.bloch@samsung.com>
Michal Bloch [Wed, 27 Jul 2022 17:28:30 +0000 (19:28 +0200)]
Release 7.0.5
Container warning logs pid/tid; minor optimisations
Change-Id: I158010e1209f08c9d96b482cb4c093604b86948d
Signed-off-by: Michal Bloch <m.bloch@samsung.com>
Michal Bloch [Wed, 29 Jun 2022 18:33:49 +0000 (20:33 +0200)]
Less harsh thread cancellation prevention
No longer disables cancels when lockless to save 2 syscalls.
Change-Id: Id5408a0558d7c359ac5b86bb8a9d9d1a228fdead
Signed-off-by: Michal Bloch <m.bloch@samsung.com>
Michal Bloch [Tue, 2 Aug 2022 11:33:47 +0000 (13:33 +0200)]
Fix insufficient test dir rights
Change-Id: Ie2799cce6d9fd0d3a2b269f20978edaff8dcbae0
Signed-off-by: Michal Bloch <m.bloch@samsung.com>
Michal Bloch [Tue, 26 Jul 2022 13:51:17 +0000 (15:51 +0200)]
lib: avoid a needless rw-lock if possible
Change-Id: Ic65ed823f3453cf270d7a373e384b9553f44ca0c
Signed-off-by: Michal Bloch <m.bloch@samsung.com>
Michal Bloch [Tue, 26 Jul 2022 15:19:45 +0000 (17:19 +0200)]
limiter: minor cleanup
- less pyramid
- more commentary
- fix programs sending 2^31 logs becoming able to log again
Change-Id: I3e51ba70d1f8f525a2324d991957d8f6634f6dfa
Signed-off-by: Michal Bloch <m.bloch@samsung.com>
Michal Bloch [Tue, 26 Jul 2022 12:38:19 +0000 (14:38 +0200)]
libdlog: container warning contains PID/TID
Change-Id: I646a2dca987fabd73213c903caf161bf03adfadf
Signed-off-by: Michal Bloch <m.bloch@samsung.com>
Michal Bloch [Fri, 22 Jul 2022 21:09:32 +0000 (23:09 +0200)]
Make headers a bit more C++ friendly
logcommon.h:
* put a listing of buffers in order (surprisingly, RADIO precedes SYSTEM)
* cast between differently-signed values explicitly
logprint.h:
* include dlog.h directly instead of going through logcommon.h
Change-Id: Id56a09e6ca6894443880bdf557accc9a4fb3ec27
Signed-off-by: Michal Bloch <m.bloch@samsung.com>
Michal Bloch [Wed, 29 Jun 2022 18:13:56 +0000 (20:13 +0200)]
libdlog: reduce the "critical" section a bit
Change-Id: I3a1142d354605df89a3f7f1c9519230988edbf6c
Signed-off-by: Michal Bloch <m.bloch@samsung.com>
Michal Bloch [Wed, 29 Jun 2022 16:11:36 +0000 (18:11 +0200)]
libdlog: more careful handling of null function ptrs
Change-Id: I1e621a3ee594fcabb55ac3b0c19846086780a1ce
Signed-off-by: Michal Bloch <m.bloch@samsung.com>
Hyotaek Shim [Wed, 8 Jun 2022 11:55:43 +0000 (20:55 +0900)]
Create units (.service and .socket) directory in the repository
Change-Id: Ide0e27067e804b77c7dc6edd58aab6df884c0079
Signed-off-by: Hyotaek Shim <hyotaek.shim@samsung.com>
Hyotaek Shim [Wed, 8 Jun 2022 08:46:19 +0000 (17:46 +0900)]
Adjust dlog backup size and # of backup files
Change-Id: I00aafc6f48191ad21bf4cf59259503f38289a511
Signed-off-by: Hyotaek Shim <hyotaek.shim@samsung.com>
Mateusz Majewski [Mon, 25 Apr 2022 05:43:17 +0000 (07:43 +0200)]
Add a note on tests to overview.rst
Change-Id: I0fd44548b48cd85a9ae21b20cd2bc8b30543f47e
Michal Bloch [Mon, 9 May 2022 12:59:46 +0000 (14:59 +0200)]
Release 7.0.4
Adds compressed in-memory log backup.
Change-Id: Ief49ba90ab6f7b92aa6b4a8fa360aa7984894deb
Signed-off-by: Michal Bloch <m.bloch@samsung.com>
Mateusz Majewski [Thu, 28 Apr 2022 11:14:56 +0000 (13:14 +0200)]
Improve dlogutil compression handling / parsing
Change-Id: I3dd8cec078fefed64dc94e7c5d5fb619fcd2b1f3
Michal Bloch [Tue, 26 Apr 2022 14:56:22 +0000 (16:56 +0200)]
In-memory compressed log backup
Change-Id: I87a94908152fab5808a1a6cd4791a171ad225aea
Michal Bloch [Thu, 28 Apr 2022 11:23:33 +0000 (13:23 +0200)]
logutil: terminate error logs properly
Change-Id: Ia496b3426e351f0e6d11517431d1200e6a41bb9b
Signed-off-by: Michal Bloch <m.bloch@samsung.com>
Michal Bloch [Sun, 24 Apr 2022 20:22:48 +0000 (22:22 +0200)]
Add a compressed storage struct + tests
Change-Id: I56cc99f0ac101b810612d1f1e7f95d5da4f6ec6c
Michal Bloch [Tue, 26 Apr 2022 23:38:42 +0000 (01:38 +0200)]
ptrs_list: add find_if (similar to C++ STL)
Change-Id: Ia2851581d9304fca7ee15e96d1ee680ef586dc5b
Signed-off-by: Michal Bloch <m.bloch@samsung.com>
Michal Bloch [Tue, 26 Apr 2022 22:59:54 +0000 (00:59 +0200)]
Reader pipe: remove an unused timestamp
Change-Id: Ice14689d33279cacb40f2fdee0928ad3db63edf6
Signed-off-by: Michal Bloch <m.bloch@samsung.com>
Michal Bloch [Tue, 26 Apr 2022 22:38:22 +0000 (00:38 +0200)]
Improve pipe reader related function names
Memory reader is going to be very similar, avoids confusion.
Change-Id: I3c0d5721815e2052b2b1b1e8740c1ce7e181b99e
Signed-off-by: Michal Bloch <m.bloch@samsung.com>
Michal Bloch [Wed, 13 Apr 2022 16:30:00 +0000 (18:30 +0200)]
Extract pipe reader functionality into subs
Change-Id: I83d194543b400750c664b47ae6af8ccfac3920e7
Signed-off-by: Michal Bloch <m.bloch@samsung.com>
Michal Bloch [Tue, 12 Apr 2022 18:07:20 +0000 (20:07 +0200)]
Subreaders: methods now return an error code
Change-Id: I1a474986796a82f721ddcd6550cce88453c2ee45
Signed-off-by: Michal Bloch <m.bloch@samsung.com>
Michal Bloch [Tue, 12 Apr 2022 17:15:04 +0000 (19:15 +0200)]
ptrs_list: add list_foreach_ret
A variant of list_foreach which can return an error code.
Change-Id: Ib3cfcb55114b15674ca342c70b5a8a90d2819633
Signed-off-by: Michal Bloch <m.bloch@samsung.com>
Michal Bloch [Tue, 12 Apr 2022 14:21:52 +0000 (16:21 +0200)]
reader_pipe now uses subreader_file
Change-Id: I5578820db453ae899b7005761bee0539a1ecb8ba
Signed-off-by: Michal Bloch <m.bloch@samsung.com>
Michal Bloch [Tue, 19 Apr 2022 08:03:06 +0000 (10:03 +0200)]
Add some basic tests for FastLZ.
Change-Id: I245de78a9b5b5d3fec80979351cc493700b4dbd3
Michal Bloch [Thu, 21 Apr 2022 09:32:44 +0000 (11:32 +0200)]
DLog-specific tweaks to FastLZ
* add a way to calculate the minimum compression output buffer size
as required by the interface. This should've probably been baseline.
* remove the unsafety compiler parameter because I don't want anybody
to actually tweak it. Removing this safety check is still possible,
but now somebody has to get his hands dirty and be aware of what
the exact consequences are, as opposed to just tweaking what is
essentially an opaque knob.
* add a comment detailing whence the code was taken.
Change-Id: I1229a9364523b3a5526c9933ccfd09d9292f34a9
Signed-off-by: Michal Bloch <m.bloch@samsung.com>
Michal Bloch [Thu, 21 Apr 2022 09:30:40 +0000 (11:30 +0200)]
Import FastLZ compression sources
A compression algo to be used in the daemon, for in-memory compressed logs.
MIT licensed.
From https://github.com/ariya/FastLZ @
c3bdfad9e0094d0fb15c12cd300e647c13dc85f9
Change-Id: I245de78a9b5b5d3fce80979351cc493700b4dbd3
Michal Bloch [Thu, 21 Apr 2022 15:49:49 +0000 (17:49 +0200)]
libdlog: mark logs from processes in a container
Change-Id: Id10045be42a875ab88f1defb39da41687c8a9a64
Michal Bloch [Tue, 5 Apr 2022 12:14:09 +0000 (14:14 +0200)]
Release 7.0.3
Mostly a safe checkpoint before a larger change.
Change-Id: I529c080514a373c53ff95dacc8fbf95c7517f49b
Signed-off-by: Michal Bloch <m.bloch@samsung.com>
Michal Bloch [Wed, 23 Mar 2022 18:23:52 +0000 (19:23 +0100)]
File reader: add sorting info
Pipe based readers have this buffer-dependent.
Change-Id: Idcc25fa572748aff0215fe01ac287860634d5023
Signed-off-by: Michal Bloch <m.bloch@samsung.com>
Michal Bloch [Fri, 18 Mar 2022 16:33:32 +0000 (17:33 +0100)]
Simplify some unreachable code
The case where `file.path` is not NULL was already handled.
Further commits are going to shuffle this chunk of code around
so it's good to trim it beforehand.
Change-Id: I8ac3e75a6f72a333bcb15450151a392faf08fc38
Signed-off-by: Michal Bloch <m.bloch@samsung.com>
Michal Bloch [Fri, 18 Mar 2022 16:28:01 +0000 (17:28 +0100)]
readers: reduce some copy-paste
Change-Id: Idde6b37cf58f89345fd1808cf8f72b5cfc491e08
Signed-off-by: Michal Bloch <m.bloch@samsung.com>
Michal Bloch [Fri, 18 Mar 2022 16:25:45 +0000 (17:25 +0100)]
readers: make free a member func
Regrettably, some tests had to be deleted because
adding a level of indirection breaks func wrapping.
Change-Id: I24ddd9af32fea7df5f5037a9d4c22b6fd1ff912e
Signed-off-by: Michal Bloch <m.bloch@samsung.com>