Ohm-Management - Projektarbeit B-ME
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

README.md 2.1KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. libusdt
  2. =======
  3. This is "libusdt", a library for creating DTrace USDT providers.
  4. The idea here is to allow the specification of a DTrace provider
  5. dynamically in code and then create the provider at runtime. This
  6. allows providers to be specified in dynamic languages, given suitable
  7. bindings.
  8. The general approach is to create two stub functions for each probe,
  9. one for the is-enabled check and one for the probe itself. These
  10. contain the appropriate instruction sequences to appear to DTrace as
  11. compiled-in tracepoints. A minimal DOF document is built describing
  12. the provider and indicating these stub functions as the tracepoints,
  13. then submitted to the kernel, creating the provider. The API then
  14. exposes the stubs, through which the probes may be fired.
  15. Status
  16. ------
  17. The implementation here works as shown in test_usdt.c on Mac OS X,
  18. i386 and x86_64, on Solaris-like systems, i386 and x86_64 and on
  19. FreeBSD and Oracle Linux, x86_64 only.
  20. Is-enabled probes are supported and exposed in the API.
  21. There is a "test" target which runs a number of tests of the library,
  22. for which perl is required.
  23. OS X builds are Universal by default, and on Solaris, the ARCH
  24. variable may be set to either i386 or x86_64 to force a particular
  25. build.
  26. FreeBSD builds suffer from broken argument handling; this is a known
  27. issue with the current state of DTrace generally on FreeBSD: only the
  28. first five arguments work reliably. See:
  29. http://wiki.freebsd.org/DTraceTODO
  30. See Also
  31. --------
  32. There are various language bindings available:
  33. Lua:
  34. https://github.com/chrisa/lua-usdt
  35. Ruby (by Kevin Chan):
  36. https://github.com/kevinykchan/ruby-usdt
  37. Node.JS:
  38. https://github.com/chrisa/node-dtrace-provider
  39. Perl:
  40. https://github.com/chrisa/perl-Devel-DTrace-Provider
  41. To Do
  42. -----
  43. Platform support:
  44. * add support for FreeBSD 9.0 i386
  45. * add support for Mac OS X PowerPC
  46. * add support for Solaris SPARC
  47. Features:
  48. * add a "low level" API, allowing alternative provision of
  49. tracepoints for closer integration with language VMs.
  50. * support structured types, with close integration with the host
  51. DTrace system.