RPM Package Manager, CVS Repository
  http://rpm5.org/cvs/
  ____________________________________________________________________________

  Server: rpm5.org                         Name:   Jeff Johnson
  Root:   /v/rpm/cvs                       Email:  [EMAIL PROTECTED]
  Module: rpm                              Date:   19-Aug-2007 23:12:23
  Branch: HEAD                             Handle: 2007081922122201

  Modified files:
    rpm                     CHANGES
    rpm/lib                 poptALL.c rpmts.c
    rpm/rpmdb               header.c header_internal.h librpmdb.vers rpmdb.h

  Log:
    - enable Header performance metrics, tied to --stats.

  Summary:
    Revision    Changes     Path
    1.1593      +1  -0      rpm/CHANGES
    2.43        +6  -0      rpm/lib/poptALL.c
    2.85        +10 -0      rpm/lib/rpmts.c
    1.62        +53 -5      rpm/rpmdb/header.c
    1.17        +2  -2      rpm/rpmdb/header_internal.h
    1.13        +3  -1      rpm/rpmdb/librpmdb.vers
    1.64        +1  -1      rpm/rpmdb/rpmdb.h
  ____________________________________________________________________________

  patch -p0 <<'@@ .'
  Index: rpm/CHANGES
  ============================================================================
  $ cvs diff -u -r1.1592 -r1.1593 CHANGES
  --- rpm/CHANGES       19 Aug 2007 19:45:46 -0000      1.1592
  +++ rpm/CHANGES       19 Aug 2007 21:12:22 -0000      1.1593
  @@ -1,4 +1,5 @@
   4.5 -> 5.0:
  +    - jbj: enable Header performance metrics, tied to --stats.
       - jbj: add Header performance metrics, disabled for now.
       - jbj: eliminate headerNVR, use headerNEVRA instead.
       - jbj: eliminate the rpmrbFoo, use rpmcliInstallFoo instead.
  @@ .
  patch -p0 <<'@@ .'
  Index: rpm/lib/poptALL.c
  ============================================================================
  $ cvs diff -u -r2.42 -r2.43 poptALL.c
  --- rpm/lib/poptALL.c 17 Aug 2007 16:04:50 -0000      2.42
  +++ rpm/lib/poptALL.c 19 Aug 2007 21:12:23 -0000      2.43
  @@ -119,6 +119,9 @@
   extern int _rpmts_stats;
   
   /[EMAIL PROTECTED]@*/
  +extern int _hdr_stats;
  +
  +/[EMAIL PROTECTED]@*/
   extern int _tar_debug;
   
   /[EMAIL PROTECTED]@*/
  @@ -628,6 +631,9 @@
        rpmIncreaseVerbosity();
       }
   
  +    /* Initialize header stat collection. */
  +    _hdr_stats = _rpmts_stats;
  +
       return optCon;
   }
   /[EMAIL PROTECTED]@*/
  @@ .
  patch -p0 <<'@@ .'
  Index: rpm/lib/rpmts.c
  ============================================================================
  $ cvs diff -u -r2.84 -r2.85 rpmts.c
  --- rpm/lib/rpmts.c   1 Aug 2007 17:58:35 -0000       2.84
  +++ rpm/lib/rpmts.c   19 Aug 2007 21:12:23 -0000      2.85
  @@ -740,8 +740,16 @@
        /[EMAIL PROTECTED] fileSystem, internalState @*/
        /[EMAIL PROTECTED] fileSystem, internalState @*/
   {
  +    extern rpmop _hdr_loadops;
  +    extern rpmop _hdr_getops;
  +
       (void) rpmswExit(rpmtsOp(ts, RPMTS_OP_TOTAL), 0);
   
  +    if (_hdr_loadops)
  +     rpmswAdd(rpmtsOp(ts, RPMTS_OP_HDRLOAD), _hdr_loadops);
  +    if (_hdr_getops)
  +     rpmswAdd(rpmtsOp(ts, RPMTS_OP_HDRGET), _hdr_getops);
  +
       rpmtsPrintStat("total:       ", rpmtsOp(ts, RPMTS_OP_TOTAL));
       rpmtsPrintStat("check:       ", rpmtsOp(ts, RPMTS_OP_CHECK));
       rpmtsPrintStat("order:       ", rpmtsOp(ts, RPMTS_OP_ORDER));
  @@ -760,6 +768,8 @@
       rpmtsPrintStat("dbput:       ", rpmtsOp(ts, RPMTS_OP_DBPUT));
       rpmtsPrintStat("dbdel:       ", rpmtsOp(ts, RPMTS_OP_DBDEL));
       rpmtsPrintStat("readhdr:     ", rpmtsOp(ts, RPMTS_OP_READHDR));
  +    rpmtsPrintStat("hdrload:     ", rpmtsOp(ts, RPMTS_OP_HDRLOAD));
  +    rpmtsPrintStat("hdrget:      ", rpmtsOp(ts, RPMTS_OP_HDRGET));
   }
   
   rpmts rpmtsFree(rpmts ts)
  @@ .
  patch -p0 <<'@@ .'
  Index: rpm/rpmdb/header.c
  ============================================================================
  $ cvs diff -u -r1.61 -r1.62 header.c
  --- rpm/rpmdb/header.c        19 Aug 2007 19:45:47 -0000      1.61
  +++ rpm/rpmdb/header.c        19 Aug 2007 21:12:23 -0000      1.62
  @@ -137,7 +137,15 @@
    * Global header stats enabler.
    */
   /[EMAIL PROTECTED]@*/
  -int _hdr_stats;
  +int _hdr_stats = 0;
  +/[EMAIL PROTECTED]@*/
  +static struct rpmop_s hdr_loadops;
  +/[EMAIL PROTECTED]@*/
  +rpmop _hdr_loadops = &hdr_loadops;
  +/[EMAIL PROTECTED]@*/
  +static struct rpmop_s hdr_getops;
  +/[EMAIL PROTECTED]@*/
  +rpmop _hdr_getops = &hdr_getops;
   
   /** \ingroup header
    * Return header stats accumulator structure.
  @@ -152,8 +160,8 @@
       rpmop op = NULL;
       if (_hdr_stats)
       switch (opx) {
  -    case 18: op = &h->hops_load;     break;  /* RPMTS_OP_HDRLOAD */
  -    case 19: op = &h->hops_get;      break;  /* RPMTS_OP_HDRGET */
  +    case 18: op = &h->h_loadops;     break;  /* RPMTS_OP_HDRLOAD */
  +    case 19: op = &h->h_getops;      break;  /* RPMTS_OP_HDRGET */
       }
       return op;
   }
  @@ -234,6 +242,13 @@
       }
       h->origin = _free(h->origin);
   
  +    if (_hdr_stats) {
  +     if (_hdr_loadops)       /* RPMTS_OP_HDRLOAD */
  +         (void) rpmswAdd(_hdr_loadops, headerGetStats(h, 18));
  +     if (_hdr_getops)        /* RPMTS_OP_HDRGET */
  +         (void) rpmswAdd(_hdr_getops, headerGetStats(h, 19));
  +    }
  +
       /[EMAIL PROTECTED]@*/ h = _free(h); /[EMAIL PROTECTED]@*/
       return h;
       /[EMAIL PROTECTED]@*/
  @@ -646,6 +661,7 @@
        /[EMAIL PROTECTED] maxSet(lengthPtr) >= 0 @*/
        /[EMAIL PROTECTED] maxRead(result) == (*lengthPtr) @*/
   {
  +    void * sw;
       int_32 * ei = NULL;
       entryInfo pe;
       char * dataStart;
  @@ -661,6 +677,9 @@
       int driplen, ndrips;
       int legacy = 0;
   
  +    if ((sw = headerGetStats(h, 18)) != NULL)        /* RPMTS_OP_HDRLOAD */
  +     (void) rpmswEnter(sw, 0);
  +
       /* Sort entries by (offset,tag). */
       headerUnsort(h);
   
  @@ -909,9 +928,12 @@
       h->flags &= ~HEADERFLAG_SORTED;
       headerSort(h);
   
  +    if (sw != NULL)  (void) rpmswExit(sw, len);
  +
       return (void *) ei;
   
   errxit:
  +    if (sw != NULL)  (void) rpmswExit(sw, len);
       /[EMAIL PROTECTED]@*/
       ei = _free(ei);
       /[EMAIL PROTECTED]@*/
  @@ -1041,6 +1063,7 @@
   Header headerLoad(/[EMAIL PROTECTED]@*/ void * uh)
        /[EMAIL PROTECTED] uh @*/
   {
  +    void * sw;
       int_32 * ei = (int_32 *) uh;
       int_32 il = ntohl(ei[0]);                /* index length */
       int_32 dl = ntohl(ei[1]);                /* data length */
  @@ -1069,6 +1092,8 @@
       dataEnd = dataStart + dl;
   
       h = xcalloc(1, sizeof(*h));
  +    if ((sw = headerGetStats(h, 18)) != NULL)        /* RPMTS_OP_HDRLOAD */
  +     (void) rpmswEnter(sw, 0);
       {        unsigned char * hmagic = (_newmagic ? meta_magic : 
header_magic);
        (void) memcpy(h->magic, hmagic, sizeof(h->magic));
       }
  @@ -1205,6 +1230,9 @@
       h->flags &= ~HEADERFLAG_SORTED;
       headerSort(h);
   
  +    if (sw != NULL)
  +     (void) rpmswExit(sw, pvlen);
  +
       /[EMAIL PROTECTED] -observertrans @*/
       return h;
       /[EMAIL PROTECTED] =observertrans @*/
  @@ -1930,12 +1958,16 @@
        /[EMAIL PROTECTED] *type, *p, *c @*/
        /[EMAIL PROTECTED] maxSet(type) >= 0 /\ maxSet(p) >= 0 /\ maxSet(c) >= 
0 @*/
   {
  +    void * sw;
       const char * name = tagName(tag);
       headerSprintfExtension exts = 
(headerSprintfExtension)headerCompoundFormats;
       headerSprintfExtension ext;
       int extNum;
       int rc;
   
  +    if ((sw = headerGetStats(h, 19)) != NULL)        /* RPMTS_OP_HDRGET */
  +     (void) rpmswEnter(sw, 0);
  +
       /* Search extensions for specific tag override. */
       for (ext = exts, extNum = 0; ext != NULL && ext->type != HEADER_EXT_LAST;
        ext = (ext->type == HEADER_EXT_MORE ? ext->u.more : ext+1), extNum++)
  @@ -1954,6 +1986,8 @@
   
       /* XXX Returned data is always allocated. */
   
  +    if (sw != NULL)  (void) rpmswExit(sw, 0);
  +
       return rc;
   }
   
  @@ -1978,7 +2012,14 @@
        /[EMAIL PROTECTED] *type, *p, *c @*/
        /[EMAIL PROTECTED] maxSet(type) >= 0 /\ maxSet(p) >= 0 /\ maxSet(c) >= 
0 @*/
   {
  -    return intGetEntry(h, tag, type, (hPTR_t *)p, c, 0);
  +    void * sw;
  +    int rc;
  +
  +    if ((sw = headerGetStats(h, 19)) != NULL)        /* RPMTS_OP_HDRGET */
  +     (void) rpmswEnter(sw, 0);
  +    rc = intGetEntry(h, tag, type, (hPTR_t *)p, c, 0);
  +    if (sw != NULL)  (void) rpmswExit(sw, 0);
  +    return rc;
   }
   
   /** \ingroup header
  @@ -2001,7 +2042,14 @@
        /[EMAIL PROTECTED] *type, *p, *c @*/
        /[EMAIL PROTECTED] maxSet(type) >= 0 /\ maxSet(p) >= 0 /\ maxSet(c) >= 
0 @*/
   {
  -    return intGetEntry(h, tag, type, p, c, 1);
  +    void * sw;
  +    int rc;
  +
  +    if ((sw = headerGetStats(h, 19)) != NULL)        /* RPMTS_OP_HDRGET */
  +     (void) rpmswEnter(sw, 0);
  +    rc = intGetEntry(h, tag, type, p, c, 1);
  +    if (sw != NULL)  (void) rpmswExit(sw, 0);
  +    return rc;
   }
   
   int headerGetRawEntry(Header h, int_32 tag, int_32 * type, void * p, int_32 
* c)
  @@ .
  patch -p0 <<'@@ .'
  Index: rpm/rpmdb/header_internal.h
  ============================================================================
  $ cvs diff -u -r1.16 -r1.17 header_internal.h
  --- rpm/rpmdb/header_internal.h       19 Aug 2007 19:45:47 -0000      1.16
  +++ rpm/rpmdb/header_internal.h       19 Aug 2007 21:12:23 -0000      1.17
  @@ -61,8 +61,8 @@
   /[EMAIL PROTECTED]@*/ /[EMAIL PROTECTED]@*/
       const char * origin;     /*!< Header origin (e.g. path or URL). */
       int_32 instance;         /*!< Header instance (if from rpmdb). */
  -    struct rpmop_s hops_load;
  -    struct rpmop_s hops_get;
  +    struct rpmop_s h_loadops;
  +    struct rpmop_s h_getops;
   /[EMAIL PROTECTED]@*/
       indexEntry index;                /*!< Array of tags. */
       int indexUsed;           /*!< Current size of tag array. */
  @@ .
  patch -p0 <<'@@ .'
  Index: rpm/rpmdb/librpmdb.vers
  ============================================================================
  $ cvs diff -u -r1.12 -r1.13 librpmdb.vers
  --- rpm/rpmdb/librpmdb.vers   19 Aug 2007 19:45:47 -0000      1.12
  +++ rpm/rpmdb/librpmdb.vers   19 Aug 2007 21:12:23 -0000      1.13
  @@ -23,6 +23,8 @@
       fpLookup;
       fpLookupList;
       _hdr_debug;
  +    _hdr_getops;
  +    _hdr_loadops;
       _hdr_stats;
       hdrVec;
       headerCompoundFormats;
  @@ -35,7 +37,6 @@
       headerNEVRA;
       hGetColor;
       _init;
  -    rpm_mergesort;
       _newmagic;
       prDbiOpenFlags;
       rdbOptions;
  @@ -71,6 +72,7 @@
       rpmdbSync;
       rpmdbVerify;
       rpmdbVerifyAllDBI;
  +    rpm_mergesort;
       rpmTagTable;
       rpmTagTableSize;
       rpmTags;
  @@ .
  patch -p0 <<'@@ .'
  Index: rpm/rpmdb/rpmdb.h
  ============================================================================
  $ cvs diff -u -r1.63 -r1.64 rpmdb.h
  --- rpm/rpmdb/rpmdb.h 2 Aug 2007 17:15:42 -0000       1.63
  +++ rpm/rpmdb/rpmdb.h 19 Aug 2007 21:12:23 -0000      1.64
  @@ -60,7 +60,7 @@
   typedef /[EMAIL PROTECTED]@*/ struct _dbiIndex * dbiIndex;
   
   #if defined(_RPMDB_INTERNAL)
  -#include "rpmsw.h"
  +#include <rpmsw.h>
   #if !defined(SWIG)   /* XXX inline dbiFoo() need */
   /** \ingroup dbi
    * A single item from an index database (i.e. the "data returned").
  @@ .
______________________________________________________________________
RPM Package Manager                                    http://rpm5.org
CVS Sources Repository                                [email protected]

Reply via email to