Commit Graph

895 Commits

Author SHA1 Message Date
f0303f4b68 meson: Fix pkgconfig generation
This fix error when gio is a subproject, when there is pc file
assotiated for objects in libraries_private meson automatically promote
them to requires.

Also remove some values that are already the default.
2020-10-01 10:15:38 -04:00
93a21a25ab format: improve string formatting for smaller timings 2020-09-30 12:29:07 -07:00
b39a43d218 capture: dont leak listed files strings
Fix leak introduced by #50
2020-09-28 15:56:36 -07:00
28bb526603 capture: fix sysprof_capture_reader_list_files()
This needs to stash the string pointers internally so that we can maintain
ABI and still fix the issue at hand.

Fixes #50
2020-09-28 15:53:54 -07:00
254b9f8f69 capture: fix compilation on Clang 11
Fixes #48
2020-09-16 12:41:09 -07:00
2260945e8f Merge branch 'wip/issue49' into 'master'
libsysprof, libsysprof-ui: Generate pkg-config dependencies

Closes #49

See merge request GNOME/sysprof!38
2020-09-16 18:09:27 +00:00
04b6fdfcbe libsysprof, libsysprof-ui: Generate pkg-config dependencies
Otherwise, using libsysprof-ui will usually fail because <dazzle.h>
is not added to the search path.

Resolves: https://gitlab.gnome.org/GNOME/sysprof/-/issues/49
Signed-off-by: Simon McVittie <smcv@debian.org>
2020-09-16 10:48:04 +01:00
68c50ba869 build: Pass libraries to pkgconfig.generate as a positional argument
This allows Meson to associate the pkg-config module with the "main"
library that it represents, in an unambiguous way.

Signed-off-by: Simon McVittie <smcv@debian.org>
2020-09-16 10:47:22 +01:00
088408c085 sysprof-capture-condition: always return even if unreachable
Fix the problem with -Werror=return-type
2020-09-15 20:51:28 +07:00
429223635e compat: add TEMP_FAILURE_RETRY compatiable implementation 2020-09-15 20:30:48 +07:00
50439c9ca9 compat: add fallback implementation for reallocarray(3) 2020-09-15 20:30:48 +07:00
9ce6353ea4 collector: add missing config.h include
This was causing symbols to not be exported when used within libsysprof.
2020-08-21 13:45:50 -07:00
0a529b7670 proc: authorize before starting source 2020-08-21 13:15:38 -07:00
e647a83557 turbostat: fix ref count check 2020-08-21 13:15:38 -07:00
2850858d24 profiler: dont authorize during profiler startup
This should be done by sources, as there are configurations that will not
require polkit communication and that can be frustrating when it happens.
2020-08-21 13:15:38 -07:00
e968518083 perf: authorize polkit as part of source startup 2020-08-21 13:15:34 -07:00
bbe62d83b8 helpers: avoid concurrent requests to authorize
We don't want to spam users with polkit requests, so try to only do one
at a time and ensure that if we suceeded, we skip it until later.
2020-08-21 13:01:39 -07:00
7b74c73205 capture: use plural naming for request_counters() 2020-08-19 15:14:53 -07:00
361b29a459 capture: add sysprof_collector_is_active()
This can be used to check if a collector is actively running.
2020-08-19 15:12:19 -07:00
61be0a0455 capture: add API to request a counter id 2020-08-19 15:09:52 -07:00
b913de8882 capture: add counter define/set collectors 2020-08-19 13:43:30 -07:00
c7e0e11fc2 captur: cleanup headers 2020-08-19 13:43:30 -07:00
691b6ef342 macros: simplify static assert fallback to use __COUNTER__
It is rather annoying that the other sizeof form doesn't work with Clang.
This at least gets things working (assuming you have __COUNTER__ support)
which most things we care about do at this point (including MSVC).
2020-08-14 12:59:29 -07:00
620f1f0ff0 build: fix build warnigns with Clang 2020-08-14 12:57:50 -07:00
5311f9d80a sysprof-dump: include <errno.h> where appropriate 2020-08-08 10:52:16 -04:00
51a5b20de3 libsysprof: include <errno.h> where appropriate 2020-08-08 10:51:26 -04:00
16b7cb0a96 tests: include <errno.h> where appropriate 2020-08-08 10:50:56 -04:00
cae28263ff build: remove 0.54 meson feature
Since this causes us to fail to build with GTK CI
2020-07-28 11:09:52 -07:00
2769ad9aaf build: give access to profiler path from dependency 2020-07-28 10:27:04 -07:00
462e08270e libsysprof-capture: Don’t unset SYSPROF_CONTROL_FD
By design, it needs to be usable from multiple threads so they can each
request a thread-local mapped ring buffer. This becomes particularly
obvious if you want to send `sysprof_collector_mark()`s from two
libraries (say, GLib and libsoup); the first thread/library to call
`sysprof_collector_mark()` will win.

Signed-off-by: Philip Withnall <withnall@endlessm.com>
2020-07-17 19:12:01 +01:00
72d70b8514 sysprof-capture: fix typo 2020-07-07 07:50:58 -07:00
555ec04e32 macros: check for C++ 14 feature macros 2020-07-06 16:09:03 -07:00
1c32c1ece5 libsysprof-capture: Add a missing string.h include
It’s needed for `strdup()` which is now used in a macro in this header.

Signed-off-by: Philip Withnall <withnall@endlessm.com>
2020-07-06 11:27:44 +01:00
eae4eb4ad7 build: Drop redundant _GNU_SOURCE definitions
It’s defined in `meson.build` now. See the previous commit.

Signed-off-by: Philip Withnall <withnall@endlessm.com>
2020-07-06 11:27:28 +01:00
6b1cd7a722 build: add internal variable for profiler xml file 2020-07-04 16:42:10 -07:00
57183ab8e2 macros: add static assert helper
So that we can use this from gnu99 such as from GTK.
2020-07-04 16:11:31 -07:00
50d33452ab macros: add helper to check for gcc version 2020-07-04 16:11:06 -07:00
6fde9c5ce6 libsysprof-capture: Add sysprof_collector_mark_{v,}printf() methods
These are just like `sysprof_collector_mark()`, but do the printf
formatting of the message internally, and only once the collector has
been fetched — so there is no overhead from the printf if sysprof is not
enabled at runtime.

Signed-off-by: Philip Withnall <withnall@endlessm.com>
2020-07-03 22:01:33 +01:00
e8790bc3d6 build: Add more Meson options for disabling parts of the build
This is all aimed at making it so that sysprof can be built as a
subproject within GLib, with only `libsysprof-capture-4.a` being
produced as output.

Signed-off-by: Philip Withnall <withnall@endlessm.com>
2020-07-03 22:01:33 +01:00
d6e8d39292 build: Add subproject support for libsysprof-capture
This will be used to build libsysprof-capture as a subproject within
libglib, with the symbols from libglib being left unresolved until the
static libsysprof-capture is linked into libglib.

When built as a subproject, libsysprof-capture won’t install anything.

Signed-off-by: Philip Withnall <withnall@endlessm.com>
2020-07-03 22:01:33 +01:00
e03b54fca5 build: Only run gdbus-codegen if building components which need it
This is to avoid running `gdbus-codegen` when building sysprof as a
subproject underneath libglib, as by that point in the GLib build
process, `gdbus-codegen` is not yet available.

The interfaces generated by these `gdbus-codegen` invocations are only
needed for `sysprofd` and libsysprof, not for the libraries like
`libsysprof-capture`.

Signed-off-by: Philip Withnall <withnall@endlessm.com>
2020-07-03 22:01:33 +01:00
3c7b76c6ba build: Move Meson dependency() calls to where they’re used
This avoids making the project depend on all its dependencies, some of
which are optional, when being built as a Meson subproject.

Signed-off-by: Philip Withnall <withnall@endlessm.com>
2020-07-03 22:01:33 +01:00
760805c8b9 memory-collector: avoid tracking scratch memory free 2020-07-03 22:00:34 +01:00
03326e82fa memory-collector: drop unused branch 2020-07-03 22:00:34 +01:00
484bc328ee collector: set unlikely for pthread_once() 2020-07-03 22:00:34 +01:00
5d20c3f6cf collector: disable re-entrancy during initialization
When creating a new collector, we need to prevent the following
call to sysprof_malloc0() from re-entering us into the same
position.
2020-07-03 22:00:34 +01:00
a9f136550b build: ensure libsysprof-memory-4.so is placed in libdir
This makes it consistent with other preloads.
2020-07-03 22:00:34 +01:00
97ddf5a0cc libsysprof: port UI to new ABI
Some minor changes were necessary so that we could change the ABI in
libsysprof-capture to be free from GLib (and therefore used by GLib).

This also adds some wrappers for capture API in libsysprof so that we
can continue to use GError from UI code.
2020-07-03 22:00:34 +01:00
608582d3c4 libsysprof-capture: Drop GLib dependency
None of the code uses it any more. This means that `libsysprof-capture.a`
can now be used within `libglib-2.0.so` for collecting main loop
statistics.

Brought to you by Opeth’s Deliverance on repeat.

Signed-off-by: Philip Withnall <withnall@endlessm.com>

Fixes: #40
2020-07-03 22:00:34 +01:00
45c8c95706 libsysprof-capture: Drop GError usage from SysprofCaptureWriter
Use `errno` instead, which is icky, but given that all of the failure
modes are from POSIX I/O functions, it’s at least in keeping with them.

This is a major API break.

Signed-off-by: Philip Withnall <withnall@endlessm.com>

Helps: #40
2020-07-03 22:00:34 +01:00