Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

at v2.6.18-rc5 69 lines 2.0 kB view raw
1/* 2 * Cryptographic API. 3 * 4 * Copyright (c) 2002 James Morris <jmorris@intercode.com.au> 5 * Copyright (c) 2002 Adam J. Richter <adam@yggdrasil.com> 6 * Copyright (c) 2004 Jean-Luc Cooke <jlcooke@certainkey.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 15#ifndef _CRYPTO_SCATTERWALK_H 16#define _CRYPTO_SCATTERWALK_H 17#include <linux/mm.h> 18#include <asm/scatterlist.h> 19 20struct scatter_walk { 21 struct scatterlist *sg; 22 struct page *page; 23 void *data; 24 unsigned int len_this_page; 25 unsigned int len_this_segment; 26 unsigned int offset; 27}; 28 29/* Define sg_next is an inline routine now in case we want to change 30 scatterlist to a linked list later. */ 31static inline struct scatterlist *sg_next(struct scatterlist *sg) 32{ 33 return sg + 1; 34} 35 36static inline int scatterwalk_samebuf(struct scatter_walk *walk_in, 37 struct scatter_walk *walk_out) 38{ 39 return walk_in->page == walk_out->page && 40 walk_in->offset == walk_out->offset; 41} 42 43static inline unsigned int scatterwalk_clamp(struct scatter_walk *walk, 44 unsigned int nbytes) 45{ 46 return nbytes > walk->len_this_page ? walk->len_this_page : nbytes; 47} 48 49static inline void scatterwalk_advance(struct scatter_walk *walk, 50 unsigned int nbytes) 51{ 52 walk->data += nbytes; 53 walk->offset += nbytes; 54 walk->len_this_page -= nbytes; 55 walk->len_this_segment -= nbytes; 56} 57 58static inline unsigned int scatterwalk_aligned(struct scatter_walk *walk, 59 unsigned int alignmask) 60{ 61 return !(walk->offset & alignmask); 62} 63 64void scatterwalk_start(struct scatter_walk *walk, struct scatterlist *sg); 65int scatterwalk_copychunks(void *buf, struct scatter_walk *walk, size_t nbytes, int out); 66void scatterwalk_map(struct scatter_walk *walk, int out); 67void scatterwalk_done(struct scatter_walk *walk, int out, int more); 68 69#endif /* _CRYPTO_SCATTERWALK_H */