Ignore:
Timestamp:
May 1, 2000, 1:19:36 AM (25 years ago)
Author:
phaller
Message:

Add: profiling support for ODIN

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/include/odinwrap.h

    r3189 r3467  
    1 /* $Id: odinwrap.h,v 1.20 2000-03-21 21:23:08 sandervl Exp $ */
     1/* $Id: odinwrap.h,v 1.21 2000-04-30 23:19:36 phaller Exp $ */
    22
    33/*
     
    2020 ****************************************************************************/
    2121
     22// override debugging
     23//#undef DEBUG
     24//#define DEBUG
     25
     26// override profiling
     27//#undef PROFILE_ODIN
     28#define PROFILE_ODIN
     29
     30
    2231
    2332#define ODIN_INTERNAL _Optlink
     
    6170#endif
    6271
     72// PH: this is for profiling cumulative method call times
     73#ifdef PROFILE_ODIN
     74
     75#  define PROFILE_START(a)        \
     76     LARGE_INTEGER liStart;       \
     77     LARGE_INTEGER liEnd;         \
     78     unsigned long ulElapsed;     \
     79     QueryPerformanceCounter(&liStart);
     80 
     81 
     82#  define PROFILE_STOP(a)            \
     83     QueryPerformanceCounter(&liEnd);\
     84     if (liStart.LowPart > liEnd.LowPart) \
     85       ulElapsed = 0xFFFFFFFF - liStart.LowPart + liEnd.LowPart; \
     86     else                                           \
     87       ulElapsed = liEnd.LowPart - liStart.LowPart; \
     88                                  \
     89     dprintf(("%s: %s %u ticks\n",\
     90              pszOdinDebugChannel,\
     91              a,                  \
     92              ulElapsed));
     93#else
     94#  define PROFILE_START(a)
     95#  define PROFILE_STOP(a)
     96#endif
     97
    6398/****************************************************************************
    6499 * General Wrapper Macros (debug instrumented)                              *
     
    67102/* ---------- 0 parameters ---------- */
    68103#define ODINFUNCTION0(cRet,cName)             \
    69   cRet ODIN_INTERNAL ODIN_##cName (void);            \
    70   cRet WINAPI cName(void)              \
     104  cRet ODIN_INTERNAL ODIN_##cName (void);     \
     105  cRet WINAPI cName(void)                     \
    71106  {                                           \
    72107    unsigned short sel = RestoreOS2FS();      \
    73     dprintf(("%s: "#cRet" "#cName"() enter\n",  \
    74              pszOdinDebugChannel));           \
    75     CheckFS(sel)                              \
    76     ODIN_HEAPCHECK();                            \
     108    dprintf(("%s: "#cRet" "#cName"() enter\n",\
     109             pszOdinDebugChannel));           \
     110    CheckFS(sel)                              \
     111    ODIN_HEAPCHECK();                         \
     112    PROFILE_START(#cName)                     \
    77113    cRet   rc  = ODIN_##cName();              \
    78     ODIN_HEAPCHECK();                            \
     114    PROFILE_STOP(#cName)                      \
     115    ODIN_HEAPCHECK();                         \
    79116    dprintf(("%s: "#cRet" "#cName"() leave = %08xh\n", \
    80117             pszOdinDebugChannel,             \
     
    88125
    89126#define ODINPROCEDURE0(cName)                 \
    90   void ODIN_INTERNAL ODIN_##cName (void);            \
    91   void WINAPI cName(void)              \
     127  void ODIN_INTERNAL ODIN_##cName (void);     \
     128  void WINAPI cName(void)                     \
    92129  {                                           \
    93130    unsigned short sel = RestoreOS2FS();      \
    94     dprintf(("%s: void "#cName"() enter\n",    \
    95              pszOdinDebugChannel));           \
    96     CheckFS(sel)                              \
    97     ODIN_HEAPCHECK();                            \
    98     ODIN_##cName();                                  \
    99     ODIN_HEAPCHECK();                            \
    100     dprintf(("%s: void "#cName"() leave\n",    \
     131    dprintf(("%s: void "#cName"() enter\n",   \
     132             pszOdinDebugChannel));           \
     133    CheckFS(sel)                              \
     134    ODIN_HEAPCHECK();                         \
     135    PROFILE_START(#cName)                     \
     136    ODIN_##cName();                           \
     137    PROFILE_STOP(#cName)                      \
     138    ODIN_HEAPCHECK();                         \
     139    dprintf(("%s: void "#cName"() leave\n",   \
    101140             pszOdinDebugChannel));           \
    102141    SetFS(sel);                               \
     
    108147/* ---------- 1 parameters ---------- */
    109148#define ODINFUNCTION1(cRet,cName,t1,a1)       \
    110   cRet ODIN_INTERNAL ODIN_##cName (t1 a1);           \
    111   cRet WINAPI cName(t1 a1)             \
     149  cRet ODIN_INTERNAL ODIN_##cName (t1 a1);    \
     150  cRet WINAPI cName(t1 a1)                    \
    112151  {                                           \
    113152    unsigned short sel = RestoreOS2FS();      \
     
    116155             a1));                            \
    117156    CheckFS(sel)                              \
    118     ODIN_HEAPCHECK();                            \
    119     cRet   rc  = ODIN_##cName(a1);                   \
    120     ODIN_HEAPCHECK();                            \
     157    ODIN_HEAPCHECK();                         \
     158    PROFILE_START(#cName)                     \
     159    cRet   rc  = ODIN_##cName(a1);            \
     160    PROFILE_STOP(#cName)                      \
     161    ODIN_HEAPCHECK();                         \
    121162    dprintf(("%s: "#cRet" "#cName"() leave = %08xh\n", \
    122163             pszOdinDebugChannel,             \
     
    129170
    130171#define ODINPROCEDURE1(cName,t1,a1)           \
    131   void ODIN_INTERNAL ODIN_##cName (t1 a1);           \
    132   void WINAPI cName(t1 a1)             \
     172  void ODIN_INTERNAL ODIN_##cName (t1 a1);    \
     173  void WINAPI cName(t1 a1)                    \
    133174  {                                           \
    134175    unsigned short sel = RestoreOS2FS();      \
     
    137178             a1));                            \
    138179    CheckFS(sel)                              \
    139     ODIN_HEAPCHECK();                            \
    140     ODIN_##cName(a1);                                \
    141     ODIN_HEAPCHECK();                            \
    142     dprintf(("%s: void "#cName"() leave\n",    \
     180    ODIN_HEAPCHECK();                         \
     181    PROFILE_START(#cName)                     \
     182    ODIN_##cName(a1);                         \
     183    PROFILE_STOP(#cName)                      \
     184    ODIN_HEAPCHECK();                         \
     185    dprintf(("%s: void "#cName"() leave\n",   \
    143186             pszOdinDebugChannel));           \
    144187    SetFS(sel);                               \
     
    150193/* ---------- 2 parameters ---------- */
    151194#define ODINFUNCTION2(cRet,cName,t1,a1,t2,a2)  \
    152   cRet ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2);      \
    153   cRet WINAPI cName(t1 a1,t2 a2)        \
     195  cRet ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2); \
     196  cRet WINAPI cName(t1 a1,t2 a2)               \
    154197  {                                            \
    155198    unsigned short sel = RestoreOS2FS();       \
    156199    dprintf(("%s: "#cRet" "#cName"("#t1" "#a1"=%08xh, "#t2" "#a2"=%08xh) enter\n", \
    157              pszOdinDebugChannel,             \
    158              a1,a2));                         \
    159     CheckFS(sel)                              \
    160     ODIN_HEAPCHECK();                            \
    161     cRet   rc  = ODIN_##cName(a1,a2);                \
    162     ODIN_HEAPCHECK();                            \
     200             pszOdinDebugChannel,              \
     201             a1,a2));                          \
     202    CheckFS(sel)                               \
     203    ODIN_HEAPCHECK();                          \
     204    PROFILE_START(#cName)                      \
     205    cRet   rc  = ODIN_##cName(a1,a2);          \
     206    PROFILE_STOP(#cName)                       \
     207    ODIN_HEAPCHECK();                          \
    163208    dprintf(("%s: "#cRet" "#cName"() leave = %08xh\n", \
    164              pszOdinDebugChannel,             \
    165              rc));                            \
    166     SetFS(sel);                               \
    167     return rc;                                \
    168   }                                           \
    169                                               \
     209             pszOdinDebugChannel,              \
     210             rc));                             \
     211    SetFS(sel);                                \
     212    return rc;                                 \
     213  }                                            \
     214                                               \
    170215  cRet ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2)
    171216
    172217#define ODINPROCEDURE2(cName,t1,a1,t2,a2)     \
    173218  void ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2);     \
    174   void WINAPI cName(t1 a1,t2 a2)       \
     219  void WINAPI cName(t1 a1,t2 a2)              \
    175220  {                                           \
    176221    unsigned short sel = RestoreOS2FS();      \
     
    179224             a1,a2));                         \
    180225    CheckFS(sel)                              \
    181     ODIN_HEAPCHECK();                            \
    182     ODIN_##cName(a1,a2);                             \
    183     ODIN_HEAPCHECK();                            \
    184     dprintf(("%s: void "#cName"() leave\n",    \
     226    ODIN_HEAPCHECK();                         \
     227    PROFILE_START(#cName)                     \
     228    ODIN_##cName(a1,a2);                      \
     229    PROFILE_STOP(#cName)                      \
     230    ODIN_HEAPCHECK();                         \
     231    dprintf(("%s: void "#cName"() leave\n",   \
    185232             pszOdinDebugChannel));           \
    186233    SetFS(sel);                               \
     
    194241  cRet ODIN_INTERNAL ODIN_##cName (t1 a1,t2 a2,t3 a3);      \
    195242  cRet WINAPI cName(t1 a1,t2 a2,t3 a3)        \
    196   {                               \
    197     unsigned short sel = RestoreOS2FS();  \
     243  {                                           \
     244    unsigned short sel = RestoreOS2FS();      \
    198245    dprintf(("%s: "#cRet" "#cName"("#t1" "#a1"=%08xh, "#t2" "#a2"=%08xh, "#t3" "#a3"=%08xh) enter\n", \
    199246             pszOdinDebugChannel,             \
    200247             a1,a2,a3));                      \
    201248    CheckFS(sel)                              \
    202     ODIN_HEAPCHECK();                            \
    203     cRet   rc  = ODIN_##cName(a1,a2,a3); \
    204     ODIN_HEAPCHECK();                            \
     249    ODIN_HEAPCHECK();                         \
     250    PROFILE_START(#cName)                     \
     251    cRet   rc  = ODIN_##cName(a1,a2,a3);      \
     252    PROFILE_STOP(#cName)                      \
     253    ODIN_HEAPCHECK();                         \
    205254    dprintf(("%s: "#cRet" "#cName"() leave = %08xh\n", \
    206255             pszOdinDebugChannel,             \
     
    222271    CheckFS(sel)                              \
    223272    ODIN_HEAPCHECK();                            \
     273    PROFILE_START(#cName)                      \
    224274    ODIN_##cName(a1,a2,a3);              \
     275    PROFILE_STOP(#cName)                      \
    225276    ODIN_HEAPCHECK();                            \
    226277    dprintf(("%s: void "#cName"() leave\n",    \
     
    243294    CheckFS(sel)                              \
    244295    ODIN_HEAPCHECK();                            \
     296    PROFILE_START(#cName)                      \
    245297    cRet   rc  = ODIN_##cName(a1,a2,a3,a4); \
     298    PROFILE_STOP(#cName)                      \
    246299    ODIN_HEAPCHECK();                            \
    247300    dprintf(("%s: "#cRet" "#cName"() leave = %08xh\n", \
     
    264317    CheckFS(sel)                              \
    265318    ODIN_HEAPCHECK();                            \
     319    PROFILE_START(#cName)                      \
    266320    ODIN_##cName(a1,a2,a3,a4); \
     321    PROFILE_STOP(#cName)                      \
    267322    ODIN_HEAPCHECK();                            \
    268323    dprintf(("%s: void "#cName"() leave\n",    \
     
    286341    CheckFS(sel)                              \
    287342    ODIN_HEAPCHECK();                            \
     343    PROFILE_START(#cName)                      \
    288344    cRet   rc  = ODIN_##cName(a1,a2,a3,a4,a5); \
     345    PROFILE_STOP(#cName)                      \
    289346    ODIN_HEAPCHECK();                            \
    290347    dprintf(("%s: "#cRet" "#cName"() leave = %08xh\n", \
     
    308365    CheckFS(sel)                              \
    309366    ODIN_HEAPCHECK();                            \
     367    PROFILE_START(#cName)                      \
    310368    ODIN_##cName(a1,a2,a3,a4,a5); \
     369    PROFILE_STOP(#cName)                      \
    311370    ODIN_HEAPCHECK();                            \
    312371    dprintf(("%s: void "#cName"() leave\n",    \
     
    330389    CheckFS(sel)                              \
    331390    ODIN_HEAPCHECK();                            \
     391    PROFILE_START(#cName)                      \
    332392    cRet   rc  = ODIN_##cName(a1,a2,a3,a4,a5,a6); \
     393    PROFILE_STOP(#cName)                      \
    333394    ODIN_HEAPCHECK();                            \
    334395    dprintf(("%s: "#cRet" "#cName"() leave = %08xh\n", \
     
    355416    CheckFS(sel)                              \
    356417    ODIN_HEAPCHECK();                            \
     418    PROFILE_START(#cName)                      \
    357419    cRet   rc  = ODIN_##cName(sel,a1,a2,a3,a4,a5,a6); \
     420    PROFILE_STOP(#cName)                      \
    358421    ODIN_HEAPCHECK();                            \
    359422    dprintf(("%s: "#cRet" "#cName"() leave = %08xh\n", \
     
    378441    CheckFS(sel)                              \
    379442    ODIN_HEAPCHECK();                            \
     443    PROFILE_START(#cName)                      \
    380444    ODIN_##cName(a1,a2,a3,a4,a5,a6); \
     445    PROFILE_STOP(#cName)                      \
    381446    ODIN_HEAPCHECK();                            \
    382447    dprintf(("%s: void "#cName"() leave\n",    \
     
    400465    CheckFS(sel)                              \
    401466    ODIN_HEAPCHECK();                            \
     467    PROFILE_START(#cName)                      \
    402468    cRet   rc  = ODIN_##cName(a1,a2,a3,a4,a5,a6,a7); \
     469    PROFILE_STOP(#cName)                      \
    403470    ODIN_HEAPCHECK();                            \
    404471    dprintf(("%s: "#cRet" "#cName"() leave = %08xh\n", \
     
    422489    CheckFS(sel)                              \
    423490    ODIN_HEAPCHECK();                            \
     491    PROFILE_START(#cName)                      \
    424492    ODIN_##cName(a1,a2,a3,a4,a5,a6,a7); \
     493    PROFILE_STOP(#cName)                      \
    425494    ODIN_HEAPCHECK();                            \
    426495    dprintf(("%s: void "#cName"() leave\n",    \
     
    445514    CheckFS(sel)                              \
    446515    ODIN_HEAPCHECK();                            \
     516    PROFILE_START(#cName)                      \
    447517    cRet   rc  = ODIN_##cName(a1,a2,a3,a4,a5,a6,a7,a8); \
     518    PROFILE_STOP(#cName)                      \
    448519    ODIN_HEAPCHECK();                            \
    449520    dprintf(("%s: "#cRet" "#cName"() leave = %08xh\n", \
     
    468539    ODIN_HEAPCHECK();                            \
    469540    CheckFS(sel)                              \
     541    PROFILE_START(#cName)                      \
    470542    ODIN_##cName(a1,a2,a3,a4,a5,a6,a7,a8); \
     543    PROFILE_STOP(#cName)                      \
    471544    ODIN_HEAPCHECK();                            \
    472545    dprintf(("%s: void "#cName"() leave\n",    \
     
    491564    CheckFS(sel)                              \
    492565    ODIN_HEAPCHECK();                            \
     566    PROFILE_START(#cName)                      \
    493567    cRet   rc  = ODIN_##cName(a1,a2,a3,a4,a5,a6,a7,a8,a9); \
     568    PROFILE_STOP(#cName)                      \
    494569    ODIN_HEAPCHECK();                            \
    495570    dprintf(("%s: "#cRet" "#cName"() leave = %08xh\n", \
     
    514589    CheckFS(sel)                              \
    515590    ODIN_HEAPCHECK();                            \
     591    PROFILE_START(#cName)                      \
    516592    ODIN_##cName(a1,a2,a3,a4,a5,a6,a7,a8,a9); \
     593    PROFILE_STOP(#cName)                      \
    517594    ODIN_HEAPCHECK();                            \
    518595    dprintf(("%s: void "#cName"() leave\n",    \
     
    537614    CheckFS(sel)                              \
    538615    ODIN_HEAPCHECK();                            \
     616    PROFILE_START(#cName)                      \
    539617    cRet   rc  = ODIN_##cName(a1,a2,a3,a4,a5,a6,a7,a8,a9,a10); \
     618    PROFILE_STOP(#cName)                      \
    540619    ODIN_HEAPCHECK();                            \
    541620    dprintf(("%s: "#cRet" "#cName"() leave = %08xh\n", \
     
    560639    CheckFS(sel)                              \
    561640    ODIN_HEAPCHECK();                            \
     641    PROFILE_START(#cName)                      \
    562642    ODIN_##cName(a1,a2,a3,a4,a5,a6,a7,a8,a9,a10); \
     643    PROFILE_STOP(#cName)                      \
    563644    ODIN_HEAPCHECK();                            \
    564645    dprintf(("%s: void "#cName"() leave\n",    \
     
    583664    CheckFS(sel)                              \
    584665    ODIN_HEAPCHECK();                            \
     666    PROFILE_START(#cName)                      \
    585667    cRet   rc  = ODIN_##cName(a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11); \
     668    PROFILE_STOP(#cName)                      \
    586669    ODIN_HEAPCHECK();                            \
    587670    dprintf(("%s: "#cRet" "#cName"() leave = %08xh\n", \
     
    606689    CheckFS(sel)                              \
    607690    ODIN_HEAPCHECK();                            \
     691    PROFILE_START(#cName)                      \
    608692    ODIN_##cName(a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11); \
     693    PROFILE_STOP(#cName)                      \
    609694    ODIN_HEAPCHECK();                            \
    610695    dprintf(("%s: void "#cName"() leave\n",    \
     
    630715    CheckFS(sel)                              \
    631716    ODIN_HEAPCHECK();                            \
     717    PROFILE_START(#cName)                      \
    632718    cRet   rc  = ODIN_##cName(a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12); \
     719    PROFILE_STOP(#cName)                      \
    633720    ODIN_HEAPCHECK();                            \
    634721    dprintf(("%s: "#cRet" "#cName"() leave = %08xh\n", \
     
    654741    CheckFS(sel)                              \
    655742    ODIN_HEAPCHECK();                            \
     743    PROFILE_START(#cName)                      \
    656744    ODIN_##cName(a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12); \
     745    PROFILE_STOP(#cName)                      \
    657746    ODIN_HEAPCHECK();                            \
    658747    dprintf(("%s: void "#cName"() leave\n",    \
     
    678767    CheckFS(sel)                              \
    679768    ODIN_HEAPCHECK();                            \
     769    PROFILE_START(#cName)                      \
    680770    cRet   rc  = ODIN_##cName(a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13); \
     771    PROFILE_STOP(#cName)                      \
    681772    ODIN_HEAPCHECK();                            \
    682773    dprintf(("%s: "#cRet" "#cName"() leave = %08xh\n", \
     
    702793    CheckFS(sel)                              \
    703794    ODIN_HEAPCHECK();                            \
     795    PROFILE_START(#cName)                      \
    704796    ODIN_##cName(a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13); \
     797    PROFILE_STOP(#cName)                      \
    705798    ODIN_HEAPCHECK();                            \
    706799    dprintf(("%s: void "#cName"() leave\n",    \
     
    726819    CheckFS(sel)                              \
    727820    ODIN_HEAPCHECK();                            \
     821    PROFILE_START(#cName)                      \
    728822    cRet   rc  = ODIN_##cName(a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14); \
    729823    ODIN_HEAPCHECK();                            \
     
    750844    CheckFS(sel)                              \
    751845    ODIN_HEAPCHECK();                            \
     846    PROFILE_START(#cName)                      \
    752847    ODIN_##cName(a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14); \
     848    PROFILE_STOP(#cName)                      \
    753849    ODIN_HEAPCHECK();                            \
    754850    dprintf(("%s: void "#cName"() leave\n",    \
Note: See TracChangeset for help on using the changeset viewer.