Blame view
fs/squashfs/page_actor.h
1.95 KB
846b730e9 Squashfs: General... |
1 2 3 4 5 6 7 8 9 |
#ifndef PAGE_ACTOR_H #define PAGE_ACTOR_H /* * Copyright (c) 2013 * Phillip Lougher <phillip@squashfs.org.uk> * * This work is licensed under the terms of the GNU GPL, version 2. See * the COPYING file in the top-level directory. */ |
0d455c12c Squashfs: Directl... |
10 |
#ifndef CONFIG_SQUASHFS_FILE_DIRECT |
846b730e9 Squashfs: General... |
11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
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... |
25 |
actor->length = length ? : pages * PAGE_SIZE; |
846b730e9 Squashfs: General... |
26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 |
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... |
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 77 78 |
#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... |
79 |
#endif |