Blame view
fs/squashfs/page_actor.h
1.87 KB
20c8ccb19 treewide: Replace... |
1 |
/* SPDX-License-Identifier: GPL-2.0-only */ |
846b730e9 Squashfs: General... |
2 3 4 5 6 |
#ifndef PAGE_ACTOR_H #define PAGE_ACTOR_H /* * Copyright (c) 2013 * Phillip Lougher <phillip@squashfs.org.uk> |
846b730e9 Squashfs: General... |
7 |
*/ |
0d455c12c Squashfs: Directl... |
8 |
#ifndef CONFIG_SQUASHFS_FILE_DIRECT |
846b730e9 Squashfs: General... |
9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
struct squashfs_page_actor { void **page; int pages; int length; int next_page; }; static inline struct squashfs_page_actor *squashfs_page_actor_init(void **page, int pages, int length) { struct squashfs_page_actor *actor = kmalloc(sizeof(*actor), GFP_KERNEL); if (actor == NULL) return NULL; |
09cbfeaf1 mm, fs: get rid o... |
23 |
actor->length = length ? : pages * PAGE_SIZE; |
846b730e9 Squashfs: General... |
24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 |
actor->page = page; actor->pages = pages; actor->next_page = 0; return actor; } static inline void *squashfs_first_page(struct squashfs_page_actor *actor) { actor->next_page = 1; return actor->page[0]; } static inline void *squashfs_next_page(struct squashfs_page_actor *actor) { return actor->next_page == actor->pages ? NULL : actor->page[actor->next_page++]; } static inline void squashfs_finish_page(struct squashfs_page_actor *actor) { /* empty */ } |
0d455c12c Squashfs: Directl... |
46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 |
#else struct squashfs_page_actor { union { void **buffer; struct page **page; }; void *pageaddr; void *(*squashfs_first_page)(struct squashfs_page_actor *); void *(*squashfs_next_page)(struct squashfs_page_actor *); void (*squashfs_finish_page)(struct squashfs_page_actor *); int pages; int length; int next_page; }; extern struct squashfs_page_actor *squashfs_page_actor_init(void **, int, int); extern struct squashfs_page_actor *squashfs_page_actor_init_special(struct page **, int, int); static inline void *squashfs_first_page(struct squashfs_page_actor *actor) { return actor->squashfs_first_page(actor); } static inline void *squashfs_next_page(struct squashfs_page_actor *actor) { return actor->squashfs_next_page(actor); } static inline void squashfs_finish_page(struct squashfs_page_actor *actor) { actor->squashfs_finish_page(actor); } #endif |
846b730e9 Squashfs: General... |
77 |
#endif |