|
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677 |
- libusdt
- =======
-
- This is "libusdt", a library for creating DTrace USDT providers.
-
- The idea here is to allow the specification of a DTrace provider
- dynamically in code and then create the provider at runtime. This
- allows providers to be specified in dynamic languages, given suitable
- bindings.
-
- The general approach is to create two stub functions for each probe,
- one for the is-enabled check and one for the probe itself. These
- contain the appropriate instruction sequences to appear to DTrace as
- compiled-in tracepoints. A minimal DOF document is built describing
- the provider and indicating these stub functions as the tracepoints,
- then submitted to the kernel, creating the provider. The API then
- exposes the stubs, through which the probes may be fired.
-
- Status
- ------
-
- The implementation here works as shown in test_usdt.c on Mac OS X,
- i386 and x86_64, on Solaris-like systems, i386 and x86_64 and on
- FreeBSD and Oracle Linux, x86_64 only.
-
- Is-enabled probes are supported and exposed in the API.
-
- There is a "test" target which runs a number of tests of the library,
- for which perl is required.
-
- OS X builds are Universal by default, and on Solaris, the ARCH
- variable may be set to either i386 or x86_64 to force a particular
- build.
-
- FreeBSD builds suffer from broken argument handling; this is a known
- issue with the current state of DTrace generally on FreeBSD: only the
- first five arguments work reliably. See:
-
- http://wiki.freebsd.org/DTraceTODO
-
- See Also
- --------
-
- There are various language bindings available:
-
- Lua:
-
- https://github.com/chrisa/lua-usdt
-
- Ruby (by Kevin Chan):
-
- https://github.com/kevinykchan/ruby-usdt
-
- Node.JS:
-
- https://github.com/chrisa/node-dtrace-provider
-
- Perl:
-
- https://github.com/chrisa/perl-Devel-DTrace-Provider
-
- To Do
- -----
-
- Platform support:
-
- * add support for FreeBSD 9.0 i386
- * add support for Mac OS X PowerPC
- * add support for Solaris SPARC
-
- Features:
-
- * add a "low level" API, allowing alternative provision of
- tracepoints for closer integration with language VMs.
-
- * support structured types, with close integration with the host
- DTrace system.
|