MINI SHELL

Server : Apache/2.2.2 (Fedora)
System : Linux App1.pathumtani.go.th 2.6.20-1.2320.fc5smp #1 SMP Tue Jun 12 19:40:16 EDT 2007 i686
User : apache ( 48)
PHP Version : 5.2.9
Disable Function : NONE
Directory :  /usr/share/systemtap/tapset/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Current File : //usr/share/systemtap/tapset/errno.stp
// errno tapset
// Copyright (C) 2006 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 N(a) [a]=#a

const char * const errlist[] = {
/* from asm-generic/errno-base.h */
[1] = "EPERM",
[2] = "ENOENT",
[3] = "ESRCH",
[4] = "EINTR",
[5] = "EIO",
[6] = "ENXIO",
[7] = "E2BIG",
[8] = "ENOEXEC",
[9] = "EBADF",
[10]= "ECHILD",
[11]= "EAGAIN",
[12]= "ENOMEM",
[13]= "EACCES",
[14]= "EFAULT",
[15]= "ENOTBLK",
[16]= "EBUSY",
[17]= "EEXIST",
[18]= "EXDEV",
[19]= "ENODEV",
[20]= "ENOTDIR",
[21]= "EISDIR",
[22]= "EINVAL",
[23]= "ENFILE",
[24]= "EMFILE",
[25]= "ENOTTY",
[26]= "ETXTBSY",
[27]= "EFBIG",
[28]= "ENOSPC",
[29]= "ESPIPE",
[30]= "EROFS",
[31]= "EMLINK",
[32]= "EPIPE",
[33]= "EDOM",
[34]= "ERANGE",
/* end of errno-base.h */
/* The rest of this is arch-dependent */
#ifdef EDEADLK
	N(EDEADLK),
#endif
#ifdef ENAMETOOLONG
	N(ENAMETOOLONG),
#endif
#ifdef ENOLCK
	N(ENOLCK),
#endif
#ifdef ENOSYS
	N(ENOSYS),
#endif
#ifdef ENOTEMPTY
	N(ENOTEMPTY),
#endif
#ifdef ELOOP
	N(ELOOP),
#endif
#ifdef ENOMSG
	N(ENOMSG),
#endif
#ifdef EIDRM
	N(EIDRM),
#endif
#ifdef ECHRNG
	N(ECHRNG),
#endif
#ifdef EL2NSYNC
	N(EL2NSYNC),
#endif
#ifdef EL3HLT
	N(EL3HLT),
#endif
#ifdef EL3RST
	N(EL3RST),
#endif
#ifdef ELNRNG
	N(ELNRNG),
#endif
#ifdef EUNATCH
	N(EUNATCH),
#endif
#ifdef ENOCSI
	N(ENOCSI),
#endif
#ifdef EL2HLT
	N(EL2HLT),
#endif
#ifdef EBADE
	N(EBADE),
#endif
#ifdef EBADR
	N(EBADR),
#endif
#ifdef EXFULL
	N(EXFULL),
#endif
#ifdef ENOANO
	N(ENOANO),
#endif
#ifdef EBADRQC
	N(EBADRQC),
#endif
#ifdef EBADSLT
	N(EBADSLT),
#endif
#ifdef EBFONT
	N(EBFONT),
#endif
#ifdef ENOSTR
	N(ENOSTR),
#endif
#ifdef ENODATA
	N(ENODATA),
#endif
#ifdef ETIME
	N(ETIME),
#endif
#ifdef ENOSR
	N(ENOSR),
#endif
#ifdef ENONET
	N(ENONET),
#endif
#ifdef ENOPKG
	N(ENOPKG),
#endif
#ifdef EREMOTE
	N(EREMOTE),
#endif
#ifdef ENOLINK
	N(ENOLINK),
#endif
#ifdef EAVD
	N(EADV),
#endif
#ifdef ESRMNT
	N(ESRMNT),
#endif
#ifdef ECOMM
	N(ECOMM),
#endif
#ifdef EPROTO
	N(EPROTO),
#endif
#ifdef EMULTIHOP
	N(EMULTIHOP),
#endif
#ifdef EDOTDOT
	N(EDOTDOT),
#endif
#ifdef EBADMSG
	N(EBADMSG),
#endif
#ifdef EOVERFLOW
	N(EOVERFLOW),
#endif
#ifdef ENOTUNIQ
	N(ENOTUNIQ),
#endif
#ifdef EBADFD
	N(EBADFD),
#endif
#ifdef EREMCHG
	N(EREMCHG),
#endif
#ifdef ELIBACC
	N(ELIBACC),
#endif
#ifdef ELIBBAD
	N(ELIBBAD),
#endif
#ifdef ELIBSCN
	N(ELIBSCN),
#endif
#ifdef ELIBMAX
	N(ELIBMAX),
#endif
#ifdef ELIBEXEC
	N(ELIBEXEC),
#endif
#ifdef EILSEQ
	N(EILSEQ),
#endif
#ifdef ERESTART
	N(ERESTART),
#endif
#ifdef ESTRPIPE
	N(ESTRPIPE),
#endif
#ifdef EUSERS
	N(EUSERS),
#endif
#ifdef ENOTSOCK
	N(ENOTSOCK),
#endif
#ifdef EDESTADDRREQ
	N(EDESTADDRREQ),
#endif
#ifdef EMSGSIZE
	N(EMSGSIZE),
#endif
#ifdef EPROTOTYPE
	N(EPROTOTYPE),
#endif
#ifdef ENOPROTOOPT
	N(ENOPROTOOPT),
#endif
#ifdef EPROTONOSUPPORT
	N(EPROTONOSUPPORT),
#endif
#ifdef ESOCKTNOSUPPORT
	N(ESOCKTNOSUPPORT),
#endif
#ifdef EOPNOTSUPP
	N(EOPNOTSUPP),
#endif
#ifdef EPFNOSUPPORT
	N(EPFNOSUPPORT),
#endif
#ifdef EAFNOSUPPORT
	N(EAFNOSUPPORT),
#endif
#ifdef EADDRINUSE
	N(EADDRINUSE),
#endif
#ifdef EADDRNOTAVAIL
	N(EADDRNOTAVAIL),
#endif
#ifdef ENETDOWN
	N(ENETDOWN),
#endif
#ifdef ENETUNREACH
	N(ENETUNREACH),
#endif
#ifdef ENETRESET
	N(ENETRESET),
#endif
#ifdef ECONNABORTED
	N(ECONNABORTED),
#endif
#ifdef ECONNRESET
	N(ECONNRESET),
#endif
#ifdef ENOBUFS
	N(ENOBUFS),
#endif
#ifdef EISCONN
	N(EISCONN),
#endif
#ifdef ENOTCONN
	N(ENOTCONN),
#endif
#ifdef ESHUTDOWN
	N(ESHUTDOWN),
#endif
#ifdef ETOOMANYREFS
	N(ETOOMANYREFS),
#endif
#ifdef ETIMEDOUT
	N(ETIMEDOUT),
#endif
#ifdef ECONNREFUSED
	N(ECONNREFUSED),
#endif
#ifdef EHOSTDOWN
	N(EHOSTDOWN),
#endif
#ifdef EHOSTUNREACH
	N(EHOSTUNREACH),
#endif
#ifdef EALREADY
	N(EALREADY),
#endif
#ifdef EINPROGRESS
	N(EINPROGRESS),
#endif
#ifdef ESTALE
	N(ESTALE),
#endif
#ifdef EUCLEAN
	N(EUCLEAN),
#endif
#ifdef ENOTNAM
	N(ENOTNAM),
#endif
#ifdef ENAVAIL
	N(ENAVAIL),
#endif
#ifdef EISNAM
	N(EISNAM),
#endif
#ifdef EREMOTEIO
	N(EREMOTEIO),
#endif
#ifdef EDQUOT
	N(EDQUOT),
#endif
#ifdef ENOMEDIUM
	N(ENOMEDIUM),
#endif
#ifdef EMEDIUMTYPE
	N(EMEDIUMTYPE),
#endif
#ifdef ECANCELED
	N(ECANCELED),
#endif
#ifdef ENOKEY
	N(ENOKEY),
#endif
#ifdef EKEYEXPIRED
	N(EKEYEXPIRED),
#endif
#ifdef EKEYREVOKED
	N(EKEYREVOKED),
#endif
#ifdef EKEYREJECTED
	N(EKEYREJECTED),
#endif
#ifdef EOWNERDEAD
	N(EOWNERDEAD),
#endif
#ifdef ENOTRECOVERABLE
	N(ENOTRECOVERABLE),
#endif
#if defined (EDEADLOCK) && EDEADLOCK != EDEADLK
	N(EDEADLOCK),
#endif
#ifdef E
	N(EADV),
#endif
};
#undef N
const int Maxerrno = sizeof(errlist)/sizeof(char *);
%}

function errno_str:string (err:long) %{ /* pure */
	long e = THIS->err;
	if (e < 0 && e > -Maxerrno && errlist[-e])
		strlcpy (THIS->__retvalue, errlist[-e], MAXSTRINGLEN);
	else if (e > 0 && e < Maxerrno && errlist[e])
		strlcpy (THIS->__retvalue, errlist[e], MAXSTRINGLEN);
%}

/* for syscall tapset. set returnp = 1 for decimal, 2 for hex */
function returnstr:string (returnp:long) %{ /* pure */
	long ret;

	/* XXX: unfortunate duplication with return.stp:retval() */

        if (CONTEXT->regs) {
#if defined (__i386__)
                ret = CONTEXT->regs->eax;
#elif defined (__x86_64__)
                ret = CONTEXT->regs->rax;
#elif defined (__powerpc64__)
                ret = CONTEXT->regs->gpr[3];
#elif defined (__ia64__)
                ret = CONTEXT->regs->r8;
#elif defined (__sparc64__)
                ret = CONTEXT->regs->u_regs[UREG_RETPC];
#else
                return;
#endif
        } else
                return;
	
	if (ret < 0 && ret > -Maxerrno && errlist[-ret])
		snprintf (THIS->__retvalue, MAXSTRINGLEN, "%ld (%s)", ret, errlist[-ret]);
	else if (THIS->returnp == 2)
		snprintf (THIS->__retvalue, MAXSTRINGLEN, "0x%lx", ret);
	else if (THIS->returnp == 3)
		snprintf (THIS->__retvalue, MAXSTRINGLEN, "%#lo", ret);
	else 	
		snprintf (THIS->__retvalue, MAXSTRINGLEN, "%ld", ret);
%}

Anon7 - 2021