backed_block.h revision 9e1f17e926fa20255c5f4b4d2f68aa98a964253a
128fa5bc347390480fe190294c6c385b6a9f0d68bColin Cross/*
228fa5bc347390480fe190294c6c385b6a9f0d68bColin Cross * Copyright (C) 2010 The Android Open Source Project
328fa5bc347390480fe190294c6c385b6a9f0d68bColin Cross *
428fa5bc347390480fe190294c6c385b6a9f0d68bColin Cross * Licensed under the Apache License, Version 2.0 (the "License");
528fa5bc347390480fe190294c6c385b6a9f0d68bColin Cross * you may not use this file except in compliance with the License.
628fa5bc347390480fe190294c6c385b6a9f0d68bColin Cross * You may obtain a copy of the License at
728fa5bc347390480fe190294c6c385b6a9f0d68bColin Cross *
828fa5bc347390480fe190294c6c385b6a9f0d68bColin Cross *      http://www.apache.org/licenses/LICENSE-2.0
928fa5bc347390480fe190294c6c385b6a9f0d68bColin Cross *
1028fa5bc347390480fe190294c6c385b6a9f0d68bColin Cross * Unless required by applicable law or agreed to in writing, software
1128fa5bc347390480fe190294c6c385b6a9f0d68bColin Cross * distributed under the License is distributed on an "AS IS" BASIS,
1228fa5bc347390480fe190294c6c385b6a9f0d68bColin Cross * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1328fa5bc347390480fe190294c6c385b6a9f0d68bColin Cross * See the License for the specific language governing permissions and
1428fa5bc347390480fe190294c6c385b6a9f0d68bColin Cross * limitations under the License.
1528fa5bc347390480fe190294c6c385b6a9f0d68bColin Cross */
1628fa5bc347390480fe190294c6c385b6a9f0d68bColin Cross
1728fa5bc347390480fe190294c6c385b6a9f0d68bColin Cross#ifndef _BACKED_BLOCK_H_
1828fa5bc347390480fe190294c6c385b6a9f0d68bColin Cross#define _BACKED_BLOCK_H_
1928fa5bc347390480fe190294c6c385b6a9f0d68bColin Cross
20b55dceea986ab24f8b836b5116b389ed619c816eColin Cross#include <stdint.h>
21b55dceea986ab24f8b836b5116b389ed619c816eColin Cross
22411619e921904b896eddae81c086c1f687c8304dColin Crossstruct backed_block_list;
23b55dceea986ab24f8b836b5116b389ed619c816eColin Crossstruct backed_block;
24b55dceea986ab24f8b836b5116b389ed619c816eColin Cross
25b55dceea986ab24f8b836b5116b389ed619c816eColin Crossenum backed_block_type {
26b55dceea986ab24f8b836b5116b389ed619c816eColin Cross	BACKED_BLOCK_DATA,
27b55dceea986ab24f8b836b5116b389ed619c816eColin Cross	BACKED_BLOCK_FILE,
289e1f17e926fa20255c5f4b4d2f68aa98a964253aColin Cross	BACKED_BLOCK_FD,
29b55dceea986ab24f8b836b5116b389ed619c816eColin Cross	BACKED_BLOCK_FILL,
30b55dceea986ab24f8b836b5116b389ed619c816eColin Cross};
3128fa5bc347390480fe190294c6c385b6a9f0d68bColin Cross
32b55dceea986ab24f8b836b5116b389ed619c816eColin Crossint backed_block_add_data(struct backed_block_list *bbl, void *data,
33b55dceea986ab24f8b836b5116b389ed619c816eColin Cross		unsigned int len, unsigned int block);
34b55dceea986ab24f8b836b5116b389ed619c816eColin Crossint backed_block_add_fill(struct backed_block_list *bbl, unsigned int fill_val,
35411619e921904b896eddae81c086c1f687c8304dColin Cross		unsigned int len, unsigned int block);
36b55dceea986ab24f8b836b5116b389ed619c816eColin Crossint backed_block_add_file(struct backed_block_list *bbl, const char *filename,
37411619e921904b896eddae81c086c1f687c8304dColin Cross		int64_t offset, unsigned int len, unsigned int block);
389e1f17e926fa20255c5f4b4d2f68aa98a964253aColin Crossint backed_block_add_fd(struct backed_block_list *bbl, int fd,
399e1f17e926fa20255c5f4b4d2f68aa98a964253aColin Cross		int64_t offset, unsigned int len, unsigned int block);
4028fa5bc347390480fe190294c6c385b6a9f0d68bColin Cross
41b55dceea986ab24f8b836b5116b389ed619c816eColin Crossstruct backed_block *backed_block_iter_new(struct backed_block_list *bbl);
42b55dceea986ab24f8b836b5116b389ed619c816eColin Crossstruct backed_block *backed_block_iter_next(struct backed_block *bb);
43b55dceea986ab24f8b836b5116b389ed619c816eColin Crossunsigned int backed_block_len(struct backed_block *bb);
44b55dceea986ab24f8b836b5116b389ed619c816eColin Crossunsigned int backed_block_block(struct backed_block *bb);
45b55dceea986ab24f8b836b5116b389ed619c816eColin Crossvoid *backed_block_data(struct backed_block *bb);
46b55dceea986ab24f8b836b5116b389ed619c816eColin Crossconst char *backed_block_filename(struct backed_block *bb);
479e1f17e926fa20255c5f4b4d2f68aa98a964253aColin Crossint backed_block_fd(struct backed_block *bb);
48b55dceea986ab24f8b836b5116b389ed619c816eColin Crossint64_t backed_block_file_offset(struct backed_block *bb);
49b55dceea986ab24f8b836b5116b389ed619c816eColin Crossuint32_t backed_block_fill_val(struct backed_block *bb);
50b55dceea986ab24f8b836b5116b389ed619c816eColin Crossenum backed_block_type backed_block_type(struct backed_block *bb);
51b55dceea986ab24f8b836b5116b389ed619c816eColin Cross
52b55dceea986ab24f8b836b5116b389ed619c816eColin Crossstruct backed_block *backed_block_iter_new(struct backed_block_list *bbl);
53b55dceea986ab24f8b836b5116b389ed619c816eColin Crossstruct backed_block *backed_block_iter_next(struct backed_block *bb);
54b55dceea986ab24f8b836b5116b389ed619c816eColin Cross
55411619e921904b896eddae81c086c1f687c8304dColin Crossstruct backed_block_list *backed_block_list_new(void);
56b55dceea986ab24f8b836b5116b389ed619c816eColin Crossvoid backed_block_list_destroy(struct backed_block_list *bbl);
5728fa5bc347390480fe190294c6c385b6a9f0d68bColin Cross
5828fa5bc347390480fe190294c6c385b6a9f0d68bColin Cross#endif
59