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

Function db_read_bytes

freebsd/mips/mips/db_interface.c:142–182  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

140}
141
142int
143db_read_bytes(vm_offset_t addr, size_t size, char *data)
144{
145 jmp_buf jb;
146 void *prev_jb;
147 int ret;
148
149 prev_jb = kdb_jmpbuf(jb);
150 ret = setjmp(jb);
151 if (ret == 0) {
152 /*
153 * 'addr' could be a memory-mapped I/O address. Try to
154 * do atomic load/store in unit of size requested.
155 * size == 8 is only atomic on 64bit or n32 kernel.
156 */
157 if ((size == 2 || size == 4 || size == 8) &&
158 ((addr & (size -1)) == 0) &&
159 (((vm_offset_t)data & (size -1)) == 0)) {
160 switch (size) {
161 case 2:
162 *(uint16_t *)data = *(uint16_t *)addr;
163 break;
164 case 4:
165 *(uint32_t *)data = *(uint32_t *)addr;
166 break;
167 case 8:
168 *(uint64_t *)data = *(uint64_t *)addr;
169 break;
170 }
171 } else {
172 char *src;
173
174 src = (char *)addr;
175 while (size-- > 0)
176 *data++ = *src++;
177 }
178 }
179
180 (void)kdb_jmpbuf(prev_jb);
181 return (ret);
182}
183
184int
185db_write_bytes(vm_offset_t addr, size_t size, char *data)

Callers 1

db_disasmFunction · 0.70

Calls 2

kdb_jmpbufFunction · 0.85
setjmpFunction · 0.85

Tested by

no test coverage detected