xref: /freebsd/cddl/usr.sbin/dwatch/libexec/nanosleep (revision d0b2dbfa0ecf2bbc9709efc5e20baf8e4b44bbbf)
15bf5ca77SDevin Teske# -*- tab-width: 4 -*- ;; Emacs
25bf5ca77SDevin Teske# vi: set filetype=sh tabstop=8 shiftwidth=8 noexpandtab :: Vi/ViM
35bf5ca77SDevin Teske############################################################ IDENT(1)
45bf5ca77SDevin Teske#
55bf5ca77SDevin Teske# $Title: dwatch(8) module for nanosleep(2) [or similar] entry $
65bf5ca77SDevin Teske# $Copyright: 2014-2018 Devin Teske. All rights reserved. $
75bf5ca77SDevin Teske#
85bf5ca77SDevin Teske############################################################ DESCRIPTION
95bf5ca77SDevin Teske#
105bf5ca77SDevin Teske# Print arguments being passed to nanosleep(2) [or similar]
115bf5ca77SDevin Teske#
125bf5ca77SDevin Teske############################################################ PROBE
135bf5ca77SDevin Teske
145bf5ca77SDevin Teske: ${PROBE:=syscall::$PROFILE:entry}
155bf5ca77SDevin Teske
165bf5ca77SDevin Teske############################################################ ACTIONS
175bf5ca77SDevin Teske
185bf5ca77SDevin Teskeexec 9<<EOF
195bf5ca77SDevin Teskethis struct timespec *	rqtp;
205bf5ca77SDevin Teskethis time_t		requested_sec;
215bf5ca77SDevin Teskethis long		requested_nsec;
225bf5ca77SDevin Teske
235bf5ca77SDevin Teske$PROBE /* probe ID $ID */
245bf5ca77SDevin Teske{${TRACE:+
255bf5ca77SDevin Teske	print("<$ID>");
265bf5ca77SDevin Teske}
275bf5ca77SDevin Teske	/*
285bf5ca77SDevin Teske	 * const struct timespec *
295bf5ca77SDevin Teske	 */
305bf5ca77SDevin Teske	this->rqtp = (struct timespec *)copyin(arg0, sizeof(struct timespec));
315bf5ca77SDevin Teske	this->requested_sec  = (time_t)this->rqtp->tv_sec;
325bf5ca77SDevin Teske	this->requested_nsec = (long)this->rqtp->tv_nsec;
335bf5ca77SDevin Teske}
345bf5ca77SDevin TeskeEOF
355bf5ca77SDevin TeskeACTIONS=$( cat <&9 )
365bf5ca77SDevin TeskeID=$(( $ID + 1 ))
375bf5ca77SDevin Teske
385bf5ca77SDevin Teske############################################################ EVENT DETAILS
395bf5ca77SDevin Teske
40*a061d970SDevin Teskeif [ ! "$CUSTOM_DETAILS" ]; then
415bf5ca77SDevin Teskeexec 9<<EOF
425bf5ca77SDevin Teske	/*
435bf5ca77SDevin Teske	 * Dump nanosleep(2) arguments
445bf5ca77SDevin Teske	 */
455bf5ca77SDevin Teske	printf("%d.%d seconds",
465bf5ca77SDevin Teske		this->requested_sec, this->requested_nsec / 100000);
475bf5ca77SDevin TeskeEOF
485bf5ca77SDevin TeskeEVENT_DETAILS=$( cat <&9 )
49*a061d970SDevin Teskefi
505bf5ca77SDevin Teske
515bf5ca77SDevin Teske################################################################################
525bf5ca77SDevin Teske# END
535bf5ca77SDevin Teske################################################################################
54