bpf_mem_alloc.h 862 B

12345678910111213141516171819202122232425262728
  1. /* SPDX-License-Identifier: GPL-2.0-only */
  2. /* Copyright (c) 2022 Meta Platforms, Inc. and affiliates. */
  3. #ifndef _BPF_MEM_ALLOC_H
  4. #define _BPF_MEM_ALLOC_H
  5. #include <linux/compiler_types.h>
  6. #include <linux/workqueue.h>
  7. struct bpf_mem_cache;
  8. struct bpf_mem_caches;
  9. struct bpf_mem_alloc {
  10. struct bpf_mem_caches __percpu *caches;
  11. struct bpf_mem_cache __percpu *cache;
  12. struct work_struct work;
  13. };
  14. int bpf_mem_alloc_init(struct bpf_mem_alloc *ma, int size, bool percpu);
  15. void bpf_mem_alloc_destroy(struct bpf_mem_alloc *ma);
  16. /* kmalloc/kfree equivalent: */
  17. void *bpf_mem_alloc(struct bpf_mem_alloc *ma, size_t size);
  18. void bpf_mem_free(struct bpf_mem_alloc *ma, void *ptr);
  19. /* kmem_cache_alloc/free equivalent: */
  20. void *bpf_mem_cache_alloc(struct bpf_mem_alloc *ma);
  21. void bpf_mem_cache_free(struct bpf_mem_alloc *ma, void *ptr);
  22. #endif /* _BPF_MEM_ALLOC_H */