|
|
1.1 root 1: /*
2: lib_interface.h
3:
4: DMSDOS library: headers for interface functions, hacks, dummies, and fakes.
5:
6: ******************************************************************************
7: DMSDOS (compressed MSDOS filesystem support) for Linux
8: written 1995-1998 by Frank Gockel and Pavel Pisa
9:
10: (C) Copyright 1995-1998 by Frank Gockel
11: (C) Copyright 1996-1998 by Pavel Pisa
12:
13: Some code of dmsdos has been copied from the msdos filesystem
14: so there are the following additional copyrights:
15:
16: (C) Copyright 1992,1993 by Werner Almesberger (msdos filesystem)
17: (C) Copyright 1994,1995 by Jacques Gelinas (mmap code)
18: (C) Copyright 1992-1995 by Linus Torvalds
19:
20: DMSDOS was inspired by the THS filesystem (a simple doublespace
21: DS-0-2 compressed read-only filesystem) written 1994 by Thomas Scheuermann.
22:
23: The DMSDOS code is distributed under the Gnu General Public Licence.
24: See file COPYING for details.
25: ******************************************************************************
26:
27: */
28:
29: /* These are copied from the kernel include files in order to avoid
30: including those files. They are not 100% identical to the kernel types.
31: Most of them needn't be the same as in the kernel.
32: This has been done for libc6 support.
33: */
34:
35: /* this defines machine-dependent __u8, __s8 etc. types */
36: #include<asm/types.h>
37:
38: int printk(const char *fmt, ...);
39: void panic(const char * fmt, ...);
40:
41: #define MOD_INC_USE_COUNT
42: #define MOD_DEC_USE_COUNT
43:
44: #define SECTOR_SIZE 512
45: #define SECTOR_BITS 9
46: #define MSDOS_DPB (MSDOS_DPS) /* dir entries per block */
47: #define MSDOS_DPB_BITS 4 /* log2(MSDOS_DPB) */
48: #define MSDOS_DPS (SECTOR_SIZE/sizeof(struct msdos_dir_entry))
49: #define MSDOS_DPS_BITS 4 /* log2(MSDOS_DPS) */
50: #define MSDOS_DIR_BITS 5 /* log2(sizeof(struct msdos_dir_entry)) */
51:
52: #define MSDOS_SUPER_MAGIC 0x4d44 /* MD */
53:
54: #define MSDOS_MAX_EXTRA 3 /* tolerate up to that number of clusters which are
55: inaccessible because the FAT is too short */
56:
57: #define KERN_EMERG "<0>" /* system is unusable */
58: #define KERN_ALERT "<1>" /* action must be taken immediately */
59: #define KERN_CRIT "<2>" /* critical conditions */
60: #define KERN_ERR "<3>" /* error conditions */
61: #define KERN_WARNING "<4>" /* warning conditions */
62: #define KERN_NOTICE "<5>" /* normal but significant condition */
63: #define KERN_INFO "<6>" /* informational */
64: #define KERN_DEBUG "<7>" /* debug-level messages */
65:
66: struct buffer_head {
67: unsigned long b_blocknr; /* block number */
68: char * b_data; /* pointer to data block */
69: };
70:
71: #define MS_RDONLY 1 /* Mount read-only */
72: #define MSDOS_SB(s) (&((s)->u.msdos_sb))
73:
74: struct msdos_sb_info {
75: unsigned short cluster_size; /* sectors/cluster */
76: unsigned char fats,fat_bits; /* number of FATs, FAT bits (12 or 16) */
77: unsigned short fat_start,fat_length; /* FAT start & length (sec.) */
78: unsigned short dir_start,dir_entries; /* root dir start & entries */
79: unsigned short data_start; /* first data sector */
80: unsigned long clusters; /* number of clusters */
81: unsigned long root_cluster; /* first cluster of the root directory */
82: unsigned long fsinfo_offset; /* FAT32 fsinfo offset from start of disk */
83: void *fat_wait;
84: int fat_lock;
85: int prev_free; /* previously returned free cluster number */
86: int free_clusters; /* -1 if undefined */
87: /*struct fat_mount_options options;*/
88: struct nls_table *nls_disk; /* Codepage used on disk */
89: struct nls_table *nls_io; /* Charset used for input and display */
90: struct cvf_format* cvf_format;
91: void* private_data;
92: };
93:
94: struct super_block {
95: int s_dev;
96: unsigned long s_blocksize;
97: unsigned char s_blocksize_bits;
98: unsigned long s_flags;
99: unsigned long s_magic;
100: union {
101: struct msdos_sb_info msdos_sb;
102: } u;
103:
104: };
105:
106: struct fat_boot_sector {
107: __s8 ignored[3]; /* Boot strap short or near jump */
108: __s8 system_id[8]; /* Name - can be used to special case
109: partition manager volumes */
110: __u8 sector_size[2]; /* bytes per logical sector */
111: __u8 cluster_size; /* sectors/cluster */
112: __u16 reserved; /* reserved sectors */
113: __u8 fats; /* number of FATs */
114: __u8 dir_entries[2]; /* root directory entries */
115: __u8 sectors[2]; /* number of sectors */
116: __u8 media; /* media code (unused) */
117: __u16 fat_length; /* sectors/FAT */
118: __u16 secs_track; /* sectors per track */
119: __u16 heads; /* number of heads */
120: __u32 hidden; /* hidden sectors (unused) */
121: __u32 total_sect; /* number of sectors (if sectors == 0) */
122: /* The following fields are only used by FAT32 */
123: __u32 fat32_length; /* sectors/FAT */
124: __u16 flags; /* bit 8: fat mirroring, low 4: active fat */
125: __u8 version[2]; /* major, minor filesystem version */
126: __u32 root_cluster; /* first cluster in root directory */
127: __u16 info_sector; /* filesystem info sector */
128: __u16 backup_boot; /* backup boot sector */
129: __u16 reserved2[6]; /* Unused */
130: };
131:
132: #define MALLOC malloc
133: #define FREE free
134: #define kmalloc(x,y) malloc(x)
135: #define kfree free
136: #define CURRENT_TIME time(NULL)
137: #define vmalloc malloc
138: #define vfree free
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.