Commit Graph

23 Commits

Author SHA1 Message Date
a9f615cff0 libsysprof-analyze: add scaffolding for mountinfo parsing
I want to do this differently than we did in libsysprof, which is going
to require a bit of thinking on how we should represent something like
a SysprofMount within the mount namespace.
2023-05-09 17:51:38 -07:00
6290a1736d libsysprof-analyze: parse core mount namespace devices
We want to track the core mount namespace, for which the namespace we
use for processes will derive (to be done).
2023-05-09 17:20:00 -07:00
f220484746 libsysprof-analyze: index memory maps by pid
We will want to use this when loading processes along with the system
mounts so that we can locate files by buildid/inode/etc.
2023-05-09 16:57:10 -07:00
1003372324 libsysprof-analyze: add listmodel of processes
This is handy to be able to show a list of processes that were contained
within a particular capture file.
2023-05-09 15:57:29 -07:00
e0e1791b2d libsysprof-analyze: make lookup_file synchronous
Now that we have a lot of this indexed, it's fast enough to do on the
calling thread.

# Conflicts:
#	src/libsysprof-analyze/sysprof-document.c
#	src/libsysprof-analyze/sysprof-document.h
2023-05-09 12:36:59 -07:00
938a1bbb4a libsysprof-analyze: add listmodel of embedded files
This also indexes the first position of a file by filename so that we can
skip items in the capture file. Generally, embedded files are a single
frame so that will only be one frame to look at. But even when it is a
few frames, they are generally sequential so this vastly reduces how many
frames we'll need to look at for files.
2023-05-09 12:34:03 -07:00
c18b401ab6 libsysprof-analyze: add listmodel of traceables
It can be handy to iterate through the traceables and we already have a
bitset index for that. Use the new bitset index listmodel to provide that
filtered list externally without having to inflate every object in the
underlying listmodel, as GtkFilterListModel would have to do.
2023-05-08 12:24:26 -07:00
f5a97fa945 libsysprof-analyze: ignore zero length data 2023-05-05 16:35:53 -07:00
634a32bdfa libsysprof-analyze: allow zero length embedded files 2023-05-05 16:35:10 -07:00
83a61dd9ef libsysprof-analyze: simplify sysprof_document_lookup_file_async()
Instead of walking the listmodel for every object which might be a file
chunk, and treating it as possibly non-native-endianness, this uses the
new index of file chunks and accesses their frame as an object. That
object will do endianness conversions for us.

The extra overhead of creating the GObject is lessened by avoiding looking
at many of the frames in the model.
2023-05-05 13:38:57 -07:00
e763cc14bb libsysprof-analyze: index locations of file chunks
Create a roaring bitmap of list model positions that contain file chunks.
We can use this in the future to avoid iterating the whole listmodel for
matching file chunks to just the index positions containing file chunks.
2023-05-05 13:37:03 -07:00
1c75c4c548 libsysprof-analyze: rename samples to traceables
This includes all current traceables, not just samples, so make the name
a bit more clear which it is.
2023-05-05 13:03:03 -07:00
10c332d5d2 libsysprof-analyze: index traceables for faster access
This allows us to skip past all the nodes we don't care about with
relatively low overhead once the document has been generated.
2023-05-03 17:44:15 -07:00
b72eda6be2 libsysprof-analyze: prepare symbolizers before decoding 2023-05-03 17:22:37 -07:00
95325cc26f libsysprof-analyze: add API to load embedded file as gbytes 2023-05-03 17:07:47 -07:00
c0ade7da01 libsysprof-analyze: add helper for native byte order 2023-05-03 17:07:19 -07:00
426aaad781 libsysprof-analyze: add plumbing for symbolization
This gets the worker thread going and the state passed to eventually do
symbolization through the new symbolizer API.
2023-05-03 14:59:46 -07:00
4505e8bb85 libsysprof-analyze: use ref strings internally
This gives us a bit more control than the string chunk, so long as we can
rely on the allocator to do something nice.
2023-05-02 13:30:09 -07:00
ffb6533e02 libsysprof-analyze: add API for intern'ing strings in document
We will want to re-use strings as much as we can for resolving symbols,
tags, etc.
2023-05-01 11:39:55 -07:00
97c93ea965 libsysprof-analyze: track frame length
That way we don't have to decode this too in the subclasses.
2023-04-25 17:09:04 -07:00
a5dafa5409 libsysprof-analyze: rename some private API
prefix with _, use frame type directly, use needs_swap rather than
is_native so it's more clear to readers.
2023-04-25 16:11:59 -07:00
31003c519c libsysprof-analyze: rename to SysprofDocumentFrame
We will eventually be adding sub-types for the various frame types, and
use this as a common ancestor for item inflation.
2023-04-25 15:32:55 -07:00
ed01673a5e libsysprof-analyzer: rename model to SysprofDocument
This will provide better namespacing for the objects inflated from the
document for various frame types. By creating real objects with real
properties we give ourselves quite a bit of flexibility in the data
filtering language coming forth.
2023-04-25 15:26:06 -07:00