2 * UCW Library -- Mapping of File Parts
4 * (c) 2003--2006 Martin Mares <mj@ucw.cz>
5 * (c) 2003--2005 Robert Spalek <robert@ucw.cz>
7 * This software may be freely distributed and used according to the terms
8 * of the GNU Lesser General Public License.
11 #ifndef _UCW_PARTMAP_H
12 #define _UCW_PARTMAP_H
17 ucw_off_t start_off, end_off;
22 struct partmap *partmap_open(char *name, int writeable);
23 void partmap_close(struct partmap *p);
24 ucw_off_t partmap_size(struct partmap *p);
25 void partmap_load(struct partmap *p, ucw_off_t start, uns size);
27 static inline void *partmap_map(struct partmap *p, ucw_off_t start, uns size UNUSED)
29 #ifndef CONFIG_UCW_PARTMAP_IS_MMAP
30 if (unlikely(!p->start_map || start < p->start_off || (ucw_off_t) (start+size) > p->end_off))
31 partmap_load(p, start, size);
33 return p->start_map + (start - p->start_off);
36 static inline void *partmap_map_forward(struct partmap *p, ucw_off_t start, uns size UNUSED)
38 #ifndef CONFIG_UCW_PARTMAP_IS_MMAP
39 if (unlikely((ucw_off_t) (start+size) > p->end_off))
40 partmap_load(p, start, size);
42 return p->start_map + (start - p->start_off);