uptr_test_common.h 1.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. /* SPDX-License-Identifier: GPL-2.0 */
  2. /* Copyright (c) 2024 Meta Platforms, Inc. and affiliates. */
  3. #ifndef _UPTR_TEST_COMMON_H
  4. #define _UPTR_TEST_COMMON_H
  5. #define MAGIC_VALUE 0xabcd1234
  6. #define PAGE_SIZE 4096
  7. #ifdef __BPF__
  8. /* Avoid fwd btf type being generated for the following struct */
  9. struct large_data *dummy_large_data;
  10. struct empty_data *dummy_empty_data;
  11. struct user_data *dummy_data;
  12. struct cgroup *dummy_cgrp;
  13. #else
  14. #define __uptr
  15. #define __kptr
  16. #endif
  17. struct user_data {
  18. int a;
  19. int b;
  20. int result;
  21. int nested_result;
  22. };
  23. struct nested_udata {
  24. struct user_data __uptr *udata;
  25. };
  26. struct value_type {
  27. struct user_data __uptr *udata;
  28. struct cgroup __kptr *cgrp;
  29. struct nested_udata nested;
  30. };
  31. struct value_lock_type {
  32. struct user_data __uptr *udata;
  33. struct bpf_spin_lock lock;
  34. };
  35. struct large_data {
  36. __u8 one_page[PAGE_SIZE];
  37. int a;
  38. };
  39. struct large_uptr {
  40. struct large_data __uptr *udata;
  41. };
  42. struct empty_data {
  43. };
  44. struct empty_uptr {
  45. struct empty_data __uptr *udata;
  46. };
  47. struct kstruct_uptr {
  48. struct cgroup __uptr *cgrp;
  49. };
  50. #endif