runtime/ffi/ffi_type.c - ktap

Global variables defined

Macros defined

Source code

  1. #include "../../include/ktap_ffi.h"
  2. #ifdef __KERNEL__
  3. #include <linux/types.h>
  4. #else
  5. #include <stdint.h>
  6. #include <stddef.h>
  7. #endif

  8. #define CTYPE_MODE_HELPER(name, type)    \
  9. struct _##name##_align {        \
  10.     type t1;            \
  11.     char c;                \
  12.     type t2;            \
  13. };

  14. #define CTYPE_MODE(name)                \
  15. {                            \
  16.     offsetof(struct _##name##_align, c),        \
  17.     offsetof(struct _##name##_align, t2) -        \
  18.         offsetof(struct _##name##_align, c),    \
  19.     #name                    \
  20. }

  21. #define CTYPE_MODE_NAME(name) _##name##_mode

  22. /* ffi_ctype_mode should be corresponded to ffi_ctype */
  23. CTYPE_MODE_HELPER(uint8, uint8_t);
  24. CTYPE_MODE_HELPER(int8, int8_t);
  25. CTYPE_MODE_HELPER(uint16, uint16_t);
  26. CTYPE_MODE_HELPER(int16, int16_t);
  27. CTYPE_MODE_HELPER(uint32, uint32_t);
  28. CTYPE_MODE_HELPER(int32, int32_t);
  29. CTYPE_MODE_HELPER(uint64, uint64_t);
  30. CTYPE_MODE_HELPER(int64, int64_t);
  31. CTYPE_MODE_HELPER(pointer, void*);

  32. const ffi_mode ffi_type_modes[NUM_FFI_TYPE+1] = {
  33.     {0, 1, "void"},
  34.     CTYPE_MODE(uint8),
  35.     CTYPE_MODE(int8),
  36.     CTYPE_MODE(uint16),
  37.     CTYPE_MODE(int16),
  38.     CTYPE_MODE(uint32),
  39.     CTYPE_MODE(int32),
  40.     CTYPE_MODE(uint64),
  41.     CTYPE_MODE(int64),
  42.     CTYPE_MODE(pointer),
  43.     {0, 1, "function"},
  44.     {0, 1, "struct"},
  45.     {0, 1, "union"},
  46.     {0, 1, "unknown"},
  47. };