Commit 39b486d6 authored by David Kershner's avatar David Kershner Committed by Greg Kroah-Hartman

staging: unisys: visorbus: Move parser functions location in file.

The parser functions were defined at the top of the file even though they
were not referenced until later in the file. This patch moves them closer
to where they are defined so they can be easily referenced.
Signed-off-by: default avatarDavid Kershner <david.kershner@unisys.com>
Reviewed-by: default avatarTim Sell <timothy.sell@unisys.com>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
parent d20a0171
......@@ -297,64 +297,6 @@ static ssize_t remaining_steps_store(struct device *dev,
}
static DEVICE_ATTR_RW(remaining_steps);
static const guid_t *parser_id_get(struct parser_context *ctx)
{
return &ctx->data.id;
}
static void parser_done(struct parser_context *ctx)
{
chipset_dev->controlvm_payload_bytes_buffered -= ctx->param_bytes;
kfree(ctx);
}
static void *parser_string_get(struct parser_context *ctx)
{
u8 *pscan;
unsigned long nscan;
int value_length;
void *value;
int i;
pscan = ctx->curr;
if (!pscan)
return NULL;
nscan = ctx->bytes_remaining;
if (nscan == 0)
return NULL;
for (i = 0, value_length = -1; i < nscan; i++)
if (pscan[i] == '\0') {
value_length = i;
break;
}
/* '\0' was not included in the length */
if (value_length < 0)
value_length = nscan;
value = kmalloc(value_length + 1, GFP_KERNEL);
if (!value)
return NULL;
if (value_length > 0)
memcpy(value, pscan, value_length);
((u8 *)(value))[value_length] = '\0';
return value;
}
static void *parser_name_get(struct parser_context *ctx)
{
struct visor_controlvm_parameters_header *phdr = NULL;
phdr = &ctx->data;
if (phdr->name_offset + phdr->name_length > ctx->param_bytes)
return NULL;
ctx->curr = (char *)&phdr + phdr->name_offset;
ctx->bytes_remaining = phdr->name_length;
return parser_string_get(ctx);
}
struct visor_busdev {
u32 bus_no;
u32 dev_no;
......@@ -701,6 +643,58 @@ static int visorbus_destroy(struct controlvm_message *inmsg)
return err;
}
static const guid_t *parser_id_get(struct parser_context *ctx)
{
return &ctx->data.id;
}
static void *parser_string_get(struct parser_context *ctx)
{
u8 *pscan;
unsigned long nscan;
int value_length;
void *value;
int i;
pscan = ctx->curr;
if (!pscan)
return NULL;
nscan = ctx->bytes_remaining;
if (nscan == 0)
return NULL;
for (i = 0, value_length = -1; i < nscan; i++)
if (pscan[i] == '\0') {
value_length = i;
break;
}
/* '\0' was not included in the length */
if (value_length < 0)
value_length = nscan;
value = kmalloc(value_length + 1, GFP_KERNEL);
if (!value)
return NULL;
if (value_length > 0)
memcpy(value, pscan, value_length);
((u8 *)(value))[value_length] = '\0';
return value;
}
static void *parser_name_get(struct parser_context *ctx)
{
struct visor_controlvm_parameters_header *phdr = NULL;
phdr = &ctx->data;
if (phdr->name_offset + phdr->name_length > ctx->param_bytes)
return NULL;
ctx->curr = (char *)&phdr + phdr->name_offset;
ctx->bytes_remaining = phdr->name_length;
return parser_string_get(ctx);
}
static int visorbus_configure(struct controlvm_message *inmsg,
struct parser_context *parser_ctx)
{
......@@ -1449,6 +1443,12 @@ void visorbus_device_changestate_response(struct visor_device *dev_info,
dev_info->pending_msg_hdr = NULL;
}
static void parser_done(struct parser_context *ctx)
{
chipset_dev->controlvm_payload_bytes_buffered -= ctx->param_bytes;
kfree(ctx);
}
static struct parser_context *parser_init_byte_stream(u64 addr, u32 bytes,
bool *retry)
{
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment