1*4882a593Smuzhiyun /* SPDX-License-Identifier: GPL-2.0+ */ 2*4882a593Smuzhiyun 3*4882a593Smuzhiyun #ifndef ZC_H 4*4882a593Smuzhiyun # define ZC_H 5*4882a593Smuzhiyun 6*4882a593Smuzhiyun /* For zero copy */ 7*4882a593Smuzhiyun int __cryptodev_get_userbuf(uint8_t __user *addr, uint32_t len, int write, 8*4882a593Smuzhiyun unsigned int pgcount, struct page **pg, struct scatterlist *sg, 9*4882a593Smuzhiyun struct task_struct *task, struct mm_struct *mm); 10*4882a593Smuzhiyun void cryptodev_release_user_pages(struct csession *ses); 11*4882a593Smuzhiyun 12*4882a593Smuzhiyun int cryptodev_get_userbuf(struct csession *ses, 13*4882a593Smuzhiyun void *__user src, unsigned int src_len, 14*4882a593Smuzhiyun void *__user dst, unsigned int dst_len, 15*4882a593Smuzhiyun struct task_struct *task, struct mm_struct *mm, 16*4882a593Smuzhiyun struct scatterlist **src_sg, 17*4882a593Smuzhiyun struct scatterlist **dst_sg); 18*4882a593Smuzhiyun 19*4882a593Smuzhiyun /* buflen ? (last page - first page + 1) : 0 */ 20*4882a593Smuzhiyun #define PAGECOUNT(buf, buflen) ((buflen) \ 21*4882a593Smuzhiyun ? ((((unsigned long)(buf + buflen - 1)) >> PAGE_SHIFT) - \ 22*4882a593Smuzhiyun (((unsigned long)(buf )) >> PAGE_SHIFT) + 1) \ 23*4882a593Smuzhiyun : 0) 24*4882a593Smuzhiyun 25*4882a593Smuzhiyun #define DEFAULT_PREALLOC_PAGES 32 26*4882a593Smuzhiyun 27*4882a593Smuzhiyun #endif 28