path: root/cddl/contrib/opensolaris/cmd/lockstat/lockstat.c
Commit message (Collapse)AuthorAgeFilesLines
* Add hold events for lockmgr probes, missed in r351361.Mark Johnston2019-08-211-2/+6
| | | | | | | MFC with: r351361 Notes: svn path=/head/; revision=351363
* Add lockmgr(9) probes to the lockstat DTrace provider.Mark Johnston2019-08-211-10/+14
| | | | | | | | | | | | | | | | | They follow the conventions set by rw and sx lock probes. There is an additional lockstat:::lockmgr-disown probe. Update lockstat(1) to report on contention and hold events for lockmgr locks. Document the new probes in dtrace_lockstat.4, and deduplicate some of the existing probe descriptions. Reviewed by: mjg MFC after: 1 week Sponsored by: The FreeBSD Foundation Differential Revision: https://reviews.freebsd.org/D21355 Notes: svn path=/head/; revision=351361
* Fix inverted predicates for sx lock hold events in lockstat(1).Mark Johnston2019-08-211-2/+2
| | | | | | | | | | | | This caused shared sx holds to be reported as exclusive, and vice versa. Reviewed by: mjg MFC after: 3 days Sponsored by: The FreeBSD Foundation Notes: svn path=/head/; revision=351359
* Have lockstat(1) trace locks by name rather than by address.Mark Johnston2015-09-301-0/+64
| | | | | | | | | | | | | | | | | | | | | | Previously, lockstat(1) would use a lock's address as its identifier when consuming data describing lock contention and hold events. After collecting the requested data, it would use ksyms(4) to resolve lock addresses to names. Of course, this doesn't work too well for locks contained in dynamically-allocated memory. This change modifies lockstat(1) to trace the lock names obtained from the base struct lock_object instead, leading to output that is generally much more useful. This change also removes the -c option, which is used to coalesce data for locks in an array. It's not possible to support this option without also tracing lock addresses, and since lock arrays in which the lock names are distinct are not very common in FreeBSD, it's simpler to just remove the option. Reviewed by: avg (earlier revision) Differential Revision: https://reviews.freebsd.org/D3661 Notes: svn path=/head/; revision=288417
* Consistently use a reader/writer flag for lockstat probes in rwlock(9) andMark Johnston2015-07-191-8/+8
| | | | | | | | sx(9), rather than using the probe function name to determine whether a given lock is a read lock or a write lock. Update lockstat(1) accordingly. Notes: svn path=/head/; revision=285704
* several lockstat improvementsAndriy Gapon2015-06-121-14/+26
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 0. For spin events report time spent spinning, not a loop count. While loop count is much easier and cheaper to obtain it is hard to reason about the reported numbers, espcially for adaptive locks where both spinning and sleeping can happen. So, it's better to compare apples and apples. 1. Teach lockstat about FreeBSD rw locks. This is done in part by changing the corresponding probes and in part by changing what probes lockstat should expect. 2. Teach lockstat that rw locks are adaptive and can spin on FreeBSD. 3. Report lock acquisition events for successful rw try-lock operations. 4. Teach lockstat about FreeBSD sx locks. Reporting of events for those locks completely mirrors rw locks. 5. Report spin and block events before acquisition event. This is behavior documented for the upstream, so it makes sense to stick to it. Note that because of FreeBSD adaptive lock implementations both the spin and block events may be reported for the same acquisition while the upstream reports only one of them. Differential Revision: https://reviews.freebsd.org/D2727 Reviewed by: markj MFC after: 17 days Relnotes: yes Sponsored by: ClusterHQ Notes: svn path=/head/; revision=284297
* lockstat(1): document the -V option.Mark Johnston2015-05-251-0/+2
| | | | | | | MFC after: 3 days Notes: svn path=/head/; revision=283508
* Mechanically convert cddl sun #ifdef's to illumosSteven Hartland2015-01-171-13/+11
| | | | | | | | | | | | | | | Since the upstream for cddl code is now illumos not sun, mechanically convert all sun #ifdef's to illumos #ifdef's which have been used in all newer code for some time. Also do a manual pass to correct the use if #ifdef comments as per style(9) as well as few uses of #if defined(__FreeBSD__) vs #ifndef illumos. MFC after: 1 month Sponsored by: Multiplay Notes: svn path=/head/; revision=277300
* Fix lockstat breakage to arm/powerpc buildworld.Stacey Son2009-05-271-8/+12
| | | | | | | | | Thanks to IBM char's are unsigned on arm/powerpc. Approved by: gnn (mentor) Notes: svn path=/head/; revision=192937
* Add the OpenSolaris lockstat(1M) command. Requires the dtrace driver,Stacey Son2009-05-271-0/+1917
the lockstat provider, and the ksyms(4) pseudo driver kernel modules. Approved by: gnn (mentor) Notes: svn path=/head/; revision=192867