dma: initialize queue structures
[dragonfly.git] / secure / lib / libcipher / test / speeddes.c
bloba5822362f107a3328daa0ea5c897e48bf81f4fc1
1 #include <sys/types.h>
2 #include <sys/time.h>
3 #include <sys/resource.h>
4 #include <signal.h>
5 #include <stdio.h>
7 int keep_going, count, alternate, seconds, iters;
8 struct rusage prior, now;
9 u_long block[3];
10 char *blk;
12 void
13 finish()
15 keep_going = 0;
19 main(int argc, char *argv[])
21 struct itimerval itv;
22 u_long msecs;
24 if (argc < 2 || sscanf(argv[1], "%d", &seconds) != 1)
25 seconds = 20;
27 if (argc < 3 || sscanf(argv[2], "%d", &iters) != 1)
28 iters = 1;
30 printf ("Running des_cipher( , , 0L, %d) for %d seconds of vtime...\n",
31 iters, seconds);
33 bzero(&itv, sizeof (itv));
34 signal (SIGVTALRM, finish);
35 itv.it_value.tv_sec = seconds;
36 itv.it_value.tv_usec = 0;
37 setitimer(ITIMER_VIRTUAL, &itv, NULL);
39 keep_going = 1;
40 if (getrusage(0, &prior) < 0) {
41 perror("getrusage");
42 exit(1);
45 blk = (char *) block;
46 (void)des_setkey(blk);
47 for (count = 0; keep_going; count++)
48 (void) des_cipher(blk, blk, 0, iters);
50 if (getrusage(0, &now) < 0) {
51 perror("getrusage");
52 exit(1);
55 msecs = (now.ru_utime.tv_sec - prior.ru_utime.tv_sec) * 1000
56 + (now.ru_utime.tv_usec - prior.ru_utime.tv_usec) / 1000;
57 printf ("Did %d encryptions per second, each of %d iteration(s).\n",
58 1000 * count / msecs, iters);
59 printf ("\tTotal %d blocks per second.\n", (1000*iters*count)/msecs);
60 exit(0);