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 */ 21static inline void *acomp_request_ctx(struct acomp_req *req) 22{ 23 return req->__ctx; 24} 25 26static inline void *acomp_tfm_ctx(struct crypto_acomp *tfm) 27{ 28 return tfm->base.__crt_ctx; 29} 30 31static inline void acomp_request_complete(struct acomp_req *req, 32 int err) 33{ 34 req->base.complete(&req->base, err); 35} 36 37static inline const char *acomp_alg_name(struct crypto_acomp *tfm) 38{ 39 return crypto_acomp_tfm(tfm)->__crt_alg->cra_name; 40} 41 42static 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 52static 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 */ 67int 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 */ 79int crypto_unregister_acomp(struct acomp_alg *alg); 80 81int crypto_register_acomps(struct acomp_alg *algs, int count); 82void crypto_unregister_acomps(struct acomp_alg *algs, int count); 83 84#endif 85