(root)/
strace-6.5/
src/
membarrier.c
       1  /*
       2   * Copyright (c) 2015 Dmitry V. Levin <ldv@strace.io>
       3   * Copyright (c) 2015-2021 The strace developers.
       4   * All rights reserved.
       5   *
       6   * SPDX-License-Identifier: LGPL-2.1-or-later
       7   */
       8  
       9  #include "defs.h"
      10  
      11  #include "xlat/membarrier_cmds.h"
      12  #include "xlat/membarrier_flags.h"
      13  
      14  SYS_FUNC(membarrier)
      15  {
      16  	if (entering(tcp)) {
      17  		int cmd = tcp->u_arg[0];
      18  		unsigned flags = tcp->u_arg[1];
      19  		int cpu_id = tcp->u_arg[2];
      20  
      21  		/* cmd */
      22  		printxval(membarrier_cmds, cmd, "MEMBARRIER_CMD_???");
      23  		tprint_arg_next();
      24  
      25  		/* flags */
      26  		printflags(membarrier_flags, flags, "MEMBARRIER_CMD_FLAG_???");
      27  
      28  		if (flags & MEMBARRIER_CMD_FLAG_CPU) {
      29  			tprint_arg_next();
      30  
      31  			/* cpu_id */
      32  			PRINT_VAL_D(cpu_id);
      33  		}
      34  
      35  		return cmd ? RVAL_DECODED : 0;
      36  	}
      37  
      38  	if (syserror(tcp) || !tcp->u_rval)
      39  		return 0;
      40  
      41  	tcp->auxstr = sprintflags("", membarrier_cmds,
      42  				  (kernel_ulong_t) tcp->u_rval);
      43  	return RVAL_HEX | RVAL_STR;
      44  }