annotate lib/tru-knlist-demo.c @ 2962:08a841b1a567

*** empty log message ***
author Jim Meyering <jim@meyering.net>
date Sun, 05 Nov 2000 10:12:25 +0000
parents 6f34939d48af
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
2961
6f34939d48af *** empty log message ***
Jim Meyering <jim@meyering.net>
parents: 2960
diff changeset
1 /* Derived from the example in the OSF1 knlist manpage.
6f34939d48af *** empty log message ***
Jim Meyering <jim@meyering.net>
parents: 2960
diff changeset
2 OSF1 spe154.testdrive.compaq.com V5.0 1094 alpha
6f34939d48af *** empty log message ***
Jim Meyering <jim@meyering.net>
parents: 2960
diff changeset
3 aka (w/my private hostname compaq-tru64-50a) */
2960
2b6b3728f6f6 *** empty log message ***
Jim Meyering <jim@meyering.net>
parents:
diff changeset
4 #include <stdio.h>
2b6b3728f6f6 *** empty log message ***
Jim Meyering <jim@meyering.net>
parents:
diff changeset
5 #include <string.h>
2b6b3728f6f6 *** empty log message ***
Jim Meyering <jim@meyering.net>
parents:
diff changeset
6 #include <stdlib.h>
2b6b3728f6f6 *** empty log message ***
Jim Meyering <jim@meyering.net>
parents:
diff changeset
7 #include <nlist.h>
2962
08a841b1a567 *** empty log message ***
Jim Meyering <jim@meyering.net>
parents: 2961
diff changeset
8
08a841b1a567 *** empty log message ***
Jim Meyering <jim@meyering.net>
parents: 2961
diff changeset
9 #ifndef FD_CLOEXEC
08a841b1a567 *** empty log message ***
Jim Meyering <jim@meyering.net>
parents: 2961
diff changeset
10 # define FD_CLOEXEC 1
08a841b1a567 *** empty log message ***
Jim Meyering <jim@meyering.net>
parents: 2961
diff changeset
11 #endif
08a841b1a567 *** empty log message ***
Jim Meyering <jim@meyering.net>
parents: 2961
diff changeset
12
08a841b1a567 *** empty log message ***
Jim Meyering <jim@meyering.net>
parents: 2961
diff changeset
13 #ifndef LDAV_SYMBOL
08a841b1a567 *** empty log message ***
Jim Meyering <jim@meyering.net>
parents: 2961
diff changeset
14 # define LDAV_SYMBOL "_avenrun"
08a841b1a567 *** empty log message ***
Jim Meyering <jim@meyering.net>
parents: 2961
diff changeset
15 #endif
08a841b1a567 *** empty log message ***
Jim Meyering <jim@meyering.net>
parents: 2961
diff changeset
16
08a841b1a567 *** empty log message ***
Jim Meyering <jim@meyering.net>
parents: 2961
diff changeset
17 int
2960
2b6b3728f6f6 *** empty log message ***
Jim Meyering <jim@meyering.net>
parents:
diff changeset
18 main ()
2b6b3728f6f6 *** empty log message ***
Jim Meyering <jim@meyering.net>
parents:
diff changeset
19 {
2962
08a841b1a567 *** empty log message ***
Jim Meyering <jim@meyering.net>
parents: 2961
diff changeset
20 struct nlist nl[2];
08a841b1a567 *** empty log message ***
Jim Meyering <jim@meyering.net>
parents: 2961
diff changeset
21 int retval;
08a841b1a567 *** empty log message ***
Jim Meyering <jim@meyering.net>
parents: 2961
diff changeset
22 long offset;
2960
2b6b3728f6f6 *** empty log message ***
Jim Meyering <jim@meyering.net>
parents:
diff changeset
23
2962
08a841b1a567 *** empty log message ***
Jim Meyering <jim@meyering.net>
parents: 2961
diff changeset
24 nl[0].n_name = LDAV_SYMBOL;
08a841b1a567 *** empty log message ***
Jim Meyering <jim@meyering.net>
parents: 2961
diff changeset
25 nl[1].n_name = "";
2960
2b6b3728f6f6 *** empty log message ***
Jim Meyering <jim@meyering.net>
parents:
diff changeset
26
2b6b3728f6f6 *** empty log message ***
Jim Meyering <jim@meyering.net>
parents:
diff changeset
27 /*******************************************************/
2b6b3728f6f6 *** empty log message ***
Jim Meyering <jim@meyering.net>
parents:
diff changeset
28 /* Call the knlist routine */
2962
08a841b1a567 *** empty log message ***
Jim Meyering <jim@meyering.net>
parents: 2961
diff changeset
29 retval = knlist (nl);
2960
2b6b3728f6f6 *** empty log message ***
Jim Meyering <jim@meyering.net>
parents:
diff changeset
30
2b6b3728f6f6 *** empty log message ***
Jim Meyering <jim@meyering.net>
parents:
diff changeset
31 /******************************************************/
2b6b3728f6f6 *** empty log message ***
Jim Meyering <jim@meyering.net>
parents:
diff changeset
32 /* Display addresses if returned. Otherwise, display */
2b6b3728f6f6 *** empty log message ***
Jim Meyering <jim@meyering.net>
parents:
diff changeset
33 /* the appropriate error message. */
2b6b3728f6f6 *** empty log message ***
Jim Meyering <jim@meyering.net>
parents:
diff changeset
34 if (retval < 0)
2962
08a841b1a567 *** empty log message ***
Jim Meyering <jim@meyering.net>
parents: 2961
diff changeset
35 {
08a841b1a567 *** empty log message ***
Jim Meyering <jim@meyering.net>
parents: 2961
diff changeset
36 printf ("No kernel symbol addresses returned.\n");
08a841b1a567 *** empty log message ***
Jim Meyering <jim@meyering.net>
parents: 2961
diff changeset
37 exit (1);
08a841b1a567 *** empty log message ***
Jim Meyering <jim@meyering.net>
parents: 2961
diff changeset
38 }
08a841b1a567 *** empty log message ***
Jim Meyering <jim@meyering.net>
parents: 2961
diff changeset
39
08a841b1a567 *** empty log message ***
Jim Meyering <jim@meyering.net>
parents: 2961
diff changeset
40 if (nl[0].n_type == 0)
08a841b1a567 *** empty log message ***
Jim Meyering <jim@meyering.net>
parents: 2961
diff changeset
41 {
08a841b1a567 *** empty log message ***
Jim Meyering <jim@meyering.net>
parents: 2961
diff changeset
42 printf ("Unable to return address of symbol %s\n", nl[0].n_name);
08a841b1a567 *** empty log message ***
Jim Meyering <jim@meyering.net>
parents: 2961
diff changeset
43 exit (1);
08a841b1a567 *** empty log message ***
Jim Meyering <jim@meyering.net>
parents: 2961
diff changeset
44 }
08a841b1a567 *** empty log message ***
Jim Meyering <jim@meyering.net>
parents: 2961
diff changeset
45
08a841b1a567 *** empty log message ***
Jim Meyering <jim@meyering.net>
parents: 2961
diff changeset
46 offset = nl[0].n_value;
08a841b1a567 *** empty log message ***
Jim Meyering <jim@meyering.net>
parents: 2961
diff changeset
47 printf ("The address of symbol %s is %lx\n", nl[0].n_name, offset);
08a841b1a567 *** empty log message ***
Jim Meyering <jim@meyering.net>
parents: 2961
diff changeset
48
08a841b1a567 *** empty log message ***
Jim Meyering <jim@meyering.net>
parents: 2961
diff changeset
49 {
08a841b1a567 *** empty log message ***
Jim Meyering <jim@meyering.net>
parents: 2961
diff changeset
50 double load_ave[3];
08a841b1a567 *** empty log message ***
Jim Meyering <jim@meyering.net>
parents: 2961
diff changeset
51 int channel = open ("/dev/kmem", 0);
08a841b1a567 *** empty log message ***
Jim Meyering <jim@meyering.net>
parents: 2961
diff changeset
52 if (channel < 0)
08a841b1a567 *** empty log message ***
Jim Meyering <jim@meyering.net>
parents: 2961
diff changeset
53 {
08a841b1a567 *** empty log message ***
Jim Meyering <jim@meyering.net>
parents: 2961
diff changeset
54 printf ("open failed\n");
08a841b1a567 *** empty log message ***
Jim Meyering <jim@meyering.net>
parents: 2961
diff changeset
55 exit (1);
08a841b1a567 *** empty log message ***
Jim Meyering <jim@meyering.net>
parents: 2961
diff changeset
56 }
08a841b1a567 *** empty log message ***
Jim Meyering <jim@meyering.net>
parents: 2961
diff changeset
57 #ifdef FD_SETFD
08a841b1a567 *** empty log message ***
Jim Meyering <jim@meyering.net>
parents: 2961
diff changeset
58 (void) fcntl (channel, F_SETFD, FD_CLOEXEC);
08a841b1a567 *** empty log message ***
Jim Meyering <jim@meyering.net>
parents: 2961
diff changeset
59 #endif
08a841b1a567 *** empty log message ***
Jim Meyering <jim@meyering.net>
parents: 2961
diff changeset
60
08a841b1a567 *** empty log message ***
Jim Meyering <jim@meyering.net>
parents: 2961
diff changeset
61 if (lseek (channel, offset, 0) == -1L
08a841b1a567 *** empty log message ***
Jim Meyering <jim@meyering.net>
parents: 2961
diff changeset
62 || read (channel, (char *) load_ave, sizeof (load_ave))
08a841b1a567 *** empty log message ***
Jim Meyering <jim@meyering.net>
parents: 2961
diff changeset
63 != sizeof (load_ave))
08a841b1a567 *** empty log message ***
Jim Meyering <jim@meyering.net>
parents: 2961
diff changeset
64 {
08a841b1a567 *** empty log message ***
Jim Meyering <jim@meyering.net>
parents: 2961
diff changeset
65 close (channel);
08a841b1a567 *** empty log message ***
Jim Meyering <jim@meyering.net>
parents: 2961
diff changeset
66 }
08a841b1a567 *** empty log message ***
Jim Meyering <jim@meyering.net>
parents: 2961
diff changeset
67 }
08a841b1a567 *** empty log message ***
Jim Meyering <jim@meyering.net>
parents: 2961
diff changeset
68
08a841b1a567 *** empty log message ***
Jim Meyering <jim@meyering.net>
parents: 2961
diff changeset
69 exit (0);
2960
2b6b3728f6f6 *** empty log message ***
Jim Meyering <jim@meyering.net>
parents:
diff changeset
70 }