History log of /fuchsia/zircon/system/ulib/trace-provider/handler_impl.cpp
Revision Date Author Comments
# 2afe1e5f 20-Sep-2018 Doug Evans <dje@google.com>

[trace-provider] Remove additional tracking of engine state

There was a code path during error shutdown where the state
wasn't being updated. The engine keeps track of the state,
there's no need to track it here too.

Tested: runtests
Testcase to exercise bug lives in garnet/bin/trace: two-providers test.

DX-448 #done

Change-Id: I979a89db0bd14fa91f745f8ede67f262ff804a60


# 9a9fb53f 20-Sep-2018 Doug Evans <dje@google.com>

[tracing] Add more logging of errors

Plus add some clarifying comments to provider.h.

Tested: runtests
Plus observe some new error messages while debugging DX-448

Change-Id: Iba682eeab128326cf32e5e9c0f90ba774356b1b4


# 989ee4e8 13-Jun-2018 David Moore <davemoore@google.com>

[syscalls] Change vmar_... calls

- Create zx_vm_option_t type
- Change ZX_VM_FLAG_... to ZX_VM_... and make them new type.
- Change int32_t flags parameters to zx_vm_option_t options
- Make the options parameter be second.

- Modify vmar_..._old functions to keep other repos working.
Once they've all been updated these functions will go away.

ZX-2264
Test:CQ

Change-Id: I1faf4cc4e1e4dabf3d8ef680e398d83a545b0f09


# b974608b 08-Jul-2018 Doug Evans <dje@google.com>

[tracing] Add support for circular and streaming modes

Tested:
/boot/test/sys/trace-test
trace-benchmark
Further testing done on the garnet side.

Change-Id: I8ec21ba0adc57d090bbfe4be6d56fc695aa645d4


# bf3a04dd 07-Jul-2018 Doug Evans <dje@google.com>

[tracing] Add beginnings of trace buffering mode support

This patch just adds the basic infrastructure.
Support for circular and streaming modes comes later.

Tested:
/system/test/sys/trace-test
trace record --buffering-mode=oneshot \
--categories=stress:example,stress:something \
/system/bin/trace-stress --count=5000
trace record --buffering-mode=circular \
--categories=stress:example,stress:something \
/system/bin/trace-stress --count=5000
[trace will be empty, but should run]
trace record --buffering-mode=streaming \
--categories=stress:example,stress:something \
/system/bin/trace-stress --count=5000
[trace will be empty, but should run]

Change-Id: I1fc28668dee652c88df9d5e669c8b4ac978604bc


# 865ee156 07-Jul-2018 Doug Evans <dje@google.com>

[tracing] Use a fifo instead of an eventpair for TraceManager signalling

This is in preparation for bidirectional comms between TraceManager
and TraceProvider to implement double buffering.

Tested: [requires corresponding garnet patches]
trace record --duration=10 --buffer-size=1 \
--categories=stress:example,stress:something \
/system/bin/trace-stress --count=5000 --duration=10
And verify the buffer-overflow warning is seen:
WARNING ... Record got dropped ...
trace record --duration=10 --buffer-size=1 \
--categories=stress:example,stress:something \
/system/bin/trace-stress --count=5000 --duration=2
And verify TraceManager responds to prematurely closed fifo.

Change-Id: I05ae748569f233f1da77f9013453058b4904ef91


# 9545a1ee 06-Jul-2018 Doug Evans <dje@google.com>

[trace] Rename buffer_overflow handler method to notify_buffer_full

This is a better name once buffer streaming support is added.

Tested: /boot/test/sys/trace-test
Change-Id: I93a587001776aa2268cab031d5a7e6e697e8e97d


# c1297687 13-Jul-2018 Wez <wez@chromium.org>

[zx] Migrate libzx off legacy_unowned<T> and update call-sites.

- Migrate APIs like zx::process::self() from returning a
|const zx::legacy_unowned<T>| to returning |zx::unowned<T>|.
- Update callers of those APIs to use the appropriate dereference
operator to access members of T, or to get a |const T&| to pass to
libzx-wrapped syscalls.
- Remove the zx::legacy_unowned<T> template.

Bug: ZX-2310
TEST=CQ
Change-Id: Idd4267cd0246ec9ab0e6f1392efe7fda45ff169d


# fabb8fe6 04-Jul-2018 David Moore <davemoore@google.com>

[async] Change async_t -> async_dispatcher_t

Change name of dispatcher type from async_t to async_dispatcher_t
Keep typedef of async_t for compatibility

Change async_{get,set}_default() to async_{get,set}_default_dispatcher()
Again, keep compatible apis until other layers have been modified to use
new api.

Bug:ZX-2337
Test:CQ
Change-Id: If0b5d061fd114d60e23078dbb5f2a6ed9ed6f6cc


# e0d70dec 16-Mar-2018 James Robinson <jamesr@google.com>

[zx] Move public zx headers to match naming convention

The zx library provides headers intended for general use, so the
include path should be spelled <lib/zx/foo.h> as per
https://fuchsia.googlesource.com/docs/+/master/development/languages/c-cpp/naming.md.
This moves the headers into the proper location and updates includes to
match.

Change-Id: I6fc9b2a491b5f8b0d270c4dfc77fa4be5739071b


# 5be48b11 01-Nov-2017 Doug Evans <dje@google.com>

[system][trace] Add ProviderEvent metadata

and propagate "buffer overflow" detection from the engine
to the tracing user.

Change-Id: Ia9f8b6f9199e672746237cf014f7e30adc1c9e30


# f21bd727 10-Oct-2017 Doug Evans <dje@google.com>

[ulib][trace-engine] Use signals to indicate "provider ready"

This changes the provider startup protocol to the following.
1) Send Start() fidl request to each provider,
2) Wait for TRACE_PROVIDER_SIGNAL_STARTED or ZX_ERR_PEER_CLOSED
on the fence event pair.

TO-538 #comment patch

Change-Id: Ice3d7d34c62204bc4d1745247d4b43ccaf0ab97f


# 48a346a8 26-Sep-2017 Erik Gilling <konkers@google.com>

[tracing] Enable all categories if none are specified.

Change-Id: I7c79c0d8c3719414cfe0aa6737f61ba778fb0532
Bug: TO-461


# 417048f0 11-Sep-2017 Doug Evans <dje@google.com>

[ulib][trace-provider] Hack in support for categories

... until we can use fidl-generated code.

MG-1121 #done

Change-Id: I26885fe5856522b6806dc9d33a6f6567eb70eb46


# f3e2126c 12-Sep-2017 Roland McGrath <mcgrathr@google.com>

[zx] Magenta -> Zircon

The Great Renaming is here!

Change-Id: I3229bdeb2a3d0e40fb4db6fec8ca7d971fbffb94


# 59e644b1 07-Sep-2017 George Kulakowski <kulakowski@google.com>

[zircon][mxtl->fbl] Rename mxtl to fbl

Change-Id: Ie21b6498e1bfb0a7fa0315e40b9e5c3ee78646be


# 76e6ccd5 29-Aug-2017 Jeff Brown <jeffbrown@google.com>

[trace] Port Fuchsia tracing system to Magenta.

The Fuchsia tracing system supports instrumentation of userspace
programs to collect trace records.

This implementation consists of...

- libtrace: a static library providing C and C++ instrumentation macros
and functions designed to be linked into client programs
- libtrace-engine: a shared library with a C ABI which manages
global tracing state in the process and provides
functions to write trace records
- libtrace-provider: a static library which implements the TraceProvider
FIDL interface and registers an instrumented
program with the trace manager
- libtrace-reader: a static library which provides a C++ API for reading
binary trace data
- unit tests
- benchmarks
- documentation

This is almost a complete rewrite of the code formerly in //apps/tracing
but it remains compatible with the trace format and preserves most of
the structure of the trace event API.

The main differences are...

- The <trace/event.h> API uses identical syntax for C and C++ with
a few extra goodies for C++ type inference.
- The trace engine is factored out as a shared library with a C ABI
instead of being written as a C++ static library, this makes it more
suitable for instrumentation of libraries and device drivers.
- The API is extensively documented.
- We actually have benchmarks to measure instrumentation overhead.

There are still a few pieces left in //apps/tracing, such as the trace
manager and command-line tools, which will be moved over later.

Change-Id: I2d2986be0e63e5aa21fe56dd03024490b0334214