123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051 |
- // SPDX-License-Identifier: LGPL-2.1
- #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)
- {
- bool show_prefix = arg->show_string_prefix;
- const char *prefix = "SCHED_";
- 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%s", show_prefix ? prefix : "", 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%s", show_prefix ? prefix : "", #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
|