source: rtems-libbsd/rtemsbsd/rtems/rtems-kvm.c @ bceabc9

4.1155-freebsd-126-freebsd-12freebsd-9.3
Last change on this file since bceabc9 was bceabc9, checked in by Sebastian Huber <sebastian.huber@…>, on 10/09/13 at 20:42:09

Move files to match FreeBSD layout

  • Property mode set to 100644
File size: 1.6 KB
Line 
1#include "port_before.h"
2#include <sys/cdefs.h>
3#include <kvm.h>
4#include <nlist.h>
5#include <assert.h>
6
7#include "kvm_private.h"
8
9char *
10kvm_geterr(
11        kvm_t *kd
12)
13{
14        return "KVM error";
15        // return (kd->errbuf);
16}
17
18kvm_t *
19kvm_openfiles(
20        const char *uf,
21        const char *mf,
22        const char *sf __unused,
23        int flag,
24        char *errout
25)
26{
27  return (kvm_t *)kvm_openfiles;
28}
29
30int
31kvm_nlist(kvm_t *kd, struct nlist *nl)
32{
33        struct nlist *p;
34        int nvalid;
35        int error;
36        kvm_symval_t *kvm;
37
38        assert( kd != NULL );
39        assert( nl != NULL );
40
41        nvalid = 0;
42again:
43        for (p = nl; p->n_name && p->n_name[0]; ++p) {
44                if (p->n_type != N_UNDF)
45                        continue;
46                if (p->n_name[0] != '_')
47                        continue;
48             
49                for (kvm=rtems_kvm_symbols; kvm->symbol[0]; ++kvm) {
50                        if (!strcmp(p->n_name, kvm->symbol)) {
51                                p->n_type = N_TEXT;
52                                p->n_other = 0;
53                                p->n_desc = 0;
54                                p->n_value = kvm->value;
55                                if (kvm->value) {
56                                        ++nvalid;
57                // printf("kvm: %s = %p\n", p->n_name, (void*)kvm->value);
58                                }
59                                break;
60                        }
61                }
62                if (! kvm->symbol[0]) {
63                        printf("kvm: did not know about %s\n", p->n_name);
64                }
65        }
66
67        error = ((p - nl) - nvalid);
68        return (error);
69
70}
71
72
73ssize_t
74kvm_read(kd, kva, buf, len)
75        kvm_t *kd;
76        u_long kva;
77        void *buf;
78        size_t len;
79{
80        assert( kd != NULL );
81        assert( buf != NULL );
82
83        if ( kva == 0 )
84                return (-1);
85
86#ifdef __rtems__
87        // printf( "%d from %p to %p\n", len, (void*)kva, buf);
88#endif
89#if 0
90        /*
91         * Use a byte-wide copy to avoid alignment issues.
92         */
93        {
94                unsigned char *s;
95                unsigned char *d;
96                size_t c;
97
98                s = (void *)kva;
99                d = buf;
100                for (c=0; c<len ; c++)
101                        *d++ = *s++;
102        }
103#else
104        memcpy(buf, (void *)kva, len);
105#endif
106        return len;
107}
Note: See TracBrowser for help on using the repository browser.