X-Git-Url: http://git.sven.stormbind.net/?p=sven%2Fexfat-utils.git;a=blobdiff_plain;f=mkfs%2Fmkexfat.h;h=d143dd142330c9e4e075d1753780105055d34b51;hp=dbaeb8d23ff98bc593e6a454c9fdebc1dc620ebc;hb=f77812e8b678b8bf620bfbf33882139997ccda34;hpb=4cb393cfd9b0ab69392612521ee3dbe481ec492d diff --git a/mkfs/mkexfat.h b/mkfs/mkexfat.h index dbaeb8d..d143dd1 100644 --- a/mkfs/mkexfat.h +++ b/mkfs/mkexfat.h @@ -1,12 +1,13 @@ /* mkexfat.h (09.11.10) - Common declarations. + FS creation engine. - Copyright (C) 2009, 2010 Andrew Nayenko + Free exFAT implementation. + Copyright (C) 2011-2014 Andrew Nayenko - This program is free software: you can redistribute it and/or modify + This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or + the Free Software Foundation, either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, @@ -14,8 +15,9 @@ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. - You should have received a copy of the GNU General Public License - along with this program. If not, see . + You should have received a copy of the GNU General Public License along + with this program; if not, write to the Free Software Foundation, Inc., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #ifndef MKFS_MKEXFAT_H_INCLUDED @@ -23,15 +25,25 @@ #include -extern struct exfat_super_block sb; -extern struct exfat_entry_label label_entry; -extern struct exfat_entry_bitmap bitmap_entry; -extern struct exfat_entry_upcase upcase_entry; - -#define OFFSET_TO_SECTOR(off) ((off) >> (sb).sector_bits) -#define SECTOR_TO_CLUSTER(sector) \ - ((((sector) - le32_to_cpu((sb).cluster_sector_start)) >> (sb).spc_bits) + \ - EXFAT_FIRST_DATA_CLUSTER) -#define OFFSET_TO_CLUSTER(off) SECTOR_TO_CLUSTER(OFFSET_TO_SECTOR(off)) +struct fs_object +{ + off_t (*get_alignment)(void); + off_t (*get_size)(void); + int (*write)(struct exfat_dev* dev); +}; + +extern const struct fs_object* objects[]; + +int get_sector_bits(void); +int get_spc_bits(void); +off_t get_volume_size(void); +const le16_t* get_volume_label(void); +uint32_t get_volume_serial(void); +uint64_t get_first_sector(void); +int get_sector_size(void); +int get_cluster_size(void); + +int mkfs(struct exfat_dev* dev, off_t volume_size); +off_t get_position(const struct fs_object* object); #endif /* ifndef MKFS_MKEXFAT_H_INCLUDED */