root/tools/perf/trace/beauty/mount_flags.c

/* [<][>][^][v][top][bottom][index][help] */

DEFINITIONS

This source file includes following definitions.
  1. mount__scnprintf_flags
  2. syscall_arg__mask_val_mount_flags
  3. syscall_arg__scnprintf_mount_flags

   1 // SPDX-License-Identifier: LGPL-2.1
   2 /*
   3  * trace/beauty/mount_flags.c
   4  *
   5  *  Copyright (C) 2018, Red Hat Inc, Arnaldo Carvalho de Melo <acme@redhat.com>
   6  */
   7 
   8 #include "trace/beauty/beauty.h"
   9 #include <linux/compiler.h>
  10 #include <linux/kernel.h>
  11 #include <linux/log2.h>
  12 #include <sys/mount.h>
  13 
  14 static size_t mount__scnprintf_flags(unsigned long flags, char *bf, size_t size, bool show_prefix)
  15 {
  16 #include "trace/beauty/generated/mount_flags_array.c"
  17         static DEFINE_STRARRAY(mount_flags, "MS_");
  18 
  19         return strarray__scnprintf_flags(&strarray__mount_flags, bf, size, show_prefix, flags);
  20 }
  21 
  22 unsigned long syscall_arg__mask_val_mount_flags(struct syscall_arg *arg __maybe_unused, unsigned long flags)
  23 {
  24         // do_mount in fs/namespace.c:
  25         /*
  26          * Pre-0.97 versions of mount() didn't have a flags word.  When the
  27          * flags word was introduced its top half was required to have the
  28          * magic value 0xC0ED, and this remained so until 2.4.0-test9.
  29          * Therefore, if this magic number is present, it carries no
  30          * information and must be discarded.
  31          */
  32         if ((flags & MS_MGC_MSK) == MS_MGC_VAL)
  33                 flags &= ~MS_MGC_MSK;
  34 
  35         return flags;
  36 }
  37 
  38 size_t syscall_arg__scnprintf_mount_flags(char *bf, size_t size, struct syscall_arg *arg)
  39 {
  40         unsigned long flags = arg->val;
  41 
  42         return mount__scnprintf_flags(flags, bf, size, arg->show_string_prefix);
  43 }

/* [<][>][^][v][top][bottom][index][help] */