MCPcopy Create free account
hub / github.com/F-Stack/f-stack / db_read_bytes

Function db_read_bytes

freebsd/arm64/arm64/db_interface.c:114–146  ·  view source on GitHub ↗

* Read bytes from kernel address space for debugger. */

Source from the content-addressed store, hash-verified

112 * Read bytes from kernel address space for debugger.
113 */
114int
115db_read_bytes(vm_offset_t addr, size_t size, char *data)
116{
117 jmp_buf jb;
118 void *prev_jb;
119 const char *src;
120 int ret;
121 uint64_t tmp64;
122 uint32_t tmp32;
123 uint16_t tmp16;
124
125 prev_jb = kdb_jmpbuf(jb);
126 ret = setjmp(jb);
127
128 if (ret == 0) {
129 src = (const char *)addr;
130 if (size == 8 && (addr & 7) == 0) {
131 tmp64 = *((const int *)src);
132 src = (const char *)&tmp64;
133 } else if (size == 4 && (addr & 3) == 0) {
134 tmp32 = *((const int *)src);
135 src = (const char *)&tmp32;
136 } else if (size == 2 && (addr & 1) == 0) {
137 tmp16 = *((const short *)src);
138 src = (const char *)&tmp16;
139 }
140 while (size-- > 0)
141 *data++ = *src++;
142 }
143 (void)kdb_jmpbuf(prev_jb);
144
145 return (ret);
146}
147
148/*
149 * Write bytes to kernel address space for debugger.

Callers

nothing calls this directly

Calls 2

kdb_jmpbufFunction · 0.85
setjmpFunction · 0.85

Tested by

no test coverage detected