Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
torvalds
GitHub Repository: torvalds/linux
Path: blob/master/drivers/block/zram/backend_842.c
26282 views
1
// SPDX-License-Identifier: GPL-2.0-or-later
2
3
#include <linux/kernel.h>
4
#include <linux/slab.h>
5
#include <linux/sw842.h>
6
#include <linux/vmalloc.h>
7
8
#include "backend_842.h"
9
10
static void release_params_842(struct zcomp_params *params)
11
{
12
}
13
14
static int setup_params_842(struct zcomp_params *params)
15
{
16
return 0;
17
}
18
19
static void destroy_842(struct zcomp_ctx *ctx)
20
{
21
kfree(ctx->context);
22
}
23
24
static int create_842(struct zcomp_params *params, struct zcomp_ctx *ctx)
25
{
26
ctx->context = kmalloc(SW842_MEM_COMPRESS, GFP_KERNEL);
27
if (!ctx->context)
28
return -ENOMEM;
29
return 0;
30
}
31
32
static int compress_842(struct zcomp_params *params, struct zcomp_ctx *ctx,
33
struct zcomp_req *req)
34
{
35
unsigned int dlen = req->dst_len;
36
int ret;
37
38
ret = sw842_compress(req->src, req->src_len, req->dst, &dlen,
39
ctx->context);
40
if (ret == 0)
41
req->dst_len = dlen;
42
return ret;
43
}
44
45
static int decompress_842(struct zcomp_params *params, struct zcomp_ctx *ctx,
46
struct zcomp_req *req)
47
{
48
unsigned int dlen = req->dst_len;
49
50
return sw842_decompress(req->src, req->src_len, req->dst, &dlen);
51
}
52
53
const struct zcomp_ops backend_842 = {
54
.compress = compress_842,
55
.decompress = decompress_842,
56
.create_ctx = create_842,
57
.destroy_ctx = destroy_842,
58
.setup_params = setup_params_842,
59
.release_params = release_params_842,
60
.name = "842",
61
};
62
63