/* * Copyright (C) 2012 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #ifndef __CORE_FS_TAB_H #define __CORE_FS_TAB_H #include #include #include #include // C++ only headers // TODO: move this into separate header files under include/fs_mgr/*.h #ifdef __cplusplus #include #endif __BEGIN_DECLS /* * The entries must be kept in the same order as they were seen in the fstab. * Unless explicitly requested, a lookup on mount point should always * return the 1st one. */ struct fstab { int num_entries; struct fstab_rec* recs; char* fstab_filename; }; struct fstab_rec { char* blk_device; char* mount_point; char* fs_type; unsigned long flags; char* fs_options; int fs_mgr_flags; char* key_loc; char* key_dir; char* verity_loc; long long length; char* label; int partnum; int swap_prio; int max_comp_streams; unsigned int zram_size; uint64_t reserved_size; unsigned int file_contents_mode; unsigned int file_names_mode; unsigned int erase_blk_size; unsigned int logical_blk_size; }; struct fstab* fs_mgr_read_fstab_default(); struct fstab* fs_mgr_read_fstab_dt(); struct fstab* fs_mgr_read_fstab(const char* fstab_path); void fs_mgr_free_fstab(struct fstab* fstab); int fs_mgr_add_entry(struct fstab* fstab, const char* mount_point, const char* fs_type, const char* blk_device); struct fstab_rec* fs_mgr_get_entry_for_mount_point(struct fstab* fstab, const char* path); int fs_mgr_is_voldmanaged(const struct fstab_rec* fstab); int fs_mgr_is_nonremovable(const struct fstab_rec* fstab); int fs_mgr_is_verified(const struct fstab_rec* fstab); int fs_mgr_is_verifyatboot(const struct fstab_rec* fstab); int fs_mgr_is_avb(const struct fstab_rec* fstab); int fs_mgr_is_encryptable(const struct fstab_rec* fstab); int fs_mgr_is_file_encrypted(const struct fstab_rec* fstab); void fs_mgr_get_file_encryption_modes(const struct fstab_rec* fstab, const char** contents_mode_ret, const char** filenames_mode_ret); int fs_mgr_is_convertible_to_fbe(const struct fstab_rec* fstab); int fs_mgr_is_noemulatedsd(const struct fstab_rec* fstab); int fs_mgr_is_notrim(const struct fstab_rec* fstab); int fs_mgr_is_formattable(const struct fstab_rec* fstab); int fs_mgr_is_slotselect(const struct fstab_rec* fstab); int fs_mgr_is_nofail(const struct fstab_rec* fstab); int fs_mgr_is_latemount(const struct fstab_rec* fstab); int fs_mgr_is_quota(const struct fstab_rec* fstab); __END_DECLS // C++ only functions // TODO: move this into separate header files under include/fs_mgr/*.h #ifdef __cplusplus std::string fs_mgr_get_slot_suffix(); #endif #endif /* __CORE_FS_TAB_H */