Properly print arguments to vfork(2) and rfork(2).

PR:		180976
Submitted by:	Yuri <yuri@tsoft.com> (original patch)
MFC after:	1 week
This commit is contained in:
Mark Johnston 2013-08-01 02:57:04 +00:00
parent aaaa065629
commit 9e1db66eb4
Notes: svn2git 2020-12-20 02:59:44 +00:00
svn path=/head/; revision=253850
2 changed files with 12 additions and 1 deletions

View File

@ -40,7 +40,7 @@ enum Argtype { None = 1, Hex, Octal, Int, Name, Ptr, Stat, Ioctl, Quad,
Fd_set, Sigaction, Fcntl, Mprot, Mmapflags, Whence, Readlinkres,
Umtx, Sigset, Sigprocmask, Kevent, Sockdomain, Socktype, Open,
Fcntlflag, Rusage, BinString, Shutdown, Resource, Rlimit, Timeval2,
Pathconf };
Pathconf, Rforkflags };
#define ARG_MASK 0xff
#define OUT 0x100

View File

@ -93,6 +93,9 @@ static struct syscall syscalls[] = {
{ .name = "fcntl", .ret_type = 1, .nargs = 3,
.args = { { Int, 0 } , { Fcntl, 1 }, { Fcntlflag | OUT, 2 } } },
{ .name = "fork", .ret_type = 1, .nargs = 0 },
{ .name = "vfork", .ret_type = 1, .nargs = 0 },
{ .name = "rfork", .ret_type = 1, .nargs = 1,
.args = { { Rforkflags, 0 } } },
{ .name = "getegid", .ret_type = 1, .nargs = 0 },
{ .name = "geteuid", .ret_type = 1, .nargs = 0 },
{ .name = "getgid", .ret_type = 1, .nargs = 0 },
@ -369,6 +372,11 @@ static struct xlat pathconf_arg[] = {
XEND
};
static struct xlat rfork_flags[] = {
X(RFPROC) X(RFNOWAIT) X(RFFDG) X(RFCFDG) X(RFTHREAD) X(RFMEM)
X(RFSIGSHARE) X(RFTSIGZMB) X(RFLINUXTHPN) XEND
};
#undef X
#undef XEND
@ -906,6 +914,9 @@ print_arg(struct syscall_args *sc, unsigned long *args, long retval,
case Pathconf:
tmp = strdup(xlookup(pathconf_arg, args[sc->offset]));
break;
case Rforkflags:
tmp = strdup(xlookup_bits(rfork_flags, args[sc->offset]));
break;
case Sockaddr: {
struct sockaddr_storage ss;
char addr[64];