Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
at f2aeea57504cbbc58da3c59b939fc16150087648 53 lines 1.4 kB view raw
1/* SPDX-License-Identifier: GPL-2.0-only */ 2#ifndef PAGE_ACTOR_H 3#define PAGE_ACTOR_H 4/* 5 * Copyright (c) 2013 6 * Phillip Lougher <phillip@squashfs.org.uk> 7 */ 8 9struct squashfs_page_actor { 10 union { 11 void **buffer; 12 struct page **page; 13 }; 14 void *pageaddr; 15 void *tmp_buffer; 16 void *(*squashfs_first_page)(struct squashfs_page_actor *); 17 void *(*squashfs_next_page)(struct squashfs_page_actor *); 18 void (*squashfs_finish_page)(struct squashfs_page_actor *); 19 int pages; 20 int length; 21 int next_page; 22 int alloc_buffer; 23 int returned_pages; 24 pgoff_t next_index; 25}; 26 27extern struct squashfs_page_actor *squashfs_page_actor_init(void **buffer, 28 int pages, int length); 29extern struct squashfs_page_actor *squashfs_page_actor_init_special( 30 struct squashfs_sb_info *msblk, 31 struct page **page, int pages, int length); 32static inline void squashfs_page_actor_free(struct squashfs_page_actor *actor) 33{ 34 kfree(actor->tmp_buffer); 35 kfree(actor); 36} 37static inline void *squashfs_first_page(struct squashfs_page_actor *actor) 38{ 39 return actor->squashfs_first_page(actor); 40} 41static inline void *squashfs_next_page(struct squashfs_page_actor *actor) 42{ 43 return actor->squashfs_next_page(actor); 44} 45static inline void squashfs_finish_page(struct squashfs_page_actor *actor) 46{ 47 actor->squashfs_finish_page(actor); 48} 49static inline void squashfs_actor_nobuff(struct squashfs_page_actor *actor) 50{ 51 actor->alloc_buffer = 0; 52} 53#endif