/* Generated by the protocol buffer compiler.  DO NOT EDIT! */
/* Generated from: criu-amdgpu.proto */

#ifndef PROTOBUF_C_criu_2damdgpu_2eproto__INCLUDED
#define PROTOBUF_C_criu_2damdgpu_2eproto__INCLUDED

#include <protobuf-c/protobuf-c.h>

PROTOBUF_C__BEGIN_DECLS

#if PROTOBUF_C_VERSION_NUMBER < 1003000
# error This file was generated by a newer version of protobuf-c which is incompatible with your libprotobuf-c headers. Please update your headers.
#elif 1005002 < PROTOBUF_C_MIN_COMPILER_VERSION
# error This file was generated by an older version of protobuf-c which is incompatible with your libprotobuf-c headers. Please regenerate this file with a newer version of protobuf-c.
#endif


typedef struct DevIolink DevIolink;
typedef struct KfdDeviceEntry KfdDeviceEntry;
typedef struct KfdBoEntry KfdBoEntry;
typedef struct CriuKfd CriuKfd;
typedef struct CriuRenderNode CriuRenderNode;


/* --- enums --- */


/* --- messages --- */

struct  DevIolink
{
  ProtobufCMessage base;
  uint32_t type;
  uint32_t node_to_id;
};
#define DEV_IOLINK__INIT \
 { PROTOBUF_C_MESSAGE_INIT (&dev_iolink__descriptor) \
, 0, 0 }


struct  KfdDeviceEntry
{
  ProtobufCMessage base;
  uint32_t node_id;
  uint32_t gpu_id;
  uint32_t cpu_cores_count;
  uint32_t simd_count;
  uint32_t mem_banks_count;
  uint32_t caches_count;
  uint32_t io_links_count;
  uint32_t max_waves_per_simd;
  uint32_t lds_size_in_kb;
  uint32_t gds_size_in_kb;
  uint32_t num_gws;
  uint32_t wave_front_size;
  uint32_t array_count;
  uint32_t simd_arrays_per_engine;
  uint32_t cu_per_simd_array;
  uint32_t simd_per_cu;
  uint32_t max_slots_scratch_cu;
  uint32_t vendor_id;
  uint32_t device_id;
  uint32_t domain;
  uint32_t drm_render_minor;
  uint64_t hive_id;
  uint32_t num_sdma_engines;
  uint32_t num_sdma_xgmi_engines;
  uint32_t num_sdma_queues_per_engine;
  uint32_t num_cp_queues;
  uint32_t fw_version;
  uint32_t capability;
  uint32_t sdma_fw_version;
  uint32_t vram_public;
  uint64_t vram_size;
  size_t n_iolinks;
  DevIolink **iolinks;
};
#define KFD_DEVICE_ENTRY__INIT \
 { PROTOBUF_C_MESSAGE_INIT (&kfd_device_entry__descriptor) \
, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,NULL }


struct  KfdBoEntry
{
  ProtobufCMessage base;
  uint64_t addr;
  uint64_t size;
  uint64_t offset;
  uint32_t alloc_flags;
  uint32_t gpu_id;
};
#define KFD_BO_ENTRY__INIT \
 { PROTOBUF_C_MESSAGE_INIT (&kfd_bo_entry__descriptor) \
, 0, 0, 0, 0, 0 }


struct  CriuKfd
{
  ProtobufCMessage base;
  uint32_t pid;
  uint32_t num_of_gpus;
  uint32_t num_of_cpus;
  size_t n_device_entries;
  KfdDeviceEntry **device_entries;
  uint64_t num_of_bos;
  size_t n_bo_entries;
  KfdBoEntry **bo_entries;
  uint32_t num_of_objects;
  uint64_t shared_mem_size;
  uint32_t shared_mem_magic;
  ProtobufCBinaryData priv_data;
};
#define CRIU_KFD__INIT \
 { PROTOBUF_C_MESSAGE_INIT (&criu_kfd__descriptor) \
, 0, 0, 0, 0,NULL, 0, 0,NULL, 0, 0, 0, {0,NULL} }


struct  CriuRenderNode
{
  ProtobufCMessage base;
  uint32_t gpu_id;
};
#define CRIU_RENDER_NODE__INIT \
 { PROTOBUF_C_MESSAGE_INIT (&criu_render_node__descriptor) \
, 0 }


/* DevIolink methods */
void   dev_iolink__init
                     (DevIolink         *message);
size_t dev_iolink__get_packed_size
                     (const DevIolink   *message);
size_t dev_iolink__pack
                     (const DevIolink   *message,
                      uint8_t             *out);
size_t dev_iolink__pack_to_buffer
                     (const DevIolink   *message,
                      ProtobufCBuffer     *buffer);
DevIolink *
       dev_iolink__unpack
                     (ProtobufCAllocator  *allocator,
                      size_t               len,
                      const uint8_t       *data);
void   dev_iolink__free_unpacked
                     (DevIolink *message,
                      ProtobufCAllocator *allocator);
/* KfdDeviceEntry methods */
void   kfd_device_entry__init
                     (KfdDeviceEntry         *message);
size_t kfd_device_entry__get_packed_size
                     (const KfdDeviceEntry   *message);
size_t kfd_device_entry__pack
                     (const KfdDeviceEntry   *message,
                      uint8_t             *out);
size_t kfd_device_entry__pack_to_buffer
                     (const KfdDeviceEntry   *message,
                      ProtobufCBuffer     *buffer);
KfdDeviceEntry *
       kfd_device_entry__unpack
                     (ProtobufCAllocator  *allocator,
                      size_t               len,
                      const uint8_t       *data);
void   kfd_device_entry__free_unpacked
                     (KfdDeviceEntry *message,
                      ProtobufCAllocator *allocator);
/* KfdBoEntry methods */
void   kfd_bo_entry__init
                     (KfdBoEntry         *message);
size_t kfd_bo_entry__get_packed_size
                     (const KfdBoEntry   *message);
size_t kfd_bo_entry__pack
                     (const KfdBoEntry   *message,
                      uint8_t             *out);
size_t kfd_bo_entry__pack_to_buffer
                     (const KfdBoEntry   *message,
                      ProtobufCBuffer     *buffer);
KfdBoEntry *
       kfd_bo_entry__unpack
                     (ProtobufCAllocator  *allocator,
                      size_t               len,
                      const uint8_t       *data);
void   kfd_bo_entry__free_unpacked
                     (KfdBoEntry *message,
                      ProtobufCAllocator *allocator);
/* CriuKfd methods */
void   criu_kfd__init
                     (CriuKfd         *message);
size_t criu_kfd__get_packed_size
                     (const CriuKfd   *message);
size_t criu_kfd__pack
                     (const CriuKfd   *message,
                      uint8_t             *out);
size_t criu_kfd__pack_to_buffer
                     (const CriuKfd   *message,
                      ProtobufCBuffer     *buffer);
CriuKfd *
       criu_kfd__unpack
                     (ProtobufCAllocator  *allocator,
                      size_t               len,
                      const uint8_t       *data);
void   criu_kfd__free_unpacked
                     (CriuKfd *message,
                      ProtobufCAllocator *allocator);
/* CriuRenderNode methods */
void   criu_render_node__init
                     (CriuRenderNode         *message);
size_t criu_render_node__get_packed_size
                     (const CriuRenderNode   *message);
size_t criu_render_node__pack
                     (const CriuRenderNode   *message,
                      uint8_t             *out);
size_t criu_render_node__pack_to_buffer
                     (const CriuRenderNode   *message,
                      ProtobufCBuffer     *buffer);
CriuRenderNode *
       criu_render_node__unpack
                     (ProtobufCAllocator  *allocator,
                      size_t               len,
                      const uint8_t       *data);
void   criu_render_node__free_unpacked
                     (CriuRenderNode *message,
                      ProtobufCAllocator *allocator);
/* --- per-message closures --- */

typedef void (*DevIolink_Closure)
                 (const DevIolink *message,
                  void *closure_data);
typedef void (*KfdDeviceEntry_Closure)
                 (const KfdDeviceEntry *message,
                  void *closure_data);
typedef void (*KfdBoEntry_Closure)
                 (const KfdBoEntry *message,
                  void *closure_data);
typedef void (*CriuKfd_Closure)
                 (const CriuKfd *message,
                  void *closure_data);
typedef void (*CriuRenderNode_Closure)
                 (const CriuRenderNode *message,
                  void *closure_data);

/* --- services --- */


/* --- descriptors --- */

extern const ProtobufCMessageDescriptor dev_iolink__descriptor;
extern const ProtobufCMessageDescriptor kfd_device_entry__descriptor;
extern const ProtobufCMessageDescriptor kfd_bo_entry__descriptor;
extern const ProtobufCMessageDescriptor criu_kfd__descriptor;
extern const ProtobufCMessageDescriptor criu_render_node__descriptor;

PROTOBUF_C__END_DECLS


#endif  /* PROTOBUF_C_criu_2damdgpu_2eproto__INCLUDED */
