GNU Linux-libre 4.14.324-gnu1
[releases.git] / include / crypto / internal / acompress.h
1 /*
2  * Asynchronous Compression operations
3  *
4  * Copyright (c) 2016, Intel Corporation
5  * Authors: Weigang Li <weigang.li@intel.com>
6  *          Giovanni Cabiddu <giovanni.cabiddu@intel.com>
7  *
8  * This program is free software; you can redistribute it and/or modify it
9  * under the terms of the GNU General Public License as published by the Free
10  * Software Foundation; either version 2 of the License, or (at your option)
11  * any later version.
12  *
13  */
14 #ifndef _CRYPTO_ACOMP_INT_H
15 #define _CRYPTO_ACOMP_INT_H
16 #include <crypto/acompress.h>
17
18 /*
19  * Transform internal helpers.
20  */
21 static inline void *acomp_request_ctx(struct acomp_req *req)
22 {
23         return req->__ctx;
24 }
25
26 static inline void *acomp_tfm_ctx(struct crypto_acomp *tfm)
27 {
28         return tfm->base.__crt_ctx;
29 }
30
31 static inline void acomp_request_complete(struct acomp_req *req,
32                                           int err)
33 {
34         req->base.complete(&req->base, err);
35 }
36
37 static inline const char *acomp_alg_name(struct crypto_acomp *tfm)
38 {
39         return crypto_acomp_tfm(tfm)->__crt_alg->cra_name;
40 }
41
42 static inline struct acomp_req *__acomp_request_alloc(struct crypto_acomp *tfm)
43 {
44         struct acomp_req *req;
45
46         req = kzalloc(sizeof(*req) + crypto_acomp_reqsize(tfm), GFP_KERNEL);
47         if (likely(req))
48                 acomp_request_set_tfm(req, tfm);
49         return req;
50 }
51
52 static inline void __acomp_request_free(struct acomp_req *req)
53 {
54         kzfree(req);
55 }
56
57 /**
58  * crypto_register_acomp() -- Register asynchronous compression algorithm
59  *
60  * Function registers an implementation of an asynchronous
61  * compression algorithm
62  *
63  * @alg:        algorithm definition
64  *
65  * Return:      zero on success; error code in case of error
66  */
67 int crypto_register_acomp(struct acomp_alg *alg);
68
69 /**
70  * crypto_unregister_acomp() -- Unregister asynchronous compression algorithm
71  *
72  * Function unregisters an implementation of an asynchronous
73  * compression algorithm
74  *
75  * @alg:        algorithm definition
76  *
77  * Return:      zero on success; error code in case of error
78  */
79 int crypto_unregister_acomp(struct acomp_alg *alg);
80
81 int crypto_register_acomps(struct acomp_alg *algs, int count);
82 void crypto_unregister_acomps(struct acomp_alg *algs, int count);
83
84 #endif