1 // SPDX-License-Identifier: LGPL-2.1
5 * Copyright (C) 2017, Red Hat Inc, Arnaldo Carvalho de Melo <acme@redhat.com>
8 #include "trace/beauty/beauty.h"
9 #include <linux/kernel.h>
10 #include <linux/log2.h>
11 #include <sys/types.h>
14 static size_t clone__scnprintf_flags(unsigned long flags
, char *bf
, size_t size
, bool show_prefix
)
16 #include "trace/beauty/generated/clone_flags_array.c"
17 static DEFINE_STRARRAY(clone_flags
, "CLONE_");
19 return strarray__scnprintf_flags(&strarray__clone_flags
, bf
, size
, show_prefix
, flags
);
22 size_t syscall_arg__scnprintf_clone_flags(char *bf
, size_t size
, struct syscall_arg
*arg
)
24 unsigned long flags
= arg
->val
;
25 enum syscall_clone_args
{
27 SCC_CHILD_STACK
= (1 << 1),
28 SCC_PARENT_TIDPTR
= (1 << 2),
29 SCC_CHILD_TIDPTR
= (1 << 3),
32 if (!(flags
& CLONE_PARENT_SETTID
))
33 arg
->mask
|= SCC_PARENT_TIDPTR
;
35 if (!(flags
& (CLONE_CHILD_SETTID
| CLONE_CHILD_CLEARTID
)))
36 arg
->mask
|= SCC_CHILD_TIDPTR
;
38 if (!(flags
& CLONE_SETTLS
))
41 return clone__scnprintf_flags(flags
, bf
, size
, arg
->show_string_prefix
);