Motr  M0
format.h File Reference
#include "lib/types.h"
#include "lib/misc.h"
#include "lib/mutex.h"
#include "lib/rwlock.h"
#include "lib/chan.h"
Include dependency graph for format.h:

Go to the source code of this file.

Data Structures

struct  m0_format_header
 
struct  m0_format_footer
 
struct  m0_format_tag
 
struct  m0_be_mutex
 
struct  m0_be_rwlock
 
struct  m0_be_clink
 
struct  m0_be_chan
 

Macros

#define __MOTR_FORMAT_FORMAT_H__
 
#define M0_BE_MUTEX_PAD   168
 
#define M0_BE_RWLOCK_PAD   144
 
#define M0_BE_CLINK_PAD   sizeof(struct m0_clink)
 

Enumerations

enum  m0_format_type {
  M0_FORMAT_TYPE_BEGIN = 1, M0_FORMAT_TYPE_RPC_PACKET = M0_FORMAT_TYPE_BEGIN, M0_FORMAT_TYPE_RPC_ITEM, M0_FORMAT_TYPE_BE_BTREE,
  M0_FORMAT_TYPE_BE_BNODE, M0_FORMAT_TYPE_BE_EMAP_KEY, M0_FORMAT_TYPE_BE_EMAP_REC, M0_FORMAT_TYPE_BE_EMAP,
  M0_FORMAT_TYPE_BE_LIST, M0_FORMAT_TYPE_BE_SEG_HDR, M0_FORMAT_TYPE_BALLOC, M0_FORMAT_TYPE_ADDB2_FRAME_HEADER,
  M0_FORMAT_TYPE_STOB_AD_0TYPE_REC, M0_FORMAT_TYPE_STOB_AD_DOMAIN, M0_FORMAT_TYPE_COB_DOMAIN, M0_FORMAT_TYPE_COB_NSREC,
  M0_FORMAT_TYPE_BALLOC_GROUP_DESC, M0_FORMAT_TYPE_EXT, M0_FORMAT_TYPE_CAS_INDEX, M0_FORMAT_TYPE_POOLNODE,
  M0_FORMAT_TYPE_POOLDEV, M0_FORMAT_TYPE_POOL_SPARE_USAGE, M0_FORMAT_TYPE_CAS_STATE, M0_FORMAT_TYPE_CAS_CTG,
  M0_FORMAT_TYPE_NR
}
 

Functions

struct m0_format_header M0_XCA_DOMAIN (be|rpc)
 
 M0_BASSERT (M0_FORMAT_TYPE_NR< UINT16_MAX)
 
M0_INTERNAL void m0_format_header_pack (struct m0_format_header *dest, const struct m0_format_tag *src)
 
M0_INTERNAL void m0_format_header_unpack (struct m0_format_tag *dest, const struct m0_format_header *src)
 
M0_INTERNAL void m0_format_footer_generate (struct m0_format_footer *footer, const void *buffer, uint32_t size)
 
M0_INTERNAL void m0_format_footer_update (const void *buffer)
 
M0_INTERNAL int m0_format_footer_verify_generic (const struct m0_format_footer *footer, const void *buffer, uint32_t size, bool iem)
 
M0_INTERNAL int m0_format_footer_verify (const void *buffer, bool iem)
 
struct m0_be_mutex M0_XCA_DOMAIN (be)
 
 M0_BASSERT (sizeof(struct m0_mutex)<=sizeof(M0_FIELD_VALUE(struct m0_be_mutex, bm_u.pad)))
 
 M0_BASSERT (sizeof(struct m0_rwlock)<=sizeof(M0_FIELD_VALUE(struct m0_be_rwlock, bl_u.pad)))
 
 M0_BASSERT (sizeof(struct m0_clink)<=sizeof(M0_FIELD_VALUE(struct m0_be_clink, bc_u.pad)))
 

Variables

uint64_t hd_magic
 
uint64_t hd_bits
 
uint64_t ft_magic
 
uint64_t ft_checksum
 
struct m0_format_tag M0_XCA_DOMAIN
 
enum m0_format_type M0_XCA_ENUM
 
union {
   struct m0_mutex   mutex
 
   char   pad [M0_BE_MUTEX_PAD]
 
bm_u
 
union {
   struct m0_rwlock   rwlock
 
   char   pad [M0_BE_RWLOCK_PAD]
 
bl_u
 
union {
   struct m0_clink   clink
 
   char   pad [M0_BE_CLINK_PAD]
 
bc_u
 
struct m0_chan bch_chan
 

Macro Definition Documentation

◆ __MOTR_FORMAT_FORMAT_H__

#define __MOTR_FORMAT_FORMAT_H__

Definition at line 23 of file format.h.

Variable Documentation

◆ bc_u

union { ... } bc_u

◆ bch_chan

struct m0_chan bch_chan

Definition at line 222 of file format.h.

◆ bl_u

union { ... } bl_u

◆ bm_u

union { ... } bm_u

◆ clink

struct m0_clink clink

Definition at line 214 of file format.h.

◆ ft_checksum

uint64_t ft_checksum

Definition at line 151 of file format.h.

◆ ft_magic

uint64_t ft_magic

Definition at line 150 of file format.h.

◆ hd_bits

uint64_t hd_bits

Encoding of m0_format_tag data.

  • 16 most significant bits – version number;
  • 16 bits in the middle – object type;
  • 32 least significant bits – size in bytes.
See also
m0_format_header_pack(), m0_format_header_unpack()

Definition at line 164 of file format.h.

◆ hd_magic

uint64_t hd_magic

Header magic, used in m0_format_footer_verify() to verify that buffer has a valid m0_format_header.

Definition at line 154 of file format.h.

◆ mutex

struct m0_mutex mutex

Definition at line 170 of file format.h.

◆ pad

char pad[M0_BE_CLINK_PAD]

Definition at line 171 of file format.h.

◆ rwlock

struct m0_rwlock rwlock

Definition at line 205 of file format.h.