// SPDX-License-Identifier: GPL-2.0
#include <sched.h>

/*
 * Not defined anywhere else, probably, just to make sure we
 * catch future flags
 */
#define SCHED_POLICY_MASK 0xff

#ifndef SCHED_DEADLINE
#define SCHED_DEADLINE 6
#endif
#ifndef SCHED_RESET_ON_FORK
#define SCHED_RESET_ON_FORK 0x40000000
#endif

static size_t syscall_arg__scnprintf_sched_policy(char *bf, size_t size,
						  struct syscall_arg *arg)
{
	const char *policies[] = {
		"NORMAL", "FIFO", "RR", "BATCH", "ISO", "IDLE", "DEADLINE",
	};
	size_t printed;
	int policy = arg->val,
	    flags = policy & ~SCHED_POLICY_MASK;

	policy &= SCHED_POLICY_MASK;
	if (policy <= SCHED_DEADLINE)
		printed = scnprintf(bf, size, "%s", policies[policy]);
	else
		printed = scnprintf(bf, size, "%#x", policy);

#define	P_POLICY_FLAG(n) \
	if (flags & SCHED_##n) { \
		printed += scnprintf(bf + printed, size - printed, "|%s", #n); \
		flags &= ~SCHED_##n; \
	}

	P_POLICY_FLAG(RESET_ON_FORK);
#undef P_POLICY_FLAG

	if (flags)
		printed += scnprintf(bf + printed, size - printed, "|%#x", flags);

	return printed;
}

#define SCA_SCHED_POLICY syscall_arg__scnprintf_sched_policy
