/* Reserve the same page twice, should return -EBUSY. */
SEC("syscall")
__success __retval(0) int reserve_twice(void *ctx)
{ #ifdefined(__BPF_FEATURE_ADDR_SPACE_CAST) char __arena *page; int ret;
page = arena_base(&arena);
ret = bpf_arena_reserve_pages(&arena, page, 1); if (ret) return 1;
ret = bpf_arena_reserve_pages(&arena, page, 1); if (ret != -EBUSY) return 2; #endif return 0;
}
/* Try to reserve past the end of the arena. */
SEC("syscall")
__success __retval(0) int reserve_invalid_region(void *ctx)
{ #ifdefined(__BPF_FEATURE_ADDR_SPACE_CAST) char __arena *page; int ret;
/* Try a NULL pointer. */
ret = bpf_arena_reserve_pages(&arena, NULL, 3); if (ret != -EINVAL) return 1;
page = arena_base(&arena);
ret = bpf_arena_reserve_pages(&arena, page, 3); if (ret != -EINVAL) return 2;
ret = bpf_arena_reserve_pages(&arena, page, 4096); if (ret != -EINVAL) return 3;
ret = bpf_arena_reserve_pages(&arena, page, (1ULL << 32) - 1); if (ret != -EINVAL) return 4; #endif return 0;
}
¤ Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.0.21Bemerkung:
(vorverarbeitet)
¤
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.