glusterfs/extras/create_new_xlator/new-xlator-tmpl.c
Gluster Ant e16868dede Land part 2 of clang-format changes
Change-Id: Ia84cc24c8924e6d22d02ac15f611c10e26db99b4
Signed-off-by: Nigel Babu <nigelb@redhat.com>
2018-09-12 17:52:45 +05:30

154 lines
3.8 KiB
C

#pragma fragment CBK_TEMPLATE
int32_t @FOP_PREFIX @_ @NAME
@_cbk(call_frame_t *frame, void *cookie, xlator_t *this, int32_t op_ret,
int32_t op_errno, @UNWIND_PARAMS @)
{
STACK_UNWIND_STRICT(@NAME @, frame, op_ret, op_errno, @UNWIND_ARGS @);
return 0;
}
#pragma fragment COMMENT
If you are generating the leaf xlators, remove the STACK_WIND and replace the
@ERROR_ARGS @to @UNWIND_ARGS @ if necessary
#pragma fragment FOP_TEMPLATE
int32_t @FOP_PREFIX @_ @NAME
@(call_frame_t *frame, xlator_t *this, @WIND_PARAMS @)
{
STACK_WIND(frame, @FOP_PREFIX @_ @NAME @_cbk, FIRST_CHILD(this),
FIRST_CHILD(this)->fops->@NAME @, @WIND_ARGS @);
return 0;
err:
STACK_UNWIND_STRICT(@NAME @, frame, -1, errno, @ERROR_ARGS @);
return 0;
}
#pragma fragment FUNC_TEMPLATE
@RET_TYPE @ @FOP_PREFIX @_ @NAME @(@FUNC_PARAMS @)
{
return @RET_VAR @;
}
#pragma fragment CP
/*
* Copyright (c) @CURRENT_YEAR@ Red Hat, Inc. <http://www.redhat.com>
* This file is part of GlusterFS.
*
* This file is licensed to you under your choice of the GNU Lesser
* General Public License, version 3 or any later version (LGPLv3 or
* later), or the GNU General Public License, version 2 (GPLv2), in all
* cases as published by the Free Software Foundation.
*/
#pragma fragment INCLUDE_IN_SRC_FILE
#include "@XL_NAME@.h"
#pragma fragment XLATOR_METHODS
static int32_t @FOP_PREFIX @_init(xlator_t *this)
{
return 0;
}
static void @FOP_PREFIX @_fini(xlator_t *this)
{
return;
}
static int32_t @FOP_PREFIX @_reconfigure(xlator_t *this, dict_t *dict)
{
return 0;
}
static int @FOP_PREFIX @_notify(xlator_t *this, int event, void *data, ...)
{
return default_notify(this, event, data);
}
static int32_t @FOP_PREFIX @_mem_acct_init(xlator_t *this)
{
int ret = -1;
ret = xlator_mem_acct_init(this, gf_ @FOP_PREFIX @_mt_end + 1);
return ret;
}
static int32_t @FOP_PREFIX @_dump_metrics(xlator_t *this, int fd)
{
return 0;
}
struct volume_options @FOP_PREFIX @_options[] = {
/*{ .key = {""},
.type = GF_OPTION_TYPE_BOOL,
.default_value = "",
.op_version = {GD_OP_VERSION_},
.flags = OPT_FLAG_SETTABLE | OPT_FLAG_DOC | OPT_FLAG_CLIENT_OPT,
.tags = {""},
.description = "",
.category = GF_EXPERIMENTAL,
},
{ .key = {NULL} },
*/
};
xlator_api_t xlator_api = {
.init = @FOP_PREFIX @_init,
.fini = @FOP_PREFIX @_fini,
.notify = @FOP_PREFIX @_notify,
.reconfigure = @FOP_PREFIX @_reconfigure,
.mem_acct_init = @FOP_PREFIX @_mem_acct_init,
.dump_metrics = @FOP_PREFIX @_dump_metrics,
.op_version = {GD_OP_VERSION_},
.dumpops = &@FOP_PREFIX @_dumpops,
.fops = &@FOP_PREFIX @_fops,
.cbks = &@FOP_PREFIX @_cbks,
.options = @FOP_PREFIX @_options,
.identifier = "@XL_NAME@",
.category = GF_EXPERIMENTAL,
};
#pragma fragment HEADER_FMT
#ifndef __ @HFL_NAME @_H__
#define __ @HFL_NAME @_H__
#include "@XL_NAME@-mem-types.h"
#include "@XL_NAME@-messages.h"
#include "glusterfs.h"
#include "xlator.h"
#include "defaults.h"
#endif /* __@HFL_NAME@_H__ */
#pragma fragment MEM_HEADER_FMT
#ifndef __ @HFL_NAME @_H__
#define __ @HFL_NAME @_H__
#include "mem-types.h"
enum gf_mdc_mem_types_ {
gf_ @FOP_PREFIX @_mt_ = gf_common_mt_end + 1,
gf_ @FOP_PREFIX @_mt_end
};
#endif /* __@HFL_NAME@_H__ */
#pragma fragment MSG_HEADER_FMT
#ifndef __ @HFL_NAME @_H__
#define __ @HFL_NAME @_H__
#include "glfs-message-id.h"
/* To add new message IDs, append new identifiers at the end of the list.
*
* Never remove a message ID. If it's not used anymore, you can rename it or
* leave it as it is, but not delete it. This is to prevent reutilization of
* IDs by other messages.
*
* The component name must match one of the entries defined in
* glfs-message-id.h.
*/
GLFS_MSGID(@FOP_PREFIX @, @FOP_PREFIX @_MSG_NO_MEMORY);
#endif /* __@HFL_NAME@_H__ */