Skip to content

Commit 24b3128

Browse files
authored
[k2] add mmap, madvise (#1514)
1 parent ae24027 commit 24b3128

2 files changed

Lines changed: 24 additions & 0 deletions

File tree

runtime-light/k2-platform/k2-api.h

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -216,6 +216,17 @@ inline size_t pread(k2::descriptor descriptor, std::span<std::byte> buffer, uint
216216
return k2_pread(descriptor, buffer.size(), static_cast<void*>(buffer.data()), offset);
217217
}
218218

219+
inline void* mmap(k2::descriptor* md, void* addr, size_t length, int32_t prot, int32_t flags, k2::descriptor fd, uint64_t offset) noexcept {
220+
return k2_mmap(md, addr, length, prot, flags, fd, offset);
221+
}
222+
223+
inline std::expected<void, int32_t> madvise(void* addr, size_t length, int32_t advise) noexcept {
224+
if (auto error_code{k2_madvise(addr, length, advise)}; error_code != k2::errno_ok) [[unlikely]] {
225+
return std::unexpected{error_code};
226+
}
227+
return {};
228+
}
229+
219230
inline void please_shutdown(k2::descriptor descriptor) noexcept {
220231
k2_please_shutdown(descriptor);
221232
}

runtime-light/k2-platform/k2-header.h

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -356,6 +356,19 @@ size_t k2_read(uint64_t stream_d, size_t buf_len, void* buf);
356356
*/
357357
size_t k2_pread(uint64_t stream_d, size_t buf_len, void* buf, uint64_t offset);
358358

359+
/**
360+
* Semantically equivalent to libc's `mmap` function.
361+
*
362+
* @param `md` A pointer to a `uint64_t` where the mmap descriptor will be stored upon success.
363+
* @param `addr` Must always be nullptr.
364+
*/
365+
void* k2_mmap(uint64_t* md, void* addr, size_t length, int32_t prot, int32_t flags, uint64_t fd, uint64_t offset);
366+
367+
/**
368+
* Semantically equivalent to libc's `madvise` function.
369+
*/
370+
int32_t k2_madvise(void* addr, size_t length, int32_t advise);
371+
359372
/**
360373
* Sets `StreamStatus.please_whutdown_write=true` for the component on the
361374
* opposite side (does not affect `StreamStatus` on your side).

0 commit comments

Comments
 (0)