CMS 3D CMS Logo

IgTraceAtomic.h File Reference

Go to the source code of this file.

Typedefs

typedef int IgTraceAtomic

Functions

IgTraceAtomic IgTraceAtomicDec (volatile IgTraceAtomic *val)
IgTraceAtomic IgTraceAtomicInc (volatile IgTraceAtomic *val)


Typedef Documentation

typedef int IgTraceAtomic

Definition at line 14 of file IgTraceAtomic.h.


Function Documentation

IgTraceAtomic IgTraceAtomicDec ( volatile IgTraceAtomic val  )  [inline]

Definition at line 48 of file IgTraceAtomic.h.

References HLT_VtxMuL3::result.

Referenced by IgTrace::disable().

00049 {
00050 # if __i386__
00051     IgTraceAtomic result;
00052     __asm__ __volatile__
00053         ("lock; xaddl %0, (%1); decl %0;"
00054          : "=r" (result)
00055          : "r" (val), "0" (-1));
00056     return result;
00057 # elif __ppc__
00058     IgTraceAtomic result;
00059     __asm__ __volatile__
00060         ("   lwsync\n"
00061          "1: lwarx %0, 0, %1\n"
00062          "   addic %0, %0, -1\n"
00063          "   stwcx. %0, 0, %1\n"
00064          "   bne- 1b\n"
00065          "   isync\n"
00066          : "=&r" (result)
00067          : "r" (val)
00068          : "cc", "memory");
00069     return result;
00070 # endif
00071 }

IgTraceAtomic IgTraceAtomicInc ( volatile IgTraceAtomic val  )  [inline]

Definition at line 22 of file IgTraceAtomic.h.

References HLT_VtxMuL3::result.

Referenced by IgTrace::enable().

00023 {
00024 # if __i386__
00025     IgTraceAtomic result;
00026     __asm__ __volatile__
00027         ("   lock; xaddl %0, (%1); incl %0;"
00028          : "=r" (result)
00029          : "r" (val), "0" (1));
00030     return result+1;
00031 # elif __ppc__
00032     IgTraceAtomic result;
00033     __asm__ __volatile__
00034         ("   lwsync\n"
00035          "1: lwarx %0, 0, %1\n"
00036          "   addic %0, %0, 1\n"
00037          "   stwcx. %0, 0, %1\n"
00038          "   bne- 1b\n"
00039          "   isync\n"
00040          : "=&r" (result)
00041          : "r" (val)
00042          : "cc", "memory");
00043     return result;
00044 # endif
00045 }


Generated on Tue Jun 9 17:53:54 2009 for CMSSW by  doxygen 1.5.4