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 85