Back to index

glibc  2.9
Defines | Functions | Variables
speeds.c File Reference
#include <signal.h>
#include <stdio.h>
#include <sys/types.h>
#include <sys/times.h>

Go to the source code of this file.

Defines

#define NO_ITIMER
#define ITIME   10 /* Number of seconds to run test. */

Functions

char * crypt ()
char * fcrypt ()
void Stop ()
static void clearmem (char *start, int cnt)
 main ()

Variables

static int cnt
char * hz

Define Documentation

#define ITIME   10 /* Number of seconds to run test. */

Definition at line 40 of file speeds.c.

#define NO_ITIMER

Definition at line 25 of file speeds.c.


Function Documentation

static void clearmem ( char *  start,
int  cnt 
) [static]

Definition at line 72 of file speeds.c.

  { while(cnt--)
      *start++ = '\0';
  }

Here is the caller graph for this function:

char* crypt ( )
char * fcrypt ( )
main ( void  )

Definition at line 79 of file speeds.c.

{
   char *s;
#ifdef NO_ITIMER
    extern char *getenv();
#else
    struct itimerval itv;
#endif

#ifdef NO_ITIMER
    if ((hz = getenv("HZ")) == NULL) {
       fprintf(stderr, "HZ environment parameter undefined\n");
       exit(1);
    }
#endif

#ifdef FCRYPT
    printf("\n");
    printf("Warning: this version of the speed program may run slower when\n");
    printf("benchmarking UFC-crypt than previous versions. This is because it\n");
    printf("stresses the CPU hardware cache in order to get benchmark figures\n");
    printf("that corresponds closer to the performance that can be expected in\n");
    printf("a password cracker.\n\n");
#endif

    printf ("Running %s for %d seconds of virtual time ...\n",
#ifdef FCRYPT
    "UFC-crypt",
#else
    "crypt(libc)",
#endif
           ITIME);

#ifdef FCRYPT
    init_des ();
#endif

#ifdef NO_ITIMER
    signal(SIGALRM, Stop);
    switch (fork()) {
    case -1:
       perror("fork failed");
       exit(1);
    case 0:
       sleep(10);
       kill(getppid(), SIGALRM);
       exit(0);
    default:
       (void) times(&tstart);
    }
#else
    clearmem ((char*)&itv, (int)sizeof (itv));
    signal (SIGVTALRM, Stop);
    itv.it_value.tv_sec = ITIME;
    itv.it_value.tv_usec = 0;
    setitimer (ITIMER_VIRTUAL, &itv, NULL);
#endif


    s = "fredred";
    for (cnt = 0;; cnt++)
    {
#ifdef FCRYPT
       s = fcrypt (s, "eek");
#else
       s = crypt (s, "eek");
#endif
    }
}

Here is the call graph for this function:

void Stop ( )

Definition at line 45 of file speeds.c.

{
    double elapsed;
#ifdef NO_ITIMER
    (void) times(&tfinish);
    elapsed = ((tfinish.tms_utime + tfinish.tms_stime) -
       (tstart.tms_utime + tstart.tms_stime)) / atoi(hz);
    printf("elapsed time = %d sec,  CPU time = %f sec\n", ITIME, elapsed);
#else
    elapsed = ITIME;
#endif
    printf ("Did %f %s()s per second.\n", ((float) cnt) / elapsed,
#if defined(FCRYPT)
           "fcrypt"
#else
           "crypt"
#endif
    );
    exit (0);
}

Here is the call graph for this function:

Here is the caller graph for this function:


Variable Documentation

int cnt [static]

Definition at line 35 of file speeds.c.

char* hz

Definition at line 37 of file speeds.c.