git: 90da2c797bfa - main - truss: Decode sendfile(2) arguments

Mark Johnston markj at FreeBSD.org
Fri Feb 5 16:29:07 UTC 2021


The branch main has been updated by markj:

URL: https://cgit.FreeBSD.org/src/commit/?id=90da2c797bfa7639005ed46ab9173feb8bd85ecd

commit 90da2c797bfa7639005ed46ab9173feb8bd85ecd
Author:     Mark Johnston <markj at FreeBSD.org>
AuthorDate: 2021-02-05 16:28:09 +0000
Commit:     Mark Johnston <markj at FreeBSD.org>
CommitDate: 2021-02-05 16:28:29 +0000

    truss: Decode sendfile(2) arguments
    
    MFC after:      2 weeks
---
 usr.bin/truss/syscall.h  |  2 ++
 usr.bin/truss/syscalls.c | 22 ++++++++++++++++++++++
 2 files changed, 24 insertions(+)

diff --git a/usr.bin/truss/syscall.h b/usr.bin/truss/syscall.h
index 5f8babf4c407..af918fed4f1b 100644
--- a/usr.bin/truss/syscall.h
+++ b/usr.bin/truss/syscall.h
@@ -117,6 +117,8 @@ enum Argtype {
 	Procctl,
 	Priowhich,
 	Ptraceop,
+	Sendfileflags,
+	Sendfilehdtr,
 	Quotactlcmd,
 	Reboothowto,
 	Resource,
diff --git a/usr.bin/truss/syscalls.c b/usr.bin/truss/syscalls.c
index 319f3d8b0793..f52a82ed97c0 100644
--- a/usr.bin/truss/syscalls.c
+++ b/usr.bin/truss/syscalls.c
@@ -478,6 +478,10 @@ static struct syscall decoded_syscalls[] = {
 	  .args = { { Int, 0 }, { Iovec | IN, 1 }, { Int, 2 },
 	            { Sockaddr | IN, 3 }, { Socklent, 4 },
 	            { Sctpsndrcvinfo | IN, 5 }, { Msgflags, 6 } } },
+	{ .name = "sendfile", .ret_type = 1, .nargs = 7,
+	  .args = { { Int, 0 }, { Int, 1 }, { QuadHex, 2 }, { Sizet, 3 },
+		    { Sendfilehdtr, 4 }, { QuadHex | OUT, 5 },
+		    { Sendfileflags, 6 } } },
 	{ .name = "select", .ret_type = 1, .nargs = 5,
 	  .args = { { Int, 0 }, { Fd_set, 1 }, { Fd_set, 2 }, { Fd_set, 3 },
 		    { Timeval, 4 } } },
@@ -2670,6 +2674,24 @@ print_arg(struct syscall_args *sc, unsigned long *args, register_t *retval,
 		print_integer_arg(sysdecode_ptrace_request, fp,
 		    args[sc->offset]);
 		break;
+	case Sendfileflags:
+		print_mask_arg(sysdecode_sendfile_flags, fp, args[sc->offset]);
+		break;
+	case Sendfilehdtr: {
+		struct sf_hdtr hdtr;
+
+		if (get_struct(pid, args[sc->offset], &hdtr, sizeof(hdtr)) !=
+		    -1) {
+			fprintf(fp, "{");
+			print_iovec(fp, trussinfo, (uintptr_t)hdtr.headers,
+			    hdtr.hdr_cnt);
+			print_iovec(fp, trussinfo, (uintptr_t)hdtr.trailers,
+			    hdtr.trl_cnt);
+			fprintf(fp, "}");
+		} else
+			print_pointer(fp, args[sc->offset]);
+		break;
+	}
 	case Quotactlcmd:
 		if (!sysdecode_quotactl_cmd(fp, args[sc->offset]))
 			fprintf(fp, "%#x", (int)args[sc->offset]);


More information about the dev-commits-src-all mailing list