1
0
mirror of git://git.gnupg.org/gnupg.git synced 2024-12-22 10:19:57 +01:00

New function log_clock.

* common/logging.c (log_clock): New.
* g10/gpg.c (set_debug): Print clock debug flag.
* g10/options.h (DBG_CLOCK_VALUE, DBG_CLOCK): New.
--

To actually use log_clock you need to enable the code in
logginc.c:log_check() and link against librt.  --debug 4096 may then
be used to enable it at runtime.
This commit is contained in:
Werner Koch 2013-01-07 16:51:24 +01:00
parent fb31462e7e
commit 0baedfd25a
5 changed files with 43 additions and 2 deletions

View File

@ -857,6 +857,33 @@ log_printhex (const char *text, const void *buffer, size_t length)
} }
void
log_clock (const char *string)
{
#if 0
static unsigned long long initial;
struct timespec tv;
unsigned long long now;
if (clock_gettime (CLOCK_REALTIME, &tv))
{
log_debug ("error getting the realtime clock value\n");
return;
}
now = tv.tv_sec * 1000000000ull;
now += tv.tv_nsec;
if (!initial)
initial = now;
log_debug ("[%llu] %s", now - initial, string);
#else
/* You need to link with -ltr to enable the above code. */
log_debug ("[not enabled in the source] %s", string);
#endif
}
#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 5 ) #if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 5 )
void void
bug_at( const char *file, int line, const char *func ) bug_at( const char *file, int line, const char *func )

View File

@ -96,5 +96,7 @@ void log_flush (void);
by the hexdump and a final LF. */ by the hexdump and a final LF. */
void log_printhex (const char *text, const void *buffer, size_t length); void log_printhex (const char *text, const void *buffer, size_t length);
void log_clock (const char *string);
#endif /*LIBJNLIB_LOGGING_H*/ #endif /*LIBJNLIB_LOGGING_H*/

View File

@ -1029,7 +1029,7 @@ set_debug (const char *level)
gcry_control (GCRYCTL_SET_VERBOSITY, (int)opt.verbose); gcry_control (GCRYCTL_SET_VERBOSITY, (int)opt.verbose);
if (opt.debug) if (opt.debug)
log_info ("enabled debug flags:%s%s%s%s%s%s%s%s%s%s%s%s%s\n", log_info ("enabled debug flags:%s%s%s%s%s%s%s%s%s%s%s%s%s%s\n",
(opt.debug & DBG_PACKET_VALUE )? " packet":"", (opt.debug & DBG_PACKET_VALUE )? " packet":"",
(opt.debug & DBG_MPI_VALUE )? " mpi":"", (opt.debug & DBG_MPI_VALUE )? " mpi":"",
(opt.debug & DBG_CIPHER_VALUE )? " cipher":"", (opt.debug & DBG_CIPHER_VALUE )? " cipher":"",
@ -1042,7 +1042,8 @@ set_debug (const char *level)
(opt.debug & DBG_HASHING_VALUE)? " hashing":"", (opt.debug & DBG_HASHING_VALUE)? " hashing":"",
(opt.debug & DBG_EXTPROG_VALUE)? " extprog":"", (opt.debug & DBG_EXTPROG_VALUE)? " extprog":"",
(opt.debug & DBG_CARD_IO_VALUE)? " cardio":"", (opt.debug & DBG_CARD_IO_VALUE)? " cardio":"",
(opt.debug & DBG_ASSUAN_VALUE )? " assuan":""); (opt.debug & DBG_ASSUAN_VALUE )? " assuan":"",
(opt.debug & DBG_CLOCK_VALUE )? " clock":"");
} }
@ -3114,6 +3115,8 @@ main (int argc, char **argv)
} }
set_debug (debug_level); set_debug (debug_level);
if (DBG_CLOCK)
log_clock ("start");
/* Do these after the switch(), so they can override settings. */ /* Do these after the switch(), so they can override settings. */
if(PGP2) if(PGP2)
@ -4097,6 +4100,8 @@ void
g10_exit( int rc ) g10_exit( int rc )
{ {
gcry_control (GCRYCTL_UPDATE_RANDOM_SEED_FILE); gcry_control (GCRYCTL_UPDATE_RANDOM_SEED_FILE);
if (DBG_CLOCK)
log_clock ("stop");
if ( (opt.debug & DBG_MEMSTAT_VALUE) ) if ( (opt.debug & DBG_MEMSTAT_VALUE) )
{ {
gcry_control (GCRYCTL_DUMP_MEMORY_STATS); gcry_control (GCRYCTL_DUMP_MEMORY_STATS);

View File

@ -1156,6 +1156,9 @@ keydb_search2 (KEYDB_HANDLE hd, KEYDB_SEARCH_DESC *desc,
if (!hd) if (!hd)
return gpg_error (GPG_ERR_INV_ARG); return gpg_error (GPG_ERR_INV_ARG);
if (DBG_CLOCK)
log_clock ("keydb_search enter");
rc = -1; rc = -1;
while ((rc == -1 || gpg_err_code (rc) == GPG_ERR_EOF) while ((rc == -1 || gpg_err_code (rc) == GPG_ERR_EOF)
&& hd->current >= 0 && hd->current < hd->used) && hd->current >= 0 && hd->current < hd->used)
@ -1182,6 +1185,8 @@ keydb_search2 (KEYDB_HANDLE hd, KEYDB_SEARCH_DESC *desc,
hd->found = hd->current; hd->found = hd->current;
} }
if (DBG_CLOCK)
log_clock ("keydb_search leave");
return ((rc == -1 || gpg_err_code (rc) == GPG_ERR_EOF) return ((rc == -1 || gpg_err_code (rc) == GPG_ERR_EOF)
? gpg_error (GPG_ERR_NOT_FOUND) ? gpg_error (GPG_ERR_NOT_FOUND)
: rc); : rc);

View File

@ -271,6 +271,7 @@ struct {
#define DBG_HASHING_VALUE 512 /* debug hashing operations */ #define DBG_HASHING_VALUE 512 /* debug hashing operations */
#define DBG_EXTPROG_VALUE 1024 /* debug external program calls */ #define DBG_EXTPROG_VALUE 1024 /* debug external program calls */
#define DBG_CARD_IO_VALUE 2048 /* debug smart card I/O. */ #define DBG_CARD_IO_VALUE 2048 /* debug smart card I/O. */
#define DBG_CLOCK_VALUE 4096
/* Fixme: For now alias this value. */ /* Fixme: For now alias this value. */
#define DBG_ASSUAN_VALUE DBG_EXTPROG_VALUE #define DBG_ASSUAN_VALUE DBG_EXTPROG_VALUE
@ -286,6 +287,7 @@ struct {
#define DBG_EXTPROG (opt.debug & DBG_EXTPROG_VALUE) #define DBG_EXTPROG (opt.debug & DBG_EXTPROG_VALUE)
#define DBG_CARD_IO (opt.debug & DBG_CARD_IO_VALUE) #define DBG_CARD_IO (opt.debug & DBG_CARD_IO_VALUE)
#define DBG_ASSUAN (opt.debug & DBG_ASSUAN_VALUE) #define DBG_ASSUAN (opt.debug & DBG_ASSUAN_VALUE)
#define DBG_CLOCK (opt.debug & DBG_CLOCK_VALUE)
/* FIXME: We need to check whey we did not put this into opt. */ /* FIXME: We need to check whey we did not put this into opt. */
#define DBG_MEMORY memory_debug_mode #define DBG_MEMORY memory_debug_mode