MCPcopy Create free account
hub / github.com/MJx0/KittyMemoryEx / pread

Method pread

KittyMemoryEx/KittyIOFile.cpp:80–105  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

78}
79
80ssize_t KittyIOFile::pread(uintptr_t offset, void *buffer, size_t len)
81{
82 _error = 0;
83
84 if (_fd < 0)
85 return -1;
86
87 char *ptr = static_cast<char *>(buffer);
88 size_t total = 0;
89 while (total < len)
90 {
91 size_t toRead = std::min(len - total, _bufferSize);
92#ifdef __APPLE__
93 ssize_t n = KT_EINTR_RETRY(::pread(_fd, ptr + total, toRead, (off_t)(offset + total)));
94#else
95 ssize_t n = KT_EINTR_RETRY(::pread64(_fd, ptr + total, toRead, (off64_t)(offset + total)));
96#endif
97 if (n <= 0)
98 {
99 _error = (n < 0) ? errno : 0;
100 return total > 0 ? total : -1;
101 }
102 total += n;
103 }
104 return total;
105}
106
107ssize_t KittyIOFile::pwrite(uintptr_t offset, const void *buffer, size_t len)
108{

Callers 1

ReadMethod · 0.80

Calls

no outgoing calls

Tested by

no test coverage detected