The debugger API changed slightly.

git-svn-id: file:///srv/svn/repos/haiku/trunk/current@11626 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
Ingo Weinhold
2005-03-08 23:11:21 +00:00
parent bd5d59c4cc
commit cb01a20237
2 changed files with 11 additions and 13 deletions
+10 -12
View File
@@ -38,28 +38,25 @@ MemoryReader::Read(void *_address, void *_buffer, int32 size, int32 &bytesRead)
char *buffer = (char*)_buffer; char *buffer = (char*)_buffer;
bytesRead = 0; bytesRead = 0;
// If the region to be read crosses page boundaries, we split it up into
// smaller chunks.
while (size > 0) { while (size > 0) {
int32 toRead = size; int32 toRead = size;
if (toRead > B_MAX_READ_WRITE_MEMORY_SIZE) if (toRead > B_MAX_READ_WRITE_MEMORY_SIZE)
toRead = B_MAX_READ_WRITE_MEMORY_SIZE; toRead = B_MAX_READ_WRITE_MEMORY_SIZE;
if ((uint32)address % B_PAGE_SIZE + toRead > B_PAGE_SIZE)
toRead = B_PAGE_SIZE - (uint32)address % B_PAGE_SIZE;
status_t error = _Read(address, buffer, toRead); int32 actuallyRead = 0;
status_t error = _Read(address, buffer, toRead, actuallyRead);
// If reading fails, we only fail, if we haven't read something yet. // If reading fails, we only fail, if we haven't read anything yet.
if (error != B_OK) { if (error != B_OK) {
if (bytesRead > 0) if (bytesRead > 0)
return B_OK; return B_OK;
return error; return error;
} }
bytesRead += toRead; bytesRead += actuallyRead;
address += toRead; address += actuallyRead;
buffer += toRead; buffer += actuallyRead;
size -= toRead; size -= actuallyRead;
} }
return B_OK; return B_OK;
@@ -67,7 +64,7 @@ MemoryReader::Read(void *_address, void *_buffer, int32 size, int32 &bytesRead)
// _Read // _Read
status_t status_t
MemoryReader::_Read(void *address, void *buffer, int32 size) MemoryReader::_Read(void *address, void *buffer, int32 size, int32 &bytesRead)
{ {
// prepare message // prepare message
debug_nub_read_memory message; debug_nub_read_memory message;
@@ -99,7 +96,8 @@ MemoryReader::_Read(void *address, void *buffer, int32 size)
if (reply.error != B_OK) if (reply.error != B_OK)
return reply.error; return reply.error;
memcpy(buffer, reply.data, size); bytesRead = reply.size;
memcpy(buffer, reply.data, bytesRead);
return B_OK; return B_OK;
} }
+1 -1
View File
@@ -15,7 +15,7 @@ public:
status_t Read(void *address, void *buffer, int32 size, int32 &bytesRead); status_t Read(void *address, void *buffer, int32 size, int32 &bytesRead);
private: private:
status_t _Read(void *address, void *buffer, int32 size); status_t _Read(void *address, void *buffer, int32 size, int32 &bytesRead);
port_id fNubPort; port_id fNubPort;
port_id fReplyPort; port_id fReplyPort;