Home | History | Annotate | Download | only in fatblock
      1 /*
      2  * Copyright (C) 2010 The Android Open Source Project
      3  *
      4  * Licensed under the Apache License, Version 2.0 (the "License");
      5  * you may not use this file except in compliance with the License.
      6  * You may obtain a copy of the License at
      7  *
      8  *      http://www.apache.org/licenses/LICENSE-2.0
      9  *
     10  * Unless required by applicable law or agreed to in writing, software
     11  * distributed under the License is distributed on an "AS IS" BASIS,
     12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
     13  * See the License for the specific language governing permissions and
     14  * limitations under the License.
     15  */
     16 
     17 #ifndef FATBLOCK_H
     18 #define FATBLOCK_H
     19 
     20 #include <stdint.h>
     21 #include <sys/types.h>
     22 
     23 #include "fdpool.h"
     24 
     25 typedef uint64_t offset_t;
     26 
     27 typedef enum {
     28 	EXTENT_TYPE_BOOT,
     29 	EXTENT_TYPE_INFO,
     30 	EXTENT_TYPE_FAT,
     31 	EXTENT_TYPE_FILE,
     32 	EXTENT_TYPE_DIR
     33 } extent_type;
     34 
     35 struct extent {
     36 	offset_t start;
     37 	offset_t len;
     38 	extent_type type;
     39 
     40 	struct extent *next;
     41 };
     42 
     43 struct file {
     44 	struct extent extent;
     45 
     46 	char *path;
     47 	uint32_t size;
     48 
     49 	dev_t dev;
     50 	ino_t ino;
     51 	time_t mtime;
     52 
     53 	struct pooled_fd pfd;
     54 };
     55 
     56 struct dir {
     57 	struct extent extent;
     58 
     59 	char *path;
     60 	uint32_t size;
     61 
     62 	struct fat_dirent *entries;
     63 };
     64 
     65 struct fs;
     66 
     67 int import_tree(struct fs *fs, char *path);
     68 int fs_read(struct fs *fs, char *buf, offset_t start, offset_t len);
     69 
     70 #define MALLOC_FAIL (-41)    /* memory allocation failed somewhere. */
     71 #define SKY_IS_FALLING (-42) /* One of the files changed out from under us. */
     72 
     73 #endif
     74