Staging: hv: codingsyle cleanups for ChannelMessages.h
authorGreg Kroah-Hartman <gregkh@suse.de>
Wed, 26 Aug 2009 22:14:51 +0000 (15:14 -0700)
committerGreg Kroah-Hartman <gregkh@suse.de>
Tue, 15 Sep 2009 19:01:58 +0000 (12:01 -0700)
Everything but the typedefs are taken care of.

Also a number of unused defines were removed.

Cc: Hank Janssen <hjanssen@microsoft.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
drivers/staging/hv/include/ChannelMessages.h

index 1e41948934ce96a7d41f8e57ea208ea519d8ceae..9774396b062f1eaa7ea98a6364c76f6abc930054 100644 (file)
  *
  */
 
-
-#pragma once
+#ifndef __CHANNELMESSAGES_H
+#define __CHANNELMESSAGES_H
 
 #include "VmbusPacketFormat.h"
 
-#define C_ASSERT(x)
-typedef u32 NTSTATUS;
-
-#pragma pack(push,1)
-
-
 /* Version 1 messages */
-
-
-typedef enum _VMBUS_CHANNEL_MESSAGE_TYPE
-{
-    ChannelMessageInvalid                   =  0,
-    ChannelMessageOfferChannel              =  1,
-    ChannelMessageRescindChannelOffer       =  2,
-    ChannelMessageRequestOffers             =  3,
-    ChannelMessageAllOffersDelivered        =  4,
-    ChannelMessageOpenChannel               =  5,
-    ChannelMessageOpenChannelResult         =  6,
-    ChannelMessageCloseChannel              =  7,
-    ChannelMessageGpadlHeader               =  8,
-    ChannelMessageGpadlBody                 =  9,
-    ChannelMessageGpadlCreated              = 10,
-    ChannelMessageGpadlTeardown             = 11,
-    ChannelMessageGpadlTorndown             = 12,
-    ChannelMessageRelIdReleased             = 13,
-    ChannelMessageInitiateContact           = 14,
-    ChannelMessageVersionResponse           = 15,
-    ChannelMessageUnload                    = 16,
+typedef enum _VMBUS_CHANNEL_MESSAGE_TYPE {
+       ChannelMessageInvalid                   =  0,
+       ChannelMessageOfferChannel              =  1,
+       ChannelMessageRescindChannelOffer       =  2,
+       ChannelMessageRequestOffers             =  3,
+       ChannelMessageAllOffersDelivered        =  4,
+       ChannelMessageOpenChannel               =  5,
+       ChannelMessageOpenChannelResult         =  6,
+       ChannelMessageCloseChannel              =  7,
+       ChannelMessageGpadlHeader               =  8,
+       ChannelMessageGpadlBody                 =  9,
+       ChannelMessageGpadlCreated              = 10,
+       ChannelMessageGpadlTeardown             = 11,
+       ChannelMessageGpadlTorndown             = 12,
+       ChannelMessageRelIdReleased             = 13,
+       ChannelMessageInitiateContact           = 14,
+       ChannelMessageVersionResponse           = 15,
+       ChannelMessageUnload                    = 16,
 #ifdef VMBUS_FEATURE_PARENT_OR_PEER_MEMORY_MAPPED_INTO_A_CHILD
-    ChannelMessageViewRangeAdd              = 17,
-    ChannelMessageViewRangeRemove           = 18,
+       ChannelMessageViewRangeAdd              = 17,
+       ChannelMessageViewRangeRemove           = 18,
 #endif
-    ChannelMessageCount
-} VMBUS_CHANNEL_MESSAGE_TYPE, *PVMBUS_CHANNEL_MESSAGE_TYPE;
+       ChannelMessageCount
+} __attribute__((packed)) VMBUS_CHANNEL_MESSAGE_TYPE, *PVMBUS_CHANNEL_MESSAGE_TYPE;
 
-/* begin_wpp config */
-/* CUSTOM_TYPE(ChannelMessageType, ItemEnum(_VMBUS_CHANNEL_MESSAGE_TYPE)); */
-/* end_wpp */
-
-typedef struct _VMBUS_CHANNEL_MESSAGE_HEADER
-{
-    VMBUS_CHANNEL_MESSAGE_TYPE  MessageType;
-    u32                      Padding;
-} VMBUS_CHANNEL_MESSAGE_HEADER, *PVMBUS_CHANNEL_MESSAGE_HEADER;
+typedef struct _VMBUS_CHANNEL_MESSAGE_HEADER {
+       VMBUS_CHANNEL_MESSAGE_TYPE MessageType;
+       u32 Padding;
+} __attribute__((packed)) VMBUS_CHANNEL_MESSAGE_HEADER, *PVMBUS_CHANNEL_MESSAGE_HEADER;
 
 /* Query VMBus Version parameters */
-typedef struct _VMBUS_CHANNEL_QUERY_VMBUS_VERSION
-{
-    VMBUS_CHANNEL_MESSAGE_HEADER Header;
-    u32 Version;
-} VMBUS_CHANNEL_QUERY_VMBUS_VERSION, *PVMBUS_CHANNEL_QUERY_VMBUS_VERSION;
+typedef struct _VMBUS_CHANNEL_QUERY_VMBUS_VERSION {
+       VMBUS_CHANNEL_MESSAGE_HEADER Header;
+       u32 Version;
+} __attribute__((packed)) VMBUS_CHANNEL_QUERY_VMBUS_VERSION, *PVMBUS_CHANNEL_QUERY_VMBUS_VERSION;
 
 /* VMBus Version Supported parameters */
-typedef struct _VMBUS_CHANNEL_VERSION_SUPPORTED
-{
-    VMBUS_CHANNEL_MESSAGE_HEADER Header;
-    bool VersionSupported;
-} VMBUS_CHANNEL_VERSION_SUPPORTED, *PVMBUS_CHANNEL_VERSION_SUPPORTED;
+typedef struct _VMBUS_CHANNEL_VERSION_SUPPORTED {
+       VMBUS_CHANNEL_MESSAGE_HEADER Header;
+       bool VersionSupported;
+} __attribute__((packed)) VMBUS_CHANNEL_VERSION_SUPPORTED, *PVMBUS_CHANNEL_VERSION_SUPPORTED;
 
 /* Offer Channel parameters */
-typedef struct _VMBUS_CHANNEL_OFFER_CHANNEL
-{
-    VMBUS_CHANNEL_MESSAGE_HEADER Header;
-    struct vmbus_channel_offer Offer;
-    u32  ChildRelId;
-    u8   MonitorId;
-    bool MonitorAllocated;
-} VMBUS_CHANNEL_OFFER_CHANNEL, *PVMBUS_CHANNEL_OFFER_CHANNEL;
-
-
-/* Make sure VMBUS_CHANNEL_OFFER_CHANNEL fits into Synic message. */
-
-C_ASSERT(sizeof(VMBUS_CHANNEL_OFFER_CHANNEL) <= MAXIMUM_SYNIC_MESSAGE_BYTES);
+typedef struct _VMBUS_CHANNEL_OFFER_CHANNEL {
+       VMBUS_CHANNEL_MESSAGE_HEADER Header;
+       struct vmbus_channel_offer Offer;
+       u32 ChildRelId;
+       u8 MonitorId;
+       bool MonitorAllocated;
+} __attribute__((packed)) VMBUS_CHANNEL_OFFER_CHANNEL, *PVMBUS_CHANNEL_OFFER_CHANNEL;
 
 /* Rescind Offer parameters */
-typedef struct _VMBUS_CHANNEL_RESCIND_OFFER
-{
-    VMBUS_CHANNEL_MESSAGE_HEADER Header;
-    u32          ChildRelId;
-} VMBUS_CHANNEL_RESCIND_OFFER, *PVMBUS_CHANNEL_RESCIND_OFFER;
-
-/* Request Offer -- no parameters, SynIC message contains the partition ID */
-/* Set Snoop -- no parameters, SynIC message contains the partition ID */
-/* Clear Snoop -- no parameters, SynIC message contains the partition ID */
-/* All Offers Delivered -- no parameters, SynIC message contains the partition ID */
-/* Flush Client -- no parameters, SynIC message contains the partition ID */
-
-/* Open Channel parameters */
-typedef struct _VMBUS_CHANNEL_OPEN_CHANNEL
-{
-    VMBUS_CHANNEL_MESSAGE_HEADER Header;
-
-
-    /* Identifies the specific VMBus channel that is being opened. */
-
-    u32          ChildRelId;
-
-
-    /* ID making a particular open request at a channel offer unique. */
-
-    u32          OpenId;
-
-
-    /* GPADL for the channel's ring buffer. */
-
-    u32 RingBufferGpadlHandle;
-
+typedef struct _VMBUS_CHANNEL_RESCIND_OFFER {
+       VMBUS_CHANNEL_MESSAGE_HEADER Header;
+       u32 ChildRelId;
+} __attribute__((packed)) VMBUS_CHANNEL_RESCIND_OFFER, *PVMBUS_CHANNEL_RESCIND_OFFER;
 
-    /* GPADL for the channel's server context save area. */
-
-    u32 ServerContextAreaGpadlHandle;
+/*
+ * Request Offer -- no parameters, SynIC message contains the partition ID
+ * Set Snoop -- no parameters, SynIC message contains the partition ID
+ * Clear Snoop -- no parameters, SynIC message contains the partition ID
+ * All Offers Delivered -- no parameters, SynIC message contains the partition
+ *                        ID
+ * Flush Client -- no parameters, SynIC message contains the partition ID
+ */
 
+/* Open Channel parameters */
+typedef struct _VMBUS_CHANNEL_OPEN_CHANNEL {
+       VMBUS_CHANNEL_MESSAGE_HEADER Header;
 
-    /*
-     * The upstream ring buffer begins at offset zero in the memory
-     * described by RingBufferGpadlHandle. The downstream ring buffer
-     * follows it at this offset (in pages).
-     */
+       /* Identifies the specific VMBus channel that is being opened. */
+       u32 ChildRelId;
 
-    u32          DownstreamRingBufferPageOffset;
+       /* ID making a particular open request at a channel offer unique. */
+       u32 OpenId;
 
+       /* GPADL for the channel's ring buffer. */
+       u32 RingBufferGpadlHandle;
 
-    /* User-specific data to be passed along to the server endpoint. */
+       /* GPADL for the channel's server context save area. */
+       u32 ServerContextAreaGpadlHandle;
 
-    unsigned char           UserData[MAX_USER_DEFINED_BYTES];
+       /*
+       * The upstream ring buffer begins at offset zero in the memory
+       * described by RingBufferGpadlHandle. The downstream ring buffer
+       * follows it at this offset (in pages).
+       */
+       u32 DownstreamRingBufferPageOffset;
 
-} VMBUS_CHANNEL_OPEN_CHANNEL, *PVMBUS_CHANNEL_OPEN_CHANNEL;
+       /* User-specific data to be passed along to the server endpoint. */
+       unsigned char UserData[MAX_USER_DEFINED_BYTES];
+} __attribute__((packed)) VMBUS_CHANNEL_OPEN_CHANNEL, *PVMBUS_CHANNEL_OPEN_CHANNEL;
 
 /* Reopen Channel parameters; */
 typedef VMBUS_CHANNEL_OPEN_CHANNEL VMBUS_CHANNEL_REOPEN_CHANNEL, *PVMBUS_CHANNEL_REOPEN_CHANNEL;
 
 /* Open Channel Result parameters */
-typedef struct _VMBUS_CHANNEL_OPEN_RESULT
-{
-    VMBUS_CHANNEL_MESSAGE_HEADER Header;
-    u32      ChildRelId;
-    u32      OpenId;
-    NTSTATUS    Status;
-} VMBUS_CHANNEL_OPEN_RESULT, *PVMBUS_CHANNEL_OPEN_RESULT;
+typedef struct _VMBUS_CHANNEL_OPEN_RESULT {
+       VMBUS_CHANNEL_MESSAGE_HEADER Header;
+       u32 ChildRelId;
+       u32 OpenId;
+       u32 Status;
+} __attribute__((packed)) VMBUS_CHANNEL_OPEN_RESULT, *PVMBUS_CHANNEL_OPEN_RESULT;
 
 /* Close channel parameters; */
-typedef struct _VMBUS_CHANNEL_CLOSE_CHANNEL
-{
-    VMBUS_CHANNEL_MESSAGE_HEADER Header;
-    u32      ChildRelId;
-} VMBUS_CHANNEL_CLOSE_CHANNEL, *PVMBUS_CHANNEL_CLOSE_CHANNEL;
+typedef struct _VMBUS_CHANNEL_CLOSE_CHANNEL {
+       VMBUS_CHANNEL_MESSAGE_HEADER Header;
+       u32 ChildRelId;
+} __attribute__((packed)) VMBUS_CHANNEL_CLOSE_CHANNEL, *PVMBUS_CHANNEL_CLOSE_CHANNEL;
 
 /* Channel Message GPADL */
-#define GPADL_TYPE_RING_BUFFER          1
-#define GPADL_TYPE_SERVER_SAVE_AREA     2
-#define GPADL_TYPE_TRANSACTION          8
-
+#define GPADL_TYPE_RING_BUFFER         1
+#define GPADL_TYPE_SERVER_SAVE_AREA    2
+#define GPADL_TYPE_TRANSACTION         8
 
 /*
  * The number of PFNs in a GPADL message is defined by the number of
@@ -185,131 +148,75 @@ typedef struct _VMBUS_CHANNEL_CLOSE_CHANNEL
  * implied number of PFNs won't fit in this packet, there will be a
  * follow-up packet that contains more.
  */
-
-
-typedef struct _VMBUS_CHANNEL_GPADL_HEADER
-{
-    VMBUS_CHANNEL_MESSAGE_HEADER Header;
-    u32      ChildRelId;
-    u32      Gpadl;
-    u16      RangeBufLen;
-    u16      RangeCount;
-    GPA_RANGE   Range[0];
-} VMBUS_CHANNEL_GPADL_HEADER, *PVMBUS_CHANNEL_GPADL_HEADER;
-
-
+typedef struct _VMBUS_CHANNEL_GPADL_HEADER {
+       VMBUS_CHANNEL_MESSAGE_HEADER Header;
+       u32 ChildRelId;
+       u32 Gpadl;
+       u16 RangeBufLen;
+       u16 RangeCount;
+       GPA_RANGE Range[0];
+} __attribute__((packed)) VMBUS_CHANNEL_GPADL_HEADER, *PVMBUS_CHANNEL_GPADL_HEADER;
 
 /* This is the followup packet that contains more PFNs. */
-
-
-typedef struct _VMBUS_CHANNEL_GPADL_BODY
-{
-    VMBUS_CHANNEL_MESSAGE_HEADER Header;
-    u32              MessageNumber;
-    u32              Gpadl;
-    u64              Pfn[0];
-} VMBUS_CHANNEL_GPADL_BODY, *PVMBUS_CHANNEL_GPADL_BODY;
-
-
-typedef struct _VMBUS_CHANNEL_GPADL_CREATED
-{
-    VMBUS_CHANNEL_MESSAGE_HEADER Header;
-    u32              ChildRelId;
-    u32              Gpadl;
-    u32              CreationStatus;
-} VMBUS_CHANNEL_GPADL_CREATED, *PVMBUS_CHANNEL_GPADL_CREATED;
-
-typedef struct _VMBUS_CHANNEL_GPADL_TEARDOWN
-{
-    VMBUS_CHANNEL_MESSAGE_HEADER Header;
-    u32              ChildRelId;
-    u32              Gpadl;
-} VMBUS_CHANNEL_GPADL_TEARDOWN, *PVMBUS_CHANNEL_GPADL_TEARDOWN;
-
-typedef struct _VMBUS_CHANNEL_GPADL_TORNDOWN
-{
-    VMBUS_CHANNEL_MESSAGE_HEADER Header;
-    u32              Gpadl;
-} VMBUS_CHANNEL_GPADL_TORNDOWN, *PVMBUS_CHANNEL_GPADL_TORNDOWN;
+typedef struct _VMBUS_CHANNEL_GPADL_BODY {
+       VMBUS_CHANNEL_MESSAGE_HEADER Header;
+       u32 MessageNumber;
+       u32 Gpadl;
+       u64 Pfn[0];
+} __attribute__((packed)) VMBUS_CHANNEL_GPADL_BODY, *PVMBUS_CHANNEL_GPADL_BODY;
+
+typedef struct _VMBUS_CHANNEL_GPADL_CREATED {
+       VMBUS_CHANNEL_MESSAGE_HEADER Header;
+       u32 ChildRelId;
+       u32 Gpadl;
+       u32 CreationStatus;
+} __attribute__((packed)) VMBUS_CHANNEL_GPADL_CREATED, *PVMBUS_CHANNEL_GPADL_CREATED;
+
+typedef struct _VMBUS_CHANNEL_GPADL_TEARDOWN {
+       VMBUS_CHANNEL_MESSAGE_HEADER Header;
+       u32 ChildRelId;
+       u32 Gpadl;
+} __attribute__((packed)) VMBUS_CHANNEL_GPADL_TEARDOWN, *PVMBUS_CHANNEL_GPADL_TEARDOWN;
+
+typedef struct _VMBUS_CHANNEL_GPADL_TORNDOWN {
+       VMBUS_CHANNEL_MESSAGE_HEADER Header;
+       u32 Gpadl;
+} __attribute__((packed)) VMBUS_CHANNEL_GPADL_TORNDOWN, *PVMBUS_CHANNEL_GPADL_TORNDOWN;
 
 #ifdef VMBUS_FEATURE_PARENT_OR_PEER_MEMORY_MAPPED_INTO_A_CHILD
-typedef struct _VMBUS_CHANNEL_VIEW_RANGE_ADD
-{
-    VMBUS_CHANNEL_MESSAGE_HEADER Header;
-    PHYSICAL_ADDRESS    ViewRangeBase;
-    u64              ViewRangeLength;
-    u32              ChildRelId;
-} VMBUS_CHANNEL_VIEW_RANGE_ADD, *PVMBUS_CHANNEL_VIEW_RANGE_ADD;
-
-typedef struct _VMBUS_CHANNEL_VIEW_RANGE_REMOVE
-{
-    VMBUS_CHANNEL_MESSAGE_HEADER Header;
-    PHYSICAL_ADDRESS    ViewRangeBase;
-    u32              ChildRelId;
-} VMBUS_CHANNEL_VIEW_RANGE_REMOVE, *PVMBUS_CHANNEL_VIEW_RANGE_REMOVE;
+typedef struct _VMBUS_CHANNEL_VIEW_RANGE_ADD {
+       VMBUS_CHANNEL_MESSAGE_HEADER Header;
+       PHYSICAL_ADDRESS ViewRangeBase;
+       u64 ViewRangeLength;
+       u32 ChildRelId;
+} __attribute__((packed)) VMBUS_CHANNEL_VIEW_RANGE_ADD, *PVMBUS_CHANNEL_VIEW_RANGE_ADD;
+
+typedef struct _VMBUS_CHANNEL_VIEW_RANGE_REMOVE {
+       VMBUS_CHANNEL_MESSAGE_HEADER Header;
+       PHYSICAL_ADDRESS ViewRangeBase;
+       u32 ChildRelId;
+} __attribute__((packed)) VMBUS_CHANNEL_VIEW_RANGE_REMOVE, *PVMBUS_CHANNEL_VIEW_RANGE_REMOVE;
 #endif
 
-typedef struct _VMBUS_CHANNEL_RELID_RELEASED
-{
-    VMBUS_CHANNEL_MESSAGE_HEADER Header;
-    u32              ChildRelId;
-} VMBUS_CHANNEL_RELID_RELEASED, *PVMBUS_CHANNEL_RELID_RELEASED;
-
-typedef struct _VMBUS_CHANNEL_INITIATE_CONTACT
-{
-    VMBUS_CHANNEL_MESSAGE_HEADER Header;
-    u32              VMBusVersionRequested;
-    u32              Padding2;
-    u64              InterruptPage;
-    u64              MonitorPage1;
-    u64              MonitorPage2;
-} VMBUS_CHANNEL_INITIATE_CONTACT, *PVMBUS_CHANNEL_INITIATE_CONTACT;
-
-typedef struct _VMBUS_CHANNEL_VERSION_RESPONSE
-{
-    VMBUS_CHANNEL_MESSAGE_HEADER Header;
-    bool     VersionSupported;
-} VMBUS_CHANNEL_VERSION_RESPONSE, *PVMBUS_CHANNEL_VERSION_RESPONSE;
+typedef struct _VMBUS_CHANNEL_RELID_RELEASED {
+       VMBUS_CHANNEL_MESSAGE_HEADER Header;
+       u32 ChildRelId;
+} __attribute__((packed)) VMBUS_CHANNEL_RELID_RELEASED, *PVMBUS_CHANNEL_RELID_RELEASED;
+
+typedef struct _VMBUS_CHANNEL_INITIATE_CONTACT {
+       VMBUS_CHANNEL_MESSAGE_HEADER Header;
+       u32 VMBusVersionRequested;
+       u32 Padding2;
+       u64 InterruptPage;
+       u64 MonitorPage1;
+       u64 MonitorPage2;
+} __attribute__((packed)) VMBUS_CHANNEL_INITIATE_CONTACT, *PVMBUS_CHANNEL_INITIATE_CONTACT;
+
+typedef struct _VMBUS_CHANNEL_VERSION_RESPONSE {
+       VMBUS_CHANNEL_MESSAGE_HEADER Header;
+       bool VersionSupported;
+} __attribute__((packed)) VMBUS_CHANNEL_VERSION_RESPONSE, *PVMBUS_CHANNEL_VERSION_RESPONSE;
 
 typedef VMBUS_CHANNEL_MESSAGE_HEADER VMBUS_CHANNEL_UNLOAD, *PVMBUS_CHANNEL_UNLOAD;
 
-
-/* Kind of a table to use the preprocessor to get us the right type for a */
-/* specified message ID. Used with ChAllocateSendMessage() */
-
-#define ChannelMessageQueryVmbusVersion_TYPE    VMBUS_CHANNEL_MESSAGE_HEADER
-#define ChannelMessageVmbusVersionSupported_TYPE VMBUS_CHANNEL_VERSION_SUPPORTED
-#define ChannelMessageOfferChannel_TYPE         VMBUS_CHANNEL_OFFER_CHANNEL
-#define ChannelMessageRescindChannelOffer_TYPE  VMBUS_CHANNEL_RESCIND_OFFER
-#define ChannelMessageRequestOffers_TYPE        VMBUS_CHANNEL_MESSAGE_HEADER
-#define ChannelMessageAllOffersDelivered_TYPE   VMBUS_CHANNEL_MESSAGE_HEADER
-#define ChannelMessageOpenChannel_TYPE          VMBUS_CHANNEL_OPEN_CHANNEL
-#define ChannelMessageOpenChannelResult_TYPE    VMBUS_CHANNEL_OPEN_RESULT
-#define ChannelMessageCloseChannel_TYPE         VMBUS_CHANNEL_CLOSE_CHANNEL
-#define ChannelMessageAllGpadlsUnmapped_TYPE    VMBUS_CHANNEL_CLOSE_CHANNEL
-#define ChannelMessageGpadlHeader_TYPE          VMBUS_CHANNEL_GPADL_HEADER
-#define ChannelMessageGpadlBody_TYPE            VMBUS_CHANNEL_GPADL_BODY
-#define ChannelMessageGpadlCreated_TYPE         VMBUS_CHANNEL_GPADL_CREATED
-#define ChannelMessageGpadlTeardown_TYPE        VMBUS_CHANNEL_GPADL_TEARDOWN
-#define ChannelMessageGpadlTorndown_TYPE        VMBUS_CHANNEL_GPADL_TORNDOWN
-#define ChannelMessageViewRangeAdd_TYPE         VMBUS_CHANNEL_VIEW_RANGE_ADD
-#define ChannelMessageViewRangeRemove_TYPE      VMBUS_CHANNEL_VIEW_RANGE_REMOVE
-#define ChannelMessageRelIdReleased_TYPE        VMBUS_CHANNEL_RELID_RELEASED
-#define ChannelMessageInitiateContact_TYPE      VMBUS_CHANNEL_INITIATE_CONTACT
-#define ChannelMessageVersionResponse_TYPE      VMBUS_CHANNEL_VERSION_RESPONSE
-#define ChannelMessageUnload_TYPE               VMBUS_CHANNEL_UNLOAD
-
-
-/* Preprocessor wrapper to ChAllocateSendMessageSize() converting the return */
-/* value to the correct pointer and calculate the needed size. */
-
-/* Argument: */
-
-/*  Id - the numberic ID (type VMBUS_CHANNEL_MESSAGE_TYPE) of the message to */
-/*       send. */
-
-#define ChAllocateSendMessage(Id, Fn, Context)   \
-    (Id##_TYPE*)ChAllocateSendMessageSized(sizeof(Id##_TYPE), Id, Fn, Context)
-
-
-#pragma pack(pop)
+#endif