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

#ifndef PROTOBUF_C_core_2ds390_2eproto__INCLUDED
#define PROTOBUF_C_core_2ds390_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

#include "opts.pb-c.h"

typedef struct UserS390RegsEntry UserS390RegsEntry;
typedef struct UserS390VxrsLowEntry UserS390VxrsLowEntry;
typedef struct UserS390VxrsHighEntry UserS390VxrsHighEntry;
typedef struct UserS390FpregsEntry UserS390FpregsEntry;
typedef struct UserS390GsCbEntry UserS390GsCbEntry;
typedef struct UserS390RiEntry UserS390RiEntry;
typedef struct ThreadInfoS390 ThreadInfoS390;


/* --- enums --- */


/* --- messages --- */

struct  UserS390RegsEntry
{
  ProtobufCMessage base;
  uint64_t psw_mask;
  uint64_t psw_addr;
  size_t n_gprs;
  uint64_t *gprs;
  size_t n_acrs;
  uint32_t *acrs;
  uint64_t orig_gpr2;
  uint32_t system_call;
};
#define USER_S390_REGS_ENTRY__INIT \
 { PROTOBUF_C_MESSAGE_INIT (&user_s390_regs_entry__descriptor) \
, 0, 0, 0,NULL, 0,NULL, 0, 0 }


struct  UserS390VxrsLowEntry
{
  ProtobufCMessage base;
  size_t n_regs;
  uint64_t *regs;
};
#define USER_S390_VXRS_LOW_ENTRY__INIT \
 { PROTOBUF_C_MESSAGE_INIT (&user_s390_vxrs_low_entry__descriptor) \
, 0,NULL }


/*
 * The vxrs_high registers have 128 bit:
 *   vxrs_high_0 = regs[0] << 64 | regs[1];
 *   vxrs_high_1 = regs[2] << 64 | regs[3];
 */
struct  UserS390VxrsHighEntry
{
  ProtobufCMessage base;
  size_t n_regs;
  uint64_t *regs;
};
#define USER_S390_VXRS_HIGH_ENTRY__INIT \
 { PROTOBUF_C_MESSAGE_INIT (&user_s390_vxrs_high_entry__descriptor) \
, 0,NULL }


struct  UserS390FpregsEntry
{
  ProtobufCMessage base;
  uint32_t fpc;
  size_t n_fprs;
  uint64_t *fprs;
};
#define USER_S390_FPREGS_ENTRY__INIT \
 { PROTOBUF_C_MESSAGE_INIT (&user_s390_fpregs_entry__descriptor) \
, 0, 0,NULL }


struct  UserS390GsCbEntry
{
  ProtobufCMessage base;
  size_t n_regs;
  uint64_t *regs;
};
#define USER_S390_GS_CB_ENTRY__INIT \
 { PROTOBUF_C_MESSAGE_INIT (&user_s390_gs_cb_entry__descriptor) \
, 0,NULL }


struct  UserS390RiEntry
{
  ProtobufCMessage base;
  uint32_t ri_on;
  size_t n_regs;
  uint64_t *regs;
};
#define USER_S390_RI_ENTRY__INIT \
 { PROTOBUF_C_MESSAGE_INIT (&user_s390_ri_entry__descriptor) \
, 0, 0,NULL }


struct  ThreadInfoS390
{
  ProtobufCMessage base;
  uint64_t clear_tid_addr;
  UserS390RegsEntry *gpregs;
  UserS390FpregsEntry *fpregs;
  UserS390VxrsLowEntry *vxrs_low;
  UserS390VxrsHighEntry *vxrs_high;
  UserS390GsCbEntry *gs_cb;
  UserS390GsCbEntry *gs_bc;
  UserS390RiEntry *ri_cb;
};
#define THREAD_INFO_S390__INIT \
 { PROTOBUF_C_MESSAGE_INIT (&thread_info_s390__descriptor) \
, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL }


/* UserS390RegsEntry methods */
void   user_s390_regs_entry__init
                     (UserS390RegsEntry         *message);
size_t user_s390_regs_entry__get_packed_size
                     (const UserS390RegsEntry   *message);
size_t user_s390_regs_entry__pack
                     (const UserS390RegsEntry   *message,
                      uint8_t             *out);
size_t user_s390_regs_entry__pack_to_buffer
                     (const UserS390RegsEntry   *message,
                      ProtobufCBuffer     *buffer);
UserS390RegsEntry *
       user_s390_regs_entry__unpack
                     (ProtobufCAllocator  *allocator,
                      size_t               len,
                      const uint8_t       *data);
void   user_s390_regs_entry__free_unpacked
                     (UserS390RegsEntry *message,
                      ProtobufCAllocator *allocator);
/* UserS390VxrsLowEntry methods */
void   user_s390_vxrs_low_entry__init
                     (UserS390VxrsLowEntry         *message);
size_t user_s390_vxrs_low_entry__get_packed_size
                     (const UserS390VxrsLowEntry   *message);
size_t user_s390_vxrs_low_entry__pack
                     (const UserS390VxrsLowEntry   *message,
                      uint8_t             *out);
size_t user_s390_vxrs_low_entry__pack_to_buffer
                     (const UserS390VxrsLowEntry   *message,
                      ProtobufCBuffer     *buffer);
UserS390VxrsLowEntry *
       user_s390_vxrs_low_entry__unpack
                     (ProtobufCAllocator  *allocator,
                      size_t               len,
                      const uint8_t       *data);
void   user_s390_vxrs_low_entry__free_unpacked
                     (UserS390VxrsLowEntry *message,
                      ProtobufCAllocator *allocator);
/* UserS390VxrsHighEntry methods */
void   user_s390_vxrs_high_entry__init
                     (UserS390VxrsHighEntry         *message);
size_t user_s390_vxrs_high_entry__get_packed_size
                     (const UserS390VxrsHighEntry   *message);
size_t user_s390_vxrs_high_entry__pack
                     (const UserS390VxrsHighEntry   *message,
                      uint8_t             *out);
size_t user_s390_vxrs_high_entry__pack_to_buffer
                     (const UserS390VxrsHighEntry   *message,
                      ProtobufCBuffer     *buffer);
UserS390VxrsHighEntry *
       user_s390_vxrs_high_entry__unpack
                     (ProtobufCAllocator  *allocator,
                      size_t               len,
                      const uint8_t       *data);
void   user_s390_vxrs_high_entry__free_unpacked
                     (UserS390VxrsHighEntry *message,
                      ProtobufCAllocator *allocator);
/* UserS390FpregsEntry methods */
void   user_s390_fpregs_entry__init
                     (UserS390FpregsEntry         *message);
size_t user_s390_fpregs_entry__get_packed_size
                     (const UserS390FpregsEntry   *message);
size_t user_s390_fpregs_entry__pack
                     (const UserS390FpregsEntry   *message,
                      uint8_t             *out);
size_t user_s390_fpregs_entry__pack_to_buffer
                     (const UserS390FpregsEntry   *message,
                      ProtobufCBuffer     *buffer);
UserS390FpregsEntry *
       user_s390_fpregs_entry__unpack
                     (ProtobufCAllocator  *allocator,
                      size_t               len,
                      const uint8_t       *data);
void   user_s390_fpregs_entry__free_unpacked
                     (UserS390FpregsEntry *message,
                      ProtobufCAllocator *allocator);
/* UserS390GsCbEntry methods */
void   user_s390_gs_cb_entry__init
                     (UserS390GsCbEntry         *message);
size_t user_s390_gs_cb_entry__get_packed_size
                     (const UserS390GsCbEntry   *message);
size_t user_s390_gs_cb_entry__pack
                     (const UserS390GsCbEntry   *message,
                      uint8_t             *out);
size_t user_s390_gs_cb_entry__pack_to_buffer
                     (const UserS390GsCbEntry   *message,
                      ProtobufCBuffer     *buffer);
UserS390GsCbEntry *
       user_s390_gs_cb_entry__unpack
                     (ProtobufCAllocator  *allocator,
                      size_t               len,
                      const uint8_t       *data);
void   user_s390_gs_cb_entry__free_unpacked
                     (UserS390GsCbEntry *message,
                      ProtobufCAllocator *allocator);
/* UserS390RiEntry methods */
void   user_s390_ri_entry__init
                     (UserS390RiEntry         *message);
size_t user_s390_ri_entry__get_packed_size
                     (const UserS390RiEntry   *message);
size_t user_s390_ri_entry__pack
                     (const UserS390RiEntry   *message,
                      uint8_t             *out);
size_t user_s390_ri_entry__pack_to_buffer
                     (const UserS390RiEntry   *message,
                      ProtobufCBuffer     *buffer);
UserS390RiEntry *
       user_s390_ri_entry__unpack
                     (ProtobufCAllocator  *allocator,
                      size_t               len,
                      const uint8_t       *data);
void   user_s390_ri_entry__free_unpacked
                     (UserS390RiEntry *message,
                      ProtobufCAllocator *allocator);
/* ThreadInfoS390 methods */
void   thread_info_s390__init
                     (ThreadInfoS390         *message);
size_t thread_info_s390__get_packed_size
                     (const ThreadInfoS390   *message);
size_t thread_info_s390__pack
                     (const ThreadInfoS390   *message,
                      uint8_t             *out);
size_t thread_info_s390__pack_to_buffer
                     (const ThreadInfoS390   *message,
                      ProtobufCBuffer     *buffer);
ThreadInfoS390 *
       thread_info_s390__unpack
                     (ProtobufCAllocator  *allocator,
                      size_t               len,
                      const uint8_t       *data);
void   thread_info_s390__free_unpacked
                     (ThreadInfoS390 *message,
                      ProtobufCAllocator *allocator);
/* --- per-message closures --- */

typedef void (*UserS390RegsEntry_Closure)
                 (const UserS390RegsEntry *message,
                  void *closure_data);
typedef void (*UserS390VxrsLowEntry_Closure)
                 (const UserS390VxrsLowEntry *message,
                  void *closure_data);
typedef void (*UserS390VxrsHighEntry_Closure)
                 (const UserS390VxrsHighEntry *message,
                  void *closure_data);
typedef void (*UserS390FpregsEntry_Closure)
                 (const UserS390FpregsEntry *message,
                  void *closure_data);
typedef void (*UserS390GsCbEntry_Closure)
                 (const UserS390GsCbEntry *message,
                  void *closure_data);
typedef void (*UserS390RiEntry_Closure)
                 (const UserS390RiEntry *message,
                  void *closure_data);
typedef void (*ThreadInfoS390_Closure)
                 (const ThreadInfoS390 *message,
                  void *closure_data);

/* --- services --- */


/* --- descriptors --- */

extern const ProtobufCMessageDescriptor user_s390_regs_entry__descriptor;
extern const ProtobufCMessageDescriptor user_s390_vxrs_low_entry__descriptor;
extern const ProtobufCMessageDescriptor user_s390_vxrs_high_entry__descriptor;
extern const ProtobufCMessageDescriptor user_s390_fpregs_entry__descriptor;
extern const ProtobufCMessageDescriptor user_s390_gs_cb_entry__descriptor;
extern const ProtobufCMessageDescriptor user_s390_ri_entry__descriptor;
extern const ProtobufCMessageDescriptor thread_info_s390__descriptor;

PROTOBUF_C__END_DECLS


#endif  /* PROTOBUF_C_core_2ds390_2eproto__INCLUDED */
