First version
[3rdparty/ote_partner/tlk.git] / include / lib / ptable.h
1 /*
2  * Copyright (c) 2008, Google Inc.
3  * All rights reserved.
4  *
5  * Redistribution and use in source and binary forms, with or without
6  * modification, are permitted provided that the following conditions
7  * are met:
8  *  * Redistributions of source code must retain the above copyright
9  *    notice, this list of conditions and the following disclaimer.
10  *  * Redistributions in binary form must reproduce the above copyright
11  *    notice, this list of conditions and the following disclaimer in
12  *    the documentation and/or other materials provided with the 
13  *    distribution.
14  *
15  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
16  * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
17  * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
18  * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
19  * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
20  * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
21  * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
22  * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED 
23  * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
24  * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
25  * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
26  * SUCH DAMAGE.
27  */
28
29
30 #ifndef __LIB_PTABLE_H
31 #define __LIB_PTABLE_H
32
33 /* flash partitions are defined in terms of blocks
34  * (flash erase units)
35  */
36 #define MAX_PTENTRY_NAME        16
37 #define MAX_PTABLE_PARTS        16
38
39 struct ptentry
40 {
41         char name[MAX_PTENTRY_NAME];
42         unsigned start;
43         unsigned length;
44         unsigned flags;
45 };
46
47 struct ptable
48 {
49         struct ptentry parts[MAX_PTABLE_PARTS];
50         int count;
51 };
52
53 /* tools to populate and query the partition table */
54 void ptable_init(struct ptable *ptable);
55 void ptable_add(struct ptable *ptable, char *name, unsigned start,
56                 unsigned length, unsigned flags);
57 struct ptentry *ptable_find(struct ptable *ptable, const char *name);
58 struct ptentry *ptable_get(struct ptable *ptable, int n);
59 int ptable_size(struct ptable *ptable);
60 void ptable_dump(struct ptable *ptable);
61
62 #endif /* __LIB_PTABLE_H */