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

55-freebsd-126-freebsd-12freebsd-9.3
Last change on this file since ce8c7bb was ce8c7bb, checked in by Sebastian Huber <sebastian.huber@…>, on 04/18/16 at 12:47:04

kvm: Include missing header file

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