mirror of
https://github.com/NVIDIA/open-gpu-kernel-modules.git
synced 2026-02-07 16:49:58 +00:00
279 lines
5.9 KiB
C
279 lines
5.9 KiB
C
/*
|
|
* Lightweight protocol buffers.
|
|
*
|
|
* Based on code taken from
|
|
* https://code.google.com/archive/p/lwpb/source/default/source
|
|
*
|
|
* The code there is licensed as Apache 2.0. However, NVIDIA has received the
|
|
* code from the original author under MIT license terms.
|
|
*
|
|
*
|
|
* Copyright 2009 Simon Kallweit
|
|
* Copyright 2010-2018 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
|
|
*
|
|
* Permission is hereby granted, free of charge, to any person obtaining a
|
|
* copy of this software and associated documentation files (the "Software"),
|
|
* to deal in the Software without restriction, including without limitation
|
|
* the rights to use, copy, modify, merge, publish, distribute, sublicense,
|
|
* and/or sell copies of the Software, and to permit persons to whom the
|
|
* Software is furnished to do so, subject to the following conditions:
|
|
*
|
|
* The above copyright notice and this permission notice shall be included in
|
|
* all copies or substantial portions of the Software.
|
|
*
|
|
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
|
|
* THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
|
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
|
|
* DEALINGS IN THE SOFTWARE.
|
|
*/
|
|
|
|
/*
|
|
* This file contains the definitions used by the code generated
|
|
* by the protobuf compiler.
|
|
*/
|
|
|
|
#ifndef __PRBRT_H__
|
|
#define __PRBRT_H__
|
|
|
|
// Maximum depth of message embedding
|
|
#ifndef PRB_MAX_DEPTH
|
|
#define PRB_MAX_DEPTH 8
|
|
#endif
|
|
|
|
// Maximum number of required fields in a message
|
|
#ifndef PRB_MAX_REQUIRED_FIELDS
|
|
#define PRB_MAX_REQUIRED_FIELDS 16
|
|
#endif
|
|
|
|
// Provide enum names as strings
|
|
#ifndef PRB_ENUM_NAMES
|
|
#define PRB_ENUM_NAMES 0
|
|
#endif
|
|
|
|
#if PRB_ENUM_NAMES
|
|
#define PRB_MAYBE_ENUM_NAME(n) n,
|
|
#else
|
|
#define PRB_MAYBE_ENUM_NAME(n)
|
|
#endif
|
|
|
|
// Provide field names as strings
|
|
#ifndef PRB_FIELD_NAMES
|
|
#define PRB_FIELD_NAMES 0
|
|
#endif
|
|
|
|
#if PRB_FIELD_NAMES
|
|
#define PRB_MAYBE_FIELD_NAME(n) n,
|
|
#else
|
|
#define PRB_MAYBE_FIELD_NAME(n)
|
|
#endif
|
|
|
|
// Provide field default values
|
|
#ifndef PRB_FIELD_DEFAULTS
|
|
#define PRB_FIELD_DEFAULTS 0
|
|
#endif
|
|
|
|
#if PRB_FIELD_DEFAULTS
|
|
#define PRB_MAYBE_FIELD_DEFAULT_DEF(n) n
|
|
#define PRB_MAYBE_FIELD_DEFAULT(n) n,
|
|
#else
|
|
#define PRB_MAYBE_FIELD_DEFAULT_DEF(n)
|
|
#define PRB_MAYBE_FIELD_DEFAULT(n)
|
|
#endif
|
|
|
|
// Provide message names as strings
|
|
#ifndef PRB_MESSAGE_NAMES
|
|
#define PRB_MESSAGE_NAMES 0
|
|
#endif
|
|
|
|
#if PRB_MESSAGE_NAMES
|
|
#define PRB_MAYBE_MESSAGE_NAME(n) n,
|
|
#else
|
|
#define PRB_MAYBE_MESSAGE_NAME(n)
|
|
#endif
|
|
|
|
// Provide method names as strings
|
|
#ifndef PRB_METHOD_NAMES
|
|
#define PRB_METHOD_NAMES 0
|
|
#endif
|
|
|
|
#if PRB_METHOD_NAMES
|
|
#define PRB_MAYBE_METHOD_NAME(n) n,
|
|
#else
|
|
#define PRB_MAYBE_METHOD_NAME(n)
|
|
#endif
|
|
|
|
// Provide service names as strings
|
|
#ifndef PRB_SERVICE_NAMES
|
|
#define PRB_SERVICE_NAMES 0
|
|
#endif
|
|
|
|
#if PRB_SERVICE_NAMES
|
|
#define PRB_MAYBE_SERVICE_NAME(n) n,
|
|
#else
|
|
#define PRB_MAYBE_SERVICE_NAME(n)
|
|
#endif
|
|
|
|
// Field labels
|
|
#define PRB_REQUIRED 0
|
|
#define PRB_OPTIONAL 1
|
|
#define PRB_REPEATED 2
|
|
|
|
// Field value types
|
|
#define PRB_DOUBLE 0
|
|
#define PRB_FLOAT 1
|
|
#define PRB_INT32 2
|
|
#define PRB_INT64 3
|
|
#define PRB_UINT32 4
|
|
#define PRB_UINT64 5
|
|
#define PRB_SINT32 6
|
|
#define PRB_SINT64 7
|
|
#define PRB_FIXED32 8
|
|
#define PRB_FIXED64 9
|
|
#define PRB_SFIXED32 10
|
|
#define PRB_SFIXED64 11
|
|
#define PRB_BOOL 12
|
|
#define PRB_ENUM 13
|
|
#define PRB_STRING 14
|
|
#define PRB_BYTES 15
|
|
#define PRB_MESSAGE 16
|
|
|
|
// Field flags
|
|
#define PRB_HAS_DEFAULT (1 << 0)
|
|
#define PRB_IS_PACKED (1 << 1)
|
|
#define PRB_IS_DEPRECATED (1 << 2)
|
|
|
|
typedef struct
|
|
{
|
|
unsigned int label : 2;
|
|
unsigned int typ : 6;
|
|
unsigned int flags : 8;
|
|
} PRB_FIELD_OPTS;
|
|
|
|
// Protocol buffer wire types
|
|
typedef enum
|
|
{
|
|
WT_VARINT = 0,
|
|
WT_64BIT = 1,
|
|
WT_STRING = 2,
|
|
WT_32BIT = 5
|
|
} WIRE_TYPE;
|
|
|
|
// Protocol buffer wire values
|
|
typedef union
|
|
{
|
|
NvU64 varint;
|
|
NvU64 int64;
|
|
struct {
|
|
NvU64 len;
|
|
const void *data;
|
|
} string;
|
|
NvU32 int32;
|
|
} WIRE_VALUE;
|
|
|
|
typedef struct
|
|
{
|
|
char *str;
|
|
NvU32 len;
|
|
} PRB_VALUE_STRING;
|
|
|
|
typedef struct
|
|
{
|
|
NvU8 *data;
|
|
NvU32 len;
|
|
} PRB_VALUE_BYTES;
|
|
|
|
typedef struct
|
|
{
|
|
void *data;
|
|
NvU32 len;
|
|
} PRB_VALUE_MESSAGE;
|
|
|
|
typedef union
|
|
{
|
|
NvF64 double_;
|
|
NvF32 float_;
|
|
NvS32 int32;
|
|
NvS64 int64;
|
|
NvU32 uint32;
|
|
NvU64 uint64;
|
|
NvBool bool_;
|
|
PRB_VALUE_STRING string;
|
|
PRB_VALUE_BYTES bytes;
|
|
PRB_VALUE_MESSAGE message;
|
|
int enum_;
|
|
int null;
|
|
} PRB_VALUE;
|
|
|
|
typedef struct
|
|
{
|
|
int value;
|
|
#if PRB_ENUM_NAMES
|
|
const char *name;
|
|
#endif
|
|
} PRB_ENUM_MAPPING;
|
|
|
|
typedef struct
|
|
{
|
|
const PRB_ENUM_MAPPING *mappings;
|
|
NvU32 count;
|
|
#if PRB_ENUM_NAMES
|
|
const char *name;
|
|
#endif
|
|
} PRB_ENUM_DESC;
|
|
|
|
struct PRB_MSG_DESC;
|
|
|
|
//* Protocol buffer field descriptor
|
|
typedef struct PRB_FIELD_DESC
|
|
{
|
|
NvU32 number;
|
|
PRB_FIELD_OPTS opts;
|
|
const struct PRB_MSG_DESC *msg_desc;
|
|
const PRB_ENUM_DESC *enum_desc;
|
|
#if PRB_FIELD_NAMES
|
|
const char *name;
|
|
#endif
|
|
#if PRB_FIELD_DEFAULTS
|
|
const PRB_VALUE *def;
|
|
#endif
|
|
} PRB_FIELD_DESC;
|
|
|
|
//* Protocol buffer message descriptor
|
|
typedef struct PRB_MSG_DESC
|
|
{
|
|
NvU32 num_fields;
|
|
const PRB_FIELD_DESC *fields;
|
|
#if PRB_MESSAGE_NAMES
|
|
const char *name;
|
|
#endif
|
|
} PRB_MSG_DESC;
|
|
|
|
// Forward declaration
|
|
struct PRB_SERVICE_DESC;
|
|
|
|
// Protocol buffer method descriptor
|
|
struct PRB_METHOD_DESC
|
|
{
|
|
const struct PRB_SERVICE_DESC *service;
|
|
const PRB_MSG_DESC *req_desc;
|
|
const PRB_MSG_DESC *res_desc;
|
|
#if PRB_METHOD_NAMES
|
|
const char *name;
|
|
#endif
|
|
};
|
|
|
|
// Protocol buffer service descriptor
|
|
typedef struct PRB_SERVICE_DESC
|
|
{
|
|
NvU32 num_methods;
|
|
const struct PRB_METHOD_DESC *methods;
|
|
#if PRB_SERVICE_NAMES
|
|
const char *name;
|
|
#endif
|
|
} PRB_SERVICE_DESC;
|
|
|
|
#endif
|